Wie kann man eine hohe Kernel-Task-Speicherauslastung untersuchen?

Ich habe mein MacBook Pro (mit 16 GB RAM) wie gewohnt verwendet und plötzlich habe ich dieses Popup:

Ihr System hat keinen Anwendungsspeicher mehr.

Um Probleme mit Ihrem Computer zu vermeiden, beenden Sie alle Anwendungen, die Sie nicht verwenden.

Anwendungen beenden erzwingen – Ihr System hat keinen Anwendungsspeicher mehr – Screenshot

Ich habe offensichtlich einige geschlossen, die ich konnte, aber es hat nicht geholfen.

Nach der Überprüfung des Speichers scheint es, dass die Kernel-Task 7 GB verbraucht hat und 22,36 GB Auslagerungsspeicher von insgesamt 23 GB verwendet wurden (was offensichtlich der Fall war). Allerdings habe ich noch 20 GB freien Speicherplatz auf meiner SDD.

Speicher - iStat-Menüs - Screenshot

Activity Monitor hat nicht viel geholfen, während mein OS X auf die Zerstörung zusteuerte.

Process Explorer

kernel_task – Registerkarte „Speicher“ – Screenshot kernel_task - Registerkarte "Statistiken" - Screenshot

Meine topStatistiken vor meinem Kernel-Freeze:

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.

Am Ende ist mein OS X eingefroren und ich musste einen Hard-Reset durchführen, meine SDD im Wiederherstellungsmodus reparieren und danach reparieren (verlorene Arbeit wiederherstellen, Anwendungskonflikte beheben, meinen verlorenen + gefundenen Ordner überprüfen, Chrome/Terminal-Tabs weg, Kopfschmerzen usw. ).

Meine Frage ist, wie überprüfe ich die hohe Speicherauslastung der Kernel-Task oder wie gehe ich richtig mit dieser Art von Situation um? Ich habe versucht, eine Probe mit Activity Monitor zu nehmen, aber sie ist ausgegraut.


Details zu meinem MacBook Pro: 2,3 GHz Intel Core i7 (Ende 2013) mit 16 GB RAM. OS X: 10.9.5

Ist das Verhalten Ihres Systems reproduzierbar? Bitte fügen Sie auch Ihre Systemversion hinzu:
@klanomath Normalerweise habe ich viele Einfrierungen, besonders bei langer Betriebszeit, und dies sind nur Kernel-Einfrierungen aus unbekannten Gründen (mein MBR ist ziemlich neu). Aber dies ist das erste, das ich dieses Popup sehe, dass ich keinen Speicher mehr habe (mit 16 GB RAM und 50 GB freiem Speicherplatz). Meine Hauptfrage ist jedoch, wie ich die Speichernutzung der Kernel-Task untersuchen kann. Wenn sie also reproduzierbar ist, sollte dies nicht relevant sein.
Verwenden Sie zprint -t(Lion) oder sudo zprint -t(Mountain Lion und höher).
Sie haben Recht mit der Irrelevanz der Reproduzierbarkeit in Bezug auf Ihre Frage im Titel, aber es könnte relevant sein, Ihr(e) Problem(e) zu lösen.
@klanomath Danke, ich hatte Angst, dass nicht reproduzierbare Probleme nicht zum Thema gehören. Diese Art von Einfrieren war das 1. Mal. zprint -tzeigt mir die Tabelle. Gibt es eine Möglichkeit, die Kernelnutzung zu reduzieren/aktualisieren? Oder könnte es eine Art Pechleck sein?
Würde es Ihnen etwas ausmachen, die Ausgabe Ihrer Frage hinzuzufügen (oder sie in Ihren Dokumenten zu speichern)? Nur als zukünftige Referenz / um es mit einem zprint vergleichen zu können, der in einem kritischeren Systemzustand erstellt wurde. IMHO ist es ein Pechleck. Wenn du es postest, kann ich dir vielleicht mehr sagen.
@klanomath Ok, werde ich tun. Bei meinem Glück wird es sicher wieder vorkommen. Oder jemand anderes gerät in eine ähnliche Situation.
Ich habe plötzlich das gleiche Problem. Ich bin mir ziemlich sicher, dass es mit Docker für Mac oder Hyperkit zusammenhängt. Sobald ich Docker für Mac stoppe, fängt kernal_task an, mehr als 10 GB Speicher zu verbrauchen
In meinem Fall war es die Dashlane-App, die das Problem verursachte. Habe es gerade gelöscht und es funktioniert einwandfrei.

Antworten (2)

Es gibt viele Dinge, die bei einer hohen Kernel-Task-Nutzung schief gehen. Normalerweise hängt dies mit fehlerhaften oder schweren Prozessen zusammen, die die Systemressourcen überlasten (z. B. Indizierung von Speicher, Ausführen von VMs, zu viele Registerkarten im Webbrowser oder einige andere Hintergrundprozesse).

Hier sind einige Methoden, die helfen, Probleme bei der Nutzung des OS X-Kernels zu untersuchen:

Grundlegende Methoden

  • Führen Sie „ Alle NachrichtenConsole.app “ aus und prüfen Sie, ob derzeit etwas Ungewöhnliches passiert.
  • Verwenden Sie den Aktivitätsmonitor , um den Systemspeicher zu lesen und festzustellen, wie viel CPU, RAM und Festplatte verwendet werden.

    Alternativ topim Terminal ausführen und zum Aktualisieren gedrückt halten Space- einfacher, das Ursachenproblem zu finden ( Swapins / Swapouts / Disks ?).

  • In sudo fs_usageTerminal ausführen , um Systemaufrufe und Seitenfehler im Zusammenhang mit Dateisystemaktivitäten in Echtzeit zu melden (ich denke, dies ist die beste Option von allen anderen). Drücken Sie dann Control- C, um es zu stoppen.

    Aktion: Erwägen Sie, Apps zu beenden, die häufig in der Liste erscheinen, aber Sie verwenden sie nicht.

    Erfahren Sie mehr unter: Wie debugge ich einen außer Kontrolle geratenen „kernel_task“-Prozess?

  • Führen Siesudo syscallbypid.d (oder syscallbyproc.d), warten Sie ein bisschen, drücken Sie Control- C. Überprüfen Sie nun, welcher Prozess in der angegebenen Zeit die meisten Systemaufrufe generiert hat (letzte Spalte) und wenn Sie ihn erkennen, sollten Sie ihn beenden. Wenn nicht, googeln Sie es und erfahren Sie mehr darüber.

Fortgeschrittene Methoden

  • Verwenden Sie sysdiagnoseden Befehl (kann durch Drücken von Shift- Control- - - .(Punkt) ausgelöst werden, um schnell systemweite Diagnoseinformationen zu sammeln, die bei der Untersuchung von Systemspeicher-/Leistungsproblemen hilfreich sind (erscheinen in /var/tmp), entweder von Ihnen oder von Apple-Mitarbeitern. Versuchen Sie während der Analyse, dies nicht zu tun Wenn Sie fertig sind, ziehen Sie in Betracht, die generierte Datei zu dekomprimieren und die Protokolle zu analysieren.

    Siehe: Wie erhalten Sie Systemdiagnosedateien von OS X?

  • Ausführen footprint, um detaillierte Arbeitsspeicherinformationen auf Typebene pro VM-Region und ausgetauschte Bytes zu sammeln:

    sudo footprint -a
    

    Ältere Version:

    sudo footprint -all -categories -swapped -collapseSharing
    
  • Wird verwendet spindump, um das gesamte System zu profilieren, es wird eine Datei generiert /tmp/spindump.txt(einschließlich Kernel und seiner Erweiterungen).

  • Wird verwendet vm_stat, um Statistiken zum virtuellen Speicher anzuzeigen. Z.B

    vm_stat 1 # to display every second.
    
  • Verwenden Sie diese Option zprint, um Informationen zur Kernel-Nutzung zu überprüfen. Dies ist möglich durch:

    sudo zprint -t -s | head -n20
    

    Es zeigt die am meisten verschwendenden Kernelzonen.

  • Verwenden Sie newproc.d, um neue Prozesse während der Ausführung creatbyproc.dnach Dateien zu durchsuchen:

    sudo newproc.d
    sudo creatbyproc.d
    

    Hinweis: Unter neuerem OS X (10.11 oder höher) funktioniert dies möglicherweise nicht, wenn der Integritätsschutz aktiviert ist (überprüfen Sie dies mit csrutil status).

  • Try sar– Systemaktivitäts-Reporter, der verschiedene vom Betriebssystem verwaltete kumulative Statistikzähler abtasten und melden kann.

Weitere nützliche Debugging-Tools finden Sie unter dtrace-Skripts ( grep dtrace /usr/bin/*). Wenn Sie den fehlerhaften Prozess kennen, der das Problem verursacht, können Sie dtrussihn zum Debuggen verwenden.


Aktionen

Hier sind einige Vorschläge, die Ihnen bei Problemen mit dem Betriebssystem helfen können.

  • Geben Sie etwas inaktiven Speicher frei. Um dies zu tun, müssen Sie zuerst den Cache leeren und das Löschen des Festplatten-Cache erzwingen:

    sync && sudo purge
    

    sync- Erzwingen Sie den Abschluss ausstehender Festplattenschreibvorgänge (Flush-Cache)

    purge- erzwingen, dass der Festplatten-Cache geleert (gespült und geleert) wird

    Seine Funktion besteht im Grunde darin, alle anstehenden E/A-Operationen zu beenden, die den Festplatten-Cache verwenden, und dann den gesamten belegten Festplatten-Cache freizugeben, sodass er Festplattenspeicher freigeben sollte, um das Auslagern und Auslagern des Hauptspeichers zu erleichtern. Es ist sicher zu verwenden, da es keinen Einfluss auf anonymen Speicher hat, der durch malloc, vm_allocate usw. zugewiesen wurde.

  • Verwenden Sie einige Apps von Drittanbietern, um überlasteten Speicher wie iBoostUp , SystemPal usw. zu löschen.

  • Sie können Spotlight auch vorübergehend deaktivieren:

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

    Und erwägen Sie andere Dienstleistungen von:

    sudo launchctl list | grep ^[0-9]
    sudo launchctl bslist | grep ^A
    
  • Beenden Sie Ihren Webbrowser und prüfen Sie, ob das hilft. Die Verwendung von Chrome ist beispielsweise sehr einfallsreich, insbesondere wenn im Hintergrund eine Frontend-Verarbeitung stattfindet (z. B. Javascript) oder werbeähnliche Animationen den Inhalt ständig rendern.

Spotlight taucht immer wieder auf, aber ich benutze es nicht, und jedes Mal, wenn ich es töte, erscheint es in der Sekunde danach wieder ... Wie/sollte ich es loswerden?
@ling Ich würde Ihnen vorschlagen, dann eine andere Frage zu stellen, da dies mit dem hohen Kernel-Aufgabenspeicher zusammenhängt, nicht mit einem Spotlight-spezifischen.
seufz , ich habe 4 GB RAM auf meinem Mac, und erst kürzlich ging die Kernel-Aufgabe auf 3,1 GB nach oben, was im Grunde meinen gesamten Computer einfrierte. Ich habe meinen Google Drive-Tab geschlossen und er ist auf 950 MB gesunken ...
Nicht spezifisch genug, um das Problem der hohen kernel_taskSpeicher- und CPU-Auslastung tatsächlich zu lösen.
Was ich wissen möchte, ist, was bewirkt, dass Safari- oder Firefox-Tags am Ende einen solchen Overhead zu hinzufügen kernel_task. Was bedeutet, dass die Browseraktivität in endet kernel_task?

Ich hatte ein sehr ähnliches Problem, nachdem ich meinen LCD-Bildschirm bei einem iMac Ende 2012 ausgetauscht hatte. Der Lüfter lief mit hoher Drehzahl und hatte eine hohe CPU Kernel_task-Auslastung. Ich habe es auf einen Temperatursensor eingegrenzt, den Sie vom alten LCD-Bildschirm auf den neuen Ersatzbildschirm verschieben müssen. Wenn Sie dies vergessen, werden die CPU-Geschwindigkeit und Kernel_task beeinträchtigt und Ihr System verlangsamt.

Grund für das Downvoting: Dies hat nichts mit der OP-Frage zur Speichernutzung und nicht zur CPU- Auslastung zu tun (obwohl Sie Recht haben, dass die CPU-Auslastung von kernel_task verwendet wird, um zu verhindern, dass die CPU von der Anwendung verwendet wird, und somit den Laptop zu kühlen).
Ich verwende 2 erweiterte Monitore und habe dieses Problem. Dies ist der Schritt, den ich getan und gelöst habe. developer.apple.com/forums/thread/17263