제어 불가능한 "kernel_task"프로세스를 어떻게 디버깅합니까?


42

최근에는 배터리 수명이 상당히 줄어들었고 꽤 많은 CPU를 사용하는 "kernel_task"프로세스 (2.8ghz 듀얼 코어 i7, 2010 MBP에서 1-6 %의 상수)를 보았습니다. 분명히 kernel_task의 CPU 사용량이 배터리 감소에 기여하고 있다고 생각하며 이유를 찾아야합니다.

구글을 검색 할 때, kernel_task는 OS X의 Windows 버전 "svchost.exe"인 것 같습니다. 실제로 디버깅 할 수없는 악명 높은 모든 프로세스는 스위치 중 하나가 작동 할 때까지 수동으로 전환해야합니다.

통제 불능 인 kernel_task 활동의 맨 아래에 더 쉽게 도달 할 수있는 방법이 있습니까? 나는 그것이 "수정"하면 근본적인 문제를 해결하지 않기 때문에 재부팅을 시도하지 않았다.

활동 모니터는 CPU 사용량을 보여줍니다. Inspect에 도달하면 77 개의 스레드, 2 개의 포트, 시간 및 시간의 CPU 시간, 컨텍스트 스위치가 초당 약 400 개, Mach 메시지 수신 및 출력이 초당 약 6,000 개로 표시됩니다.

어떻게하면이 kernel_task프로세스를 어떻게 검사 또는 모니터링 하고 실제로이 모든 기능을 사용하고 있는지 파악할 수 있습니까?

(참고 : 현재 용의자는 최근 10.6.7 업데이트, 4 베타 10에서 RC 로의 Firefox 업데이트 또는 ScreenResX입니다. 최근에 내가 생각할 수있는 모든 것들입니다)


나는 kernel_task통제 할 수없는 것으로 묘사하지 않을 것이다 . 활동 모니터는이 영역의 진단에 가장 유용한 유틸리티가 아닐 수 있습니다. 콘솔에서 시스템 로그 쿼리를 추가하여 커널 작업이 사용되는 방법을 식별 할 수 있습니다. 그런 다음 시작 질문을보다 쉽게 ​​대답 할 수있는 질문으로 세분화하십시오.
Graham Perrin

1
모든 프로세스에서 일정한 200 % CPU 사운드를 제어 할 수 없습니다.
twe4ked

답변:


12

내가 가지고 비슷한 질문 다음 터미널 명령을 사용하여 kernal_task에 연결된 파일과 프로그램을 식별하는 방법에 대한을 :

kextstat -l -k | awk '{n = sprintf("%d", $4); print n, $6}' | sort -n

다양한 kext와 관련 메모리가 표시됩니다. 예를 들어, 6184960 com.apple.driver.AirPort.Brcm4360나를 위해 큰 돼지이지만 와이파이를 사용하고 싶다면 그것에 대해 많은 것을 할 수 없습니다.

내가받은 제안 중 하나는 위의을로 파이프하여 Apple 이외의 모든 kext가 메모리를 차지하는 것을 찾는 것 grep -v com.apple입니다. Apple 이외의 일부 프로그램이 리소스를 사용하고있을 수 있습니다. 아무것도 깨지 않고 제거 할 수 있어야합니다.

오래된 솔루션은 물론 컴퓨터를 다시 시작하는 것입니다. 때로는 프로세스를 정상적인 CPU 사용량 수준으로 다시 설정하기 만하면됩니다.


첫 번째 열의 숫자는 무엇입니까?
Anentropic

@ Anentropic-try man kextstat, 그것을보고 awk명령 잡아서 $4, 그것은 kext 메모리 사용량의 크기처럼 보입니다. 질문을 고려하는 것이 합리적입니다.
rebusB

11

다음은 kernel_task가 무엇인지에 대한 훌륭한 설명 입니다. 드라이버 (kext), 네트워크 또는 디스크 활동 일 수 있습니다. 기기를 사용하여 kernel_task프로세스 에 연결할 수는 없습니다 .

로그 (Console.app), 디스크 활동 (예 :) iotop fs_usage, 네트워크 활동 (로컬 네트워크 연결 끊기, 네트워크 환경 설정에서 장치 끄기 )과 같은 다른 표시를 찾고 메모리 ( kextunload) 드라이버 를 제거 / 제거하려고합니다. 태블릿, USB 3G 모뎀 등의 타사 제품입니다. kext를 설치하는 응용 프로그램을 확인하십시오.

또한 최근에 충돌이 발생한 경우 파일 시스템이 손상되지 않았는지 확인하십시오. 확인하십시오.


1
나는 ~ 200 %의 CPU 사용률 (4 코어 중 2 개)을 거의 일정하게 유지했습니다. 일반적으로 파일이나 비슷한 것을 전송할 때 부팅 후에 시작하지만 나중에 다시 정상으로 돌아 오지 않습니다. 그 이유는 시스템 볼륨을 복구해야했기 때문입니다. 그 일이 끝나면 kernel_task제정신 수준의 활동으로 돌아갔습니다.
Daniel Beck

1
답변의 링크가 죽었습니다
Swader

1
@Santa 링크와 관련하여 제안 된 편집에 감사드립니다. 그러나 Wayback Machine에 버전이있을 때 링크를 제거 할 필요는 없습니다. Wayback Machine에 대한 링크로 링크를 교체하십시오.
grg

8

@Christopher가 언급했듯이 열로 인해 kernel_task CPU가 급증 할 수 있습니다. MacOS Lion 10.7의 "Fixing"kernel_task CPU 문제에 이유가 나와 있습니다 . CPU가 가열되면 ACPI_SMC_PlatformPlugin.kext는 실제 CPU로드를 줄이기 위해 CPU주기를 차지합니다.

따라서 외부 팬 또는 SMCFanControl 과 같은 장치를 통해 Mac (예 : 팬)을 식히는 것이 해결책 중 하나 입니다.

이 기사는 그 행동을 유발하는 서브 켄트를 제거하는 또 다른 해결책을 제시합니다. 인정해야하지만 개인적으로 그 행동을 끄는 것이 얼마나 안전한지 확신 할 수 없습니다.


2
이것이 대부분의 kernel_task가 높은 CPU 사용량을 유지하는 이유라고 추측 할 위험이 있습니다. 그것이 나를 위해 일어날 때마다, 나는 내 컴퓨터를 꽤 많이 사용하고 있으며 지연되기 시작하지만, 내가 사용하고있는 명백한 프로세스 중 아무도 아무것도 발생하지 않았습니다. 많은 프로세스 (일반적으로 비디오 또는 게임)를 종료하면 결국 사라집니다. 한편 2011 MBP는 ​​들릴 것 같습니다! 그것을 깨뜨려 서 깨끗하게 청소하고 방열판의 먼지 담요를 제거했으며 팬이 적고 kernel_task가 미친 사업으로 돌아 왔습니다.
Joey T

5

kernel_task다른 프로세스가 시스템 호출이나 리소스 (메모리 또는 디스크 I / O 이벤트)를 과도하게 사용하는 경우 일반적으로 제어 할 수 없습니다.

이 경우 fs_usage보고 유틸리티를 사용 하여 파일 시스템 활동과 관련된 시스템 호출 및 페이지 결함을 실시간으로 표시 할 수 있습니다.

터미널에서이 명령을 실행하십시오 :

sudo fs_usage

그런 다음 어떤 프로세스가 시스템 호출을 자주 수행하는지 관찰하고 사용하지 않는 경우 프로세스를 닫고 종료하십시오.

보다 구체적으로, 시스템 호출에 소요 된 시간을 제공 하는 TIME INTERVAL 열을 확인하십시오 . W경과 시간은 공정이 (이 경우에, 경과 시간이 상기 대기 시간을 포함한다)에서 활성을 나타내는 예약 된 후 나타나는.

따라서 시스템 호출에서 가장 많은 시간 간격을 사용하는 프로세스를 필터링하려면 다음을 실행하십시오.

sudo fs_usage | grep -v 0.0000

마지막 열에서 가장 배고픈 프로세스를 보여줍니다 (커널 시간 측면에서). 정밀도를 위해 0의 수를 조정할 수 있습니다 (제로가 적을수록 더 많은 시간을 소비).

더 많은 아이디어를 얻으 려면 다음을 확인하십시오. 높은 커널 작업 메모리 사용량을 조사하는 방법?


가장 일반적인 문제는 다음과 같습니다.


2
iTerm2grep자체를 필터링 한 후 합리적인 출력 스트림을 제공 합니다.sudo fs_usage | grep -v -e '0.0000' -e 'iTerm2' -e 'grep'
Joel Purra

4

kernel_task CPU 사용량이 엄청나게 증가했으며 CPU 팬의 플러그가 부분적으로 분리 된 것으로 나타났습니다. kernel_task는 너무 뜨거워 질 때 CPU의 조절과 관련이 있습니다. 당신의 경우에, 당신의 팬은 단지 쓰레기와 먼지로 뭉개 져서 청소해야 할 것입니다.


그건 미친 짓이야! 디버깅 할 때 로그를 확인한 적이 있습니까? 그 해결책에 어떻게 왔습니까?
Ricket

3

나는 요세미티 만에 같은 문제가 있었다 이 좋은 영혼 덕분에 이를 기반으로 또 다른 좋은 동료 내가 그것을 해결할 수 있습니다. 나는 여전히 어떤 일이 일어 났는지 이해할 수 없지만 주말 내내 그것을 해결하려고 노력한 후에 나는 포기하고 그의 지시를 맹목적으로 따랐습니다. 활동 모니터에서 절망을보십시오.

모든 CPU는 우리에게 속합니다

항상 백업을 먼저하고 제공된 링크를 읽고 설명하십시오. 나는 발생하는 모든 손해에 대해 책임을지지 않습니다. 경고를 받았습니다.

모델 찾기

$ system_profiler -detailLevel 미니 | grep "모델 식별자 :"

모델 식별자 : MacBookPro8,2

파일 이동 및 백업

$ mkdir -p ~ / 백업

$ cd / 시스템 / 라이브러리 / 확장 /IOPlatformPluginFamily.kext/Contents/PlugIns/ACPI_SMC_PlatformPlugin.kext/Contents/Resources

$ sudo mv MacBookPro8_2.plist ~ / backup /


1
이 솔루션은 저에게 효과적이었습니다. 동일한 MacBookPro 버전이 있습니다. 불행히도 기계의 수명을 늘리기 위해 설계된 기능을 비활성화하는 것과 관련이 있습니다. CPU 온도 및 팬 기능을 확인했으며 정상적인 것으로 보이 므로이 기능에 버그가 있다고 가정하지만 여전히 CPU 냉각 안전 장치가 트리거되는 이유를 알 수 없었습니다. 로그인하기 전에 끝까지).
errant.info

@ errant.info 어떤 이유로 엘 캡틴이 해결했습니다. 내 맥도 배터리에 결함이 있었고 엘 캡틴으로 바뀌 었으므로 실제로 어떤 동작이 수정되었는지 알지 못합니다. 맥과 함께 행운을 빌어 요!
누군가 아직도 당신을 사용합니다 MS-DOS

2

저는 2011 년 새 맥북 프로로 OSX Lion을 사용하고 있으며 최근에 CPU의 25-30 % 정도에서 kernel_task를 실행하고 팬이 몇 시간 동안 최대 속도로 회전하고 있습니다. 한 번에 한 가지를 시도했지만 해결 된 것은 Finder 앱에서 5 또는 6 개의 창을 닫는 것입니다. 이유를 이해할 수는 없지만 분명히 그랬습니다.


2
Finder 확장이 설치되어 있습니까? 예를 들어, 도구 모음 또는 마우스 오른쪽 버튼 클릭 (컨텍스트) 메뉴에 무언가를 추가하는 프로그램?
Ricket

1
하나 이상의 창에 '보기->보기 옵션 표시'구성에서 "모든 크기 표시"확인란이 활성화되어 있기 때문입니다.이 옵션을 끄고 모든 폴더에 대해 기본값으로 설정하면 중지됩니다.
Brian Topping

2

내 Mac에서 kernel_task의 CPU 사용은 내가 사용하는 인터넷 대역폭에 비례하며 약 0 %에서 50 % 사이입니다. 아마도 Huawei 3G 모뎀 (HuaweiDataCardDriver.kext)의 드라이버 때문일 수 있습니다.

커널 확장을 비활성화 할 수 있습니다. kextunload를 사용할 필요가 없습니다. kext 번들을 / System / Library / Extensions /에서 다른 폴더로 옮기고 다시 시작하는 것이 안전합니다. 컨설턴트의 카나리아를 사용 하거나 kextstat | grep -v com.appleOS X와 ​​함께 제공되지 않은 커널 확장을 나열 할 수 있습니다.


1

제어되지 않는 kernel_task 문제를 구체적으로 해결하려면 다음과 같은 유용한 명령이 있습니다.

  • 커널 프로세스 (PID : 0)를 중심으로 전체 시스템을 프로파일 링하고 다음을 실행합니다.

    sudo spindump 0 -reveal
    

    특정 프로세스 ( 예 :)의 launchd경우 sample, sudo sample launchd또는 PID를 사용하십시오.

  • 커널 작업별로 메모리 소비를 수집하려면 다음을 사용하십시오 (기본적으로 dirty로 정렬 됨).

    sudo footprint 0
    

    참고 : -a모든 프로세스를 대상으로하는 데 사용하십시오 .

  • 여러 유틸리티에서 시스템 전체 진단 정보를 수집하려면 다음을 실행하십시오 sudo sysdiagnose..

    이것은 또한 타격에 의해 트리거 될 수 있습니다 Shift- Control- - -. (기간).

    시작할 때 화면이 깜박 인 다음 파일이 Finder에 나타날 때까지 몇 분 정도 기다려야 합니다 .

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

    그런 다음 압축 해제와 같은 파일 확인 footprint*.txt, spindump.txt, taskinfo.txt, bc_stats.txt및 기타.

  • vm.swapusage커널 상태를 확인하십시오 ( 예 :) sysctl -a | grep ^vm.swapusage.

    기본적으로, 더 스왑 당신이 (에 스왑 파일 확인 사용 /private/var/vm에 의해 관리되는을 dynamic_pager참조 : man dynamic_pager) 성능과 사투를 벌인 더 커널로 인해, Swapins / Swapouts 작업 (참조 man vm_stat하고 man fs_usage). 테스트하려면 다음을 실행하십시오.

    vm_stat 1
    sudo fs_usage | grep -w kernel_task
    

    참고 : 중지 Control- C중지하십시오.


0

나에게 하나의 프로세스 (이 경우 20GB와 같은 파일을 읽는 Netbeans)가 있었고 netbeans의 경우 80 % CPU, kernel_task의 경우 20 % CPU (매우 의심스러운)를 사용합니다. 이로 인해 전체 시스템이 tar처럼 실행되었습니다.

또한 "menumeters"는 CPU 당 많은 "sys"시간을보고 할 것입니다. "top"명령에서도 볼 수 있습니다.CPU usage: 21.40% user, 23.74% sys

나중에 netbeans 120 % CPU, kernel_task 65 % 일 수 있지만 어쨌든 둘 다 "동시에 높은 CPU"였습니다.

sudo fs_usage 이 많은 것을 보여 주었다 :

12:46:34.446367  PAGE_IN_FILE      A=0x093a5bb000       0.000001   java.453214

내 이론은 netbeans가 "너무 많은 것을 읽고"있어 페이지 결함이 자체 프로그램을 실행 (즉, 자체 프로그램을 스왑하기 위해 발송)하게하여 페이지 결함 시스템 뒤에 큐를 가져 오는 것입니다. 그리고 아마도 "다른 프로그램"을 바꾸어도 전체 시스템이 느려질 수 있습니다.

를 사용 top하여 FAULT 열도 70K / 초 증가했습니다.


0

내 Macbook Pro는 몇 주 동안 kernel_task high CPU로 인해 거의 사용할 수 없었습니다. 배터리가 팽창 된 동시에 마침내 로마의 Apple Center를 방문하여 배터리를 교체하기로 결정했습니다. 0 € 비용입니다. 더 나은 ... kernel_task 문제가 갑자기 사라집니다! 배터리가 직접적이든 간접적이든 확신합니다.

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