높은 커널 작업 메모리 사용량을 조사하는 방법?


131

나는 평소처럼 MBP (16GB RAM)를 사용하고 있었고 파란색 으로이 팝업을 표시했습니다.

시스템에 응용 프로그램 메모리가 부족합니다.

컴퓨터의 문제를 피하려면 사용하지 않는 응용 프로그램을 모두 종료하십시오.

응용 프로그램 강제 종료-시스템에 응용 프로그램 메모리가 부족합니다-스크린 샷

나는 분명히 할 수있는 것을 거의 닫지 않았지만 도움이되지 않았습니다.

메모리를 확인한 후에는 커널 작업이 7GB를 먹었고 22.36GB의 스왑 메모리가 총 23GB를 사용했습니다. 그러나 여전히 SDD에 20GB의 여유 공간이 있습니다.

메모리-iStat 메뉴-스크린 샷

활동 모니터는 OS X가 파괴로 향하고있는 동안별로 도움이되지 않았습니다.

프로세스 탐색기

kernel_task-메모리 탭-스크린 샷 kernel_task-통계 탭-스크린 샷

top내 커널 동결 전에 통계 :

Processes: 344 total, 2 running, 5 stuck, 337 sleeping, 2580 threads                                                                                                                         19:23:56
Load Avg: 1.56, 1.62, 2.09  CPU usage: 3.51% user, 8.47% sys, 88.1% idle   SharedLibs: 46M resident, 0B data, 6572K linkedit. MemRegions: 757970 total, 2139M resident, 56M private, 907M shared.
PhysMem: 9410M used (6198M wired), 556M unused. VM: 1155G vsize, 1311M framework vsize, 112872658(320) swapins, 122668389(0) swapouts. Networks: packets: 299419263/363G in, 142126838/14G out.
Disks: 58970173/1079G read, 20012389/1120G written.

결국 OS X가 멈추고 하드 리셋을 수행하고 복구 모드에서 SDD를 복구 한 후 수정 (실패 복구, 응용 프로그램 충돌 수정, 손실 + 발견 폴더 확인, Chrome / 터미널 탭 사라짐, 두통 등) ).

내 질문은 커널 작업의 높은 메모리 사용량을 확인 하거나 그러한 상황을 올바르게 처리하는 방법은 무엇입니까? Activity Monitor로 샘플을 가져 오려고했지만 회색으로 표시됩니다.


내 MBR 세부 정보 : 16GB RAM이 장착 된 2.3GHz Intel Core i7 (2013 년 말). OS X : 10.9.5


1
@klanomath 일반적으로 특히 긴 가동 시간으로 많은 동결이 발생했으며 알 수없는 이유로 커널이 정지되었습니다 (MBR은 매우 새롭습니다). 그러나 이것은 내가 메모리 부족 인 팝업을 처음 본 것입니다 (16GB RAM 및 50GB의 여유 공간). 그러나 내 주요 질문은 커널 작업의 메모리 사용량을 조사하는 방법이므로 재현 가능한 경우 관련성이 없어야합니다.
kenorb

5
zprint -t(사자) 또는 (산사 이상)를 사용하십시오 sudo zprint -t.
klanomath

1
제목에있는 질문과 관련하여 재현성이 적절하지 않은 것은 맞지만 문제를 해결하는 것이 관련이있을 수 있습니다.
klanomath

1
질문에 출력을 추가 하시겠습니까 (또는 문서에 저장 하시겠습니까)? 나중에 참조하거나 더 중요한 시스템 상태에서 만든 zprint와 비교할 수 있습니다. IMHO 그것은 운이 새는 누출이다. 당신이 그것을 게시하면 더 말할 수 있습니다.
klanomath

1
나는 갑자기 같은 문제가 있습니다. 맥 또는 하이퍼 키트 용 도커와 관련이 있다고 확신합니다. 맥용 도커를 멈추자 마자 kernal_task는 10GB 이상의 메모리를 먹기 시작합니다
Charlie Martin

답변:


176

커널 작업 사용량이 많으면 잘못된 점이 많이 있습니다. 일반적으로 이는 시스템 리소스를 과도하게 사용하는 결함이 있거나 많은 프로세스 (예 : 스토리지 인덱싱, VM 실행, 웹 브라우저의 너무 많은 탭 또는 기타 백그라운드 프로세스)와 관련이 있습니다.

다음은 OS X 커널 사용 문제를 조사하는 데 도움이되는 몇 가지 방법입니다.

기본 방법

  • Console.app' 모든 메시지 '를 실행 하고 점검하여 현재 비정상적인 것이 있는지 확인하십시오.
  • 활동 모니터 를 사용 하여 시스템 메모리를 읽고 사용중인 CPU, RAM 및 디스크 양을 판별하십시오.

    또는 터미널top 에서 실행 하고 새로 고치려면 누르고 있으면 문제를 쉽게 찾을 수 있습니다 ( 스왑 인 / 스왑 아웃 / 디스크 ?)Space

  • 실행sudo fs_usage터미널 시스템 호출 실시간으로 활동을 파일 시스템 관련 페이지 오류를보고 (I이 다른 모든에서 최선의 선택이라고 생각). 그런 다음 Control- C를 눌러 중지하십시오.

    작업 : 목록에 자주 나타나는 앱을 종료하는 것이 좋습니다.하지만 사용하지는 않습니다.

    : 더 알아보기 어떻게 "kernel_task"프로세스 아웃 오브 컨트롤을 디버깅 할 수 있습니까?

  • 실행sudo syscallbypid.d (또는 syscallbyproc.d)하고 잠시 기다렸다가 Control-를 누르십시오 C. 이제 주어진 시간 (마지막 열)에서 가장 많은 시스템 호출을 생성 한 프로세스를 확인하고이를 인식하면 종료하십시오. 그렇지 않은 경우 Google에서 확인하고 자세히 알아보십시오.

고급 방법

  • 사용 sysdiagnose명령을 (타격에 의해 트리거 될 수 있습니다 Shift- Control- - - .빠르게 (에 나타납니다 시스템 메모리 / 성능 문제를 조사에서 전체 시스템 진단 정보를 도움이 수집 (기간) /var/tmp.) 중 하나를 당신 또는 Apple들에 의해 분석하는 동안, 안하려고 완료되면 생성 된 파일의 압축을 풀고 로그를 분석하십시오.

    참조 : OS X에서 시스템 진단 파일을 어떻게 얻습니까?

  • footprintVM-region-region 유형 레벨 및 스왑 된 바이트에 대한 자세한 메모리 정보를 수집하려면 실행하십시오 .

    sudo footprint -a
    

    이전 버전 :

    sudo footprint -all -categories -swapped -collapseSharing
    
  • spindump전체 시스템을 프로파일 링하는 데 사용 되며 /tmp/spindump.txt파일 (커널 및 확장명 포함)을 생성 합니다.

  • vm_stat가상 메모리 통계를 표시하는 데 사용 합니다. 예 :

    vm_stat 1 # to display every second.
    
  • zprint커널 사용에 대한 정보를 확인하는 데 사용 합니다.

    sudo zprint -t -s | head -n20
    

    가장 낭비되는 커널 영역을 보여줍니다.

  • 파일 newproc.dcreatbyproc.d대해 새 프로세스가 실행될 때 스누핑하는 데 사용 합니다.

    sudo newproc.d
    sudo creatbyproc.d
    

    참고 : 최신 OS X (10.11 이상)에서는 무결성 보호 가 활성화되어 있으면 작동하지 않을 수 있습니다 (by by by 확인 csrutil status).

  • sar운영 체제에서 유지 관리하는 다양한 누적 통계 카운터를 샘플링하고보고 할 수있는 시스템 활동 리포터를 사용해보십시오 .

보다 유용한 디버깅 도구는 dtrace 스크립트 ( grep dtrace /usr/bin/*)를 확인하십시오 . 문제를 일으키는 잘못된 프로세스를 알고 있으면이 dtruss를 디버깅하는 데 사용할 수 있습니다 .


행위

다음은 운영 체제 문제를 해결하는 데 도움이되는 몇 가지 제안입니다.

  • 비활성 메모리를 확보하십시오. 이렇게하려면 먼저 캐시를 플러시하고 디스크 캐시를 강제로 제거해야합니다.

    sync && sudo purge
    

    sync -보류중인 디스크 쓰기 완료 (캐시 플러시)

    purge -디스크 캐시를 강제로 제거 (플러시 및 비우기)

    이 기능은 기본적으로 디스크 캐시를 사용하는 모든 I / O 보류 작업을 종료 한 다음 점유 된 디스크 캐시를 모두 해제하는 것이므로 페이징 및 주 메모리에서 쉽게 스왑 할 수 있도록 디스크 공간을 비워야합니다. malloc, vm_allocate 등을 통해 할당 된 익명 메모리에는 영향을 미치지 않으므로 사용하는 것이 안전합니다.

  • 일부 타사 앱을 사용하여 iBoostUp , SystemPal 등과 같이 사용 된 메모리를 정리하십시오 .

  • 임시 스포트라이트를 비활성화 할 수도 있습니다.

    sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.metadata.mds.plist 
    

    다음을 통해 다른 서비스를 고려하십시오.

    sudo launchctl list | grep ^[0-9]
    sudo launchctl bslist | grep ^A
    
  • 웹 브라우저를 종료하고 도움이되는지 확인하십시오. 예를 들어 Chrome을 사용하는 것은 매우 유용합니다. 특히 백그라운드에서 일부 프론트 엔드 처리가 진행 중이거나 (예 : Javascript) 광고와 같은 애니메이션이 지속적으로 콘텐츠를 렌더링하는 경우입니다.


1
Spotlight는 계속 다시 나타나지만 사용하지는 않으며, 죽일 때마다 두 번째로 다시 나타납니다. 어떻게 제거해야합니까?
ling

1
@ling 스포트라이트 전용이 아닌 높은 커널 작업 메모리와 관련이 있기 때문에 다른 질문을 제안하는 것이 좋습니다.
kenorb

2
한숨 이 내 Mac에 4GB 램을 가지고 있으며 최근에 커널 작업이 3.1GB 이상으로 올라갔습니다. 내 Google 드라이브 탭을 폐쇄, 그리고 ... 9백50메가바이트에 내려 가서
Zizouz212

3
실제로 높은 kernel_task메모리 및 CPU 사용 문제를 해결할 정도로 구체적이지 않습니다 .
hyiltiz

6

2012 년 말 iMac에서 LCD 화면을 교체 한 후에도 비슷한 문제가있었습니다. 팬이 높은 RPM에서 실행 중이고 CPU Kernel_task 사용량이 높습니다. 기존 LCD 화면에서 새 교체 화면으로 이동해야하는 온도 센서로 범위를 좁혔습니다. 그렇게하지 않으면 CPU 속도와 Kernel_task가 시스템 속도 저하에 영향을줍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.