Wie debugge ich einen außer Kontrolle geratenen „kernel_task“-Prozess?

Erst kürzlich bemerkte ich, dass meine Akkulaufzeit ziemlich stark abfiel und der Prozess „kernel_task“ ziemlich viel CPU beanspruchte (konstante 1-6 % auf meinem 2,8-GHz-Dual-Core-i7, 2010 MBP). Offensichtlich denke ich, dass die CPU-Auslastung von kernel_task zum Batterieabfall beiträgt, und ich muss herausfinden, warum.

Wenn Sie Google durchsuchen, scheint es, dass kernel_task die OS X-Version von Windows "svchost.exe" ist - der berüchtigte Alleskönner-Prozess, den Sie nie wirklich debuggen können, Sie müssen nur Schalter manuell umlegen, bis einer von ihnen funktioniert.

Gibt es eine Möglichkeit, der außer Kontrolle geratenen Kernel_task-Aktivität leichter auf den Grund zu gehen? Ich habe keinen Neustart versucht, denn wenn das das Problem "behebt", wird das zugrunde liegende Problem nicht wirklich behoben.

Activity Monitor zeigt die CPU-Auslastung. Wenn ich auf Inspect drücke, zeigt es 77 Threads, 2 Ports, Stunden und Stunden CPU-Zeit, Context Switches, die etwa 400 pro Sekunde ansteigen, und Mach Messages In und Out, die beide mit etwa 6.000 pro Sekunde ansteigen.

Wie kann ich diesen kernel_taskProzess irgendwie inspizieren oder überwachen und herausfinden, was all diese Energie tatsächlich verbraucht?

(Hinweis: Meine aktuellen Verdächtigen sind das aktuelle 10.6.7-Update, das Firefox-Update von 4 Beta 10 auf RC oder ScreenResX – das sind alles Dinge, die ich in letzter Zeit getan habe, die mir einfallen.)

kernel_taskAls außer Kontrolle würde ich es nicht bezeichnen . Activity Monitor ist möglicherweise nicht das beste Dienstprogramm für Diagnosen in diesem Bereich. Fügen Sie in der Konsole Systemprotokollabfragen hinzu, damit Sie erkennen können, wie Kernel-Tasks verwendet werden. verfeinern Sie dann die Eröffnungsfrage zu einer, die leichter zu beantworten ist.
Konstante 200% CPU klingt für jeden Prozess ziemlich außer Kontrolle.

Antworten (12)

Ich hatte eine ähnliche Frage zum Identifizieren von Dateien und Programmen, die mit kernal_task verbunden sind, mithilfe des folgenden Terminalbefehls:

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

Dadurch werden verschiedene Kexte und der damit verbundene Speicher angezeigt. Ist zum Beispiel 6184960 com.apple.driver.AirPort.Brcm4360ein großes Schwein für mich, aber ich kann nicht viel dagegen tun, wenn ich WLAN nutzen möchte.

Einer der Vorschläge, die ich erhalten habe, war, alle Nicht-Apple-Kexte nachzuschlagen, die Speicher beanspruchen, indem Sie das obige an grep -v com.apple. Es ist möglich, dass einige Nicht-Apple-Programme Ihre Ressourcen verbrauchen. Sie sollten in der Lage sein, diese zu entfernen, ohne etwas zu beschädigen.

Die uralte Lösung besteht natürlich darin, Ihren Computer neu zu starten. Manchmal reicht das aus, um Prozesse auf ihre normale CPU-Auslastung zurückzusetzen.

was ist die zahl in der ersten spalte?
@Anentropic - versuchen Sie es man kextstat, wenn Sie sich das und den awkBefehl $4grabbing ansehen, es sieht aus wie die Größe der kext-Speichernutzung. Macht angesichts der Frage Sinn.
Danke @intcreator. Das Deaktivieren von WLAN hat meine kernal_task-CPU-Auslastung auf 0 gesenkt.

Hier ist eine großartige Erklärung , was ein kernel_task ist. Dies können Treiber (Kexts), Netzwerk- oder Festplattenaktivitäten sein. Sie können nicht einfach Instrumente verwenden, um sich an den kernel_taskProzess anzuhängen.

Suchen Sie nach anderen Anzeichen wie Protokollen (Console.app), Festplattenaktivität (z. B.: iotop fs_usage), Netzwerkaktivität (versuchen Sie, die Verbindung zum lokalen Netzwerk zu trennen, schalten Sie Geräte in den Netzwerkeinstellungen aus), versuchen Sie, kextunloadTreiber zu deinstallieren/aus dem Speicher zu entfernen ( ), die stammen von Drittanbietern - Tablets, USB-3G-Modems usw. Suchen Sie nach Anwendungen, die Kexts installieren

Stellen Sie außerdem sicher, dass Ihr Dateisystem nicht beschädigt ist, wenn Sie kürzlich Abstürze hatten - überprüfen Sie es.

Ich hatte fast ständig ~200% CPU-Auslastung (2 von 4 Kernen), normalerweise nach einem Start beim Übertragen von Dateien oder ähnlichem, aber danach nicht wieder normal. Der Grund war, dass mein Systemvolumen repariert werden musste. Sobald dies erledigt war, kernel_taskwar die Aktivität wieder auf einem vernünftigen Niveau.
Der Link in der Antwort ist jetzt tot
@Santa Danke für die vorgeschlagene Bearbeitung des Links, aber es macht keinen Sinn, den Link zu entfernen, wenn eine Version auf der Wayback-Maschine vorhanden ist. Ersetzen Sie den Link durch den Link zu Wayback Machine.

Wie von @Christopher erwähnt, kann Hitze dazu führen, dass die Kernel_task-CPU Spitzenwerte aufweist. Der Grund ist in diesem Beitrag „Behebung“ von Kernel_task-CPU-Problemen in MacOS Lion 10.7 aufgeführt . Anscheinend nimmt ACPI_SMC_PlatformPlugin.kext beim Aufheizen der CPU CPU-Zyklen in Anspruch, um die tatsächliche CPU-Last zu reduzieren.

Eine Lösung besteht also darin, Ihren Mac (z. B. Lüfter) durch einen externen Lüfter oder etwas wie SMCFanControl zu kühlen .

Der Artikel gibt eine andere Lösung, die darin besteht, den Sub-Kext zu entfernen, der dieses Verhalten auslöst. Obwohl ich zugeben muss, dass ich persönlich nicht sicher bin, wie sicher es ist, dieses Verhalten auszuschalten.

Ich wage zu vermuten, dass dies der Grund dafür ist, dass die Mehrheit der Kernel_task eine anhaltend hohe CPU-Auslastung verursacht. Jedes Mal, wenn es mir passierte, benutzte ich meinen Computer ziemlich stark und er begann zu verzögern, aber keiner der offensichtlichen Prozesse, die ich verwendete, verursachte die Spitze, nur kernel_task. Beenden Sie die schweren Prozesse (normalerweise Videos oder Spiele) und schließlich verschwindet es. Inzwischen klingt mein 2011er MBP so, als würde es abheben! Ich habe es aufgebrochen und gründlich gereinigt, die Staubdecken von den Kühlkörpern entfernt und ich war wieder im Geschäft mit niedrigem Lüfter und ohne Kernel_task-Verrücktheit.

Ist normalerweise kernel_taskaußer Kontrolle, wenn einige andere Prozesse Systemaufrufe oder Ressourcen (Speicher- oder Festplatten-E/A-Ereignisse) überbeanspruchen.

In diesem Fall können Sie das fs_usageBerichtsdienstprogramm verwenden, das Ihnen Systemaufrufe und Seitenfehler im Zusammenhang mit Dateisystemaktivitäten in Echtzeit anzeigt.

Führen Sie also diesen Befehl im Terminal aus:

sudo fs_usage

Beobachten Sie dann, welche Prozesse häufig einige Systemaufrufe ausführen, und wenn Sie sie nicht verwenden, sollten Sie sie schließen/beenden.

Um genauer zu sein, überprüfen Sie bitte die Spalte ZEITINTERVALL , die Ihnen die verstrichene Zeit anzeigt, die Sie im Systemaufruf verbracht haben. Ein WErscheinen nach verstrichener Zeit zeigt an, dass der Prozess als Aktivität eingeplant wurde (in diesem Fall beinhaltet die verstrichene Zeit die Wartezeit).

Um also die Prozesse zu filtern, die das meiste Zeitintervall in den Systemaufrufen verwenden, führen Sie Folgendes aus:

sudo fs_usage | grep -v 0.0000

die Ihnen in der letzten Spalte die hungrigsten Prozesse (in Bezug auf die Kernelzeit) zeigen. Sie können die Anzahl der Nullen für die Genauigkeit anpassen (weniger angezeigte Nullen, mehr Zeitaufwand).

Weitere Ideen finden Sie auch unter: Wie kann man eine hohe Kernel-Task-Speicherauslastung untersuchen?


Hier sind die häufigsten Probleme:

Gut ein vernünftiger Ausgabestrom nach dem Herausfiltern von iTerm2 und grepsich selbst:sudo fs_usage | grep -v -e '0.0000' -e 'iTerm2' -e 'grep'

Ich hatte einen massiven Anstieg der CPU-Auslastung von kernel_task und es stellte sich heraus, dass mein CPU-Lüfter teilweise ausgesteckt war. kernel_task hat etwas mit dem Throttling der CPU zu tun, wenn es zu heiß wird. In Ihrem Fall ist Ihr Lüfter vielleicht nur mit Müll und Staub verklebt und muss gereinigt werden.

Das ist verrückt! Haben Sie jemals Ihre Protokolle überprüft, als Sie dies debuggten? Wie sind Sie zu dieser Lösung gekommen?

Ich hatte das gleiche Problem in Yosemite, aber dank dieser guten Seele , die auf diesem anderen guten Kerl basiert , konnte ich es lösen. Ich kann immer noch nicht verstehen, was passiert ist, aber nachdem ich ein ganzes Wochenende damit verbracht hatte, es zu klären, gab ich einfach auf und befolgte blindlings seine Anweisungen. Schauen Sie sich meine Verzweiflung im Aktivitätsmonitor an:

Alle Ihre CPUs gehören uns

Seien Sie vorsichtig, machen Sie immer zuerst ein Backup und lesen Sie die bereitgestellten Links zur Erklärung. Ich übernehme keine Verantwortung für verursachte Schäden. Du wurdest gewarnt.

Finden Sie das Modell

$ system_profiler -detailLevel mini | grep "Modellkennung:"

Modellkennung: MacBookPro8,2

Verschieben und sichern Sie die Datei

$ mkdir -p ~/sicherung

$ cd /System/Library/Extensions/IOPlatformPluginFamily.kext/Contents/PlugIns/ACPI_SMC_PlatformPlugin.kext/Contents/Resources

$ sudo mv MacBookPro8_2.plist ~/backup/

Diese Lösung hat bei mir funktioniert. Ich habe die gleiche MacBookPro-Version. Leider beinhaltet es das Deaktivieren von Funktionen, die die Langlebigkeit der Maschine erhöhen sollen. Ich habe die CPU-Temperatur und die Lüfterfunktionalität überprüft und es scheint normal zu sein, also nehme ich an, dass es einen Fehler in dieser Funktionalität gibt, aber ich konnte immer noch nicht auf den Grund gehen, warum die Failsafe-Funktion der CPU-Kühlung ausgelöst wurde (manchmal von vor dem Einloggen, ohne Ende).
@errant.info aus irgendeinem Grund hat El Captain es gelöst. Mein Mac hatte auch einen defekten Akku und ich habe mit El Captain gewechselt, also weiß ich nicht, welche Aktion tatsächlich behoben wurde. Viel Glück mit deinem Mac!

Ich bin auf OSX Lion mit einem neuen 2011 Macbook Pro, und ich hatte kürzlich kernel_task, das etwa 25-30% der CPU ausführte, und mein Lüfter drehte sich stundenlang auf Maximum. Ich habe eins nach dem anderen ausprobiert und was es gelöst hat, war ... 5 oder 6 Fenster in der Finder-App zu schließen. Kann nicht sagen, dass ich verstehe warum, aber es war eindeutig so.

Hast du Erweiterungen für den Finder installiert? Zum Beispiel Programme, die der Symbolleiste oder dem Kontextmenü (Kontextmenü) etwas hinzufügen?
Dies liegt daran, dass bei einem oder mehreren Ihrer Fenster das Kontrollkästchen „Alle Größen anzeigen“ in der Konfiguration „Ansicht->Ansichtsoptionen anzeigen“ aktiviert ist. Schalten Sie dies aus, legen Sie es dann als Standard für alle Ordner fest, und es wird beendet.

Auf meinem Mac ist die CPU-Auslastung von kernel_task proportional zu der von mir verwendeten Internetbandbreite und reicht von etwa 0 % bis 50 %. Es wird wahrscheinlich durch die Treiber für mein Huawei 3G-Modem (HuaweiDataCardDriver.kext) verursacht.

Sie könnten versuchen, die Kernel-Erweiterungen zu deaktivieren. Es besteht keine Notwendigkeit, kextunload zu verwenden: Es ist sicher, die Kext-Pakete einfach von /System/Library/Extensions/ in einen anderen Ordner zu verschieben und neu zu starten. Sie können Consultant's Canary oder verwenden kextstat | grep -v com.apple, um Kernel-Erweiterungen aufzulisten, die nicht mit OS X geliefert wurden .

Um speziell die außer Kontrolle geratene Kernel_task zu beheben , sind hier einige nützliche Befehle:

  • Profilieren Sie das gesamte System, konzentrieren Sie sich auf den Kernelprozess (PID: 0), und führen Sie Folgendes aus:

    sudo spindump 0 -reveal
    

    Verwenden Sie für bestimmte Prozesse (wie launchd) samplezB sudo sample launchdoder per PID.

  • Um den Speicherverbrauch nach Kernel-Task zu erfassen, verwenden Sie (standardmäßig nach Dirty sortiert):

    sudo footprint 0
    

    Hinweis: Verwenden Sie diese Option -a, um auf alle Prozesse abzuzielen.

  • Um systemweite Diagnoseinformationen von mehreren Dienstprogrammen zu sammeln, führen Sie Folgendes aus: sudo sysdiagnose.

    Dies kann auch durch Drücken von Shift- Control- - -. (Punkt) ausgelöst werden.

    Sie sollten sehen, dass der Bildschirm beim Start blinkt, und warten Sie dann einige Minuten, bis die Datei im Finder angezeigt wird .

    Siehe: Wie erhalten Sie Systemdiagnosedateien von OS X?

    Dekomprimieren und überprüfen Sie dann die Dateien wie footprint*.txt, spindump.txt, taskinfo.txt, bc_stats.txtund andere.

  • Überprüfen Sie vm.swapusageden Kernelstatus, zB sysctl -a | grep ^vm.swapusage.

    Grundsätzlich gilt, je mehr Swap Sie verwenden (überprüfen Sie die Swap-Dateien, in /private/var/vmdenen verwaltet wird dynamic_pager, siehe: man dynamic_pager), desto mehr kämpft der Kernel mit der Performance aufgrund von Swapins / Swapouts- Operationen (siehe man vm_statund man fs_usage). Führen Sie zum Testen Folgendes aus:

    vm_stat 1
    sudo fs_usage | grep -w kernel_task
    

    Hinweis: Hit Control- Cum zu stoppen.

Ich habe dies gelöst, indem ich das Werksnetzteil meines MBP anstelle der MBAs meiner Frau verwendet habe. Es scheint gut zu laden (wenn auch langsam), aber aus irgendeinem Grund verursacht dieses Kernel_task-Problem. Ich habe es nicht in den richtigen Ports versucht (sie waren nicht verfügbar). Entschuldigung, wenn diese Lösung bereits hier ist

Für mich hatte ich einen Prozess (in diesem Fall Netbeans, der eine Datei mit etwa 20 GB las) und er würde etwa 80 % CPU für Netbeans, 20 % CPU für kernel_task verwenden (sehr verdächtig). Dies führte dazu, dass mein gesamtes System wie tar lief.

Ebenfalls verdächtig ist, dass "Menümeter" viel "sys"-Zeit pro CPU melden würden. Sie können dies auch im Befehl "top" sehen, zCPU usage: 21.40% user, 23.74% sys

Später könnten es Netbeans 120% CPU, Kernel_task 65% sein, aber beide waren trotzdem "hohe CPU zur gleichen Zeit".

sudo fs_usagezeigte viel davon:

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

Meine Theorie ist, dass Netbeans "so viel gelesen" hat, dass es Seitenfehler verursachte, sogar sein eigenes Programm auszuführen (dh zu senden, um sein eigenes Programm auszutauschen), wodurch eine Warteschlange hinter dem Seitenfehlersystem entstand. Und wahrscheinlich tauschen Sie auch "andere Programme" gegen Swap aus, was dazu führt, dass das gesamte System langsam wird.

Mit topwurde die FAULT-Spalte ebenfalls um 70K/s erhöht.

Mein Macbook Pro war wochenlang fast unbrauchbar wegen der hohen Kernel_task-CPU. Gleichzeitig wurde der Akku aufgepumpt, also entschied ich mich schließlich, zum Apple Center in Rom zu gehen, um ihn zu ersetzen ... selbst wenn Apple meinen Akku außerhalb der Garantie ersetzt hat (und auch Tastatur) für 0€ kosten. Noch besser ... das Kernel_task-Problem verschwindet plötzlich !!! Ich bin mir also ziemlich sicher, dass es direkt oder indirekt an der Batterie lag