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_task
Prozess 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.)
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.Brcm4360
ein 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.
man kextstat
, wenn Sie sich das und den awk
Befehl $4
grabbing ansehen, es sieht aus wie die Größe der kext-Speichernutzung. Macht angesichts der Frage Sinn.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_task
Prozess 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, kextunload
Treiber 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.
kernel_task
war die Aktivität wieder auf einem vernünftigen Niveau.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.
Ist normalerweise kernel_task
außer Kontrolle, wenn einige andere Prozesse Systemaufrufe oder Ressourcen (Speicher- oder Festplatten-E/A-Ereignisse) überbeanspruchen.
In diesem Fall können Sie das fs_usage
Berichtsdienstprogramm 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 W
Erscheinen 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:
VBoxHeadless
: Wenn Sie VMs verwenden (über Vagrant), sollten Sie erwägen, sie auszusetzen, wenn sie nicht verwendet werden.mtmd
: Es scheint, dass Time Machine Ihre Daten stündlich sichert, auch wenn Ihr Backup-Laufwerk nicht verbunden ist (sogenannte lokale Snapshots ), also versuchen Sie es zu deaktivieren ( sudo tmutil disablelocal
);wine
: Wenn Sie Windows-Apps ausführen, ziehen Sie in Betracht, sie zu schließen, wenn sie nicht verwendet werden;Chrome
: Begrenzen Sie die Anzahl der gleichzeitig geöffneten Registerkarten (versuchen Sie OneTab und/oder TGS ) oder beenden Sie einige Erweiterungsprozesse ( JavaScript ) über den Task-Manager , da jede Registerkarte einen separaten Prozess generieren könnte.
Überprüfen Sie: Chrome-Addon, um die Meldung „Seite(n) reagieren nicht“ zu stoppen .
grep
sich 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.
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:
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/
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.
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
) sample
zB sudo sample launchd
oder 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.txt
und andere.
Überprüfen Sie vm.swapusage
den Kernelstatus, zB sysctl -a | grep ^vm.swapusage
.
Grundsätzlich gilt, je mehr Swap Sie verwenden (überprüfen Sie die Swap-Dateien, in /private/var/vm
denen 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_stat
und 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_usage
zeigte 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 top
wurde 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
Graham Perrin
kernel_task
Als 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.gezwickt