Wie kann die Speicherbelegung mit hohem Kernel-Task untersucht werden?

Kenorb

Ich habe meinen MBP (mit 16 GB RAM) wie gewohnt verwendet und aus heiterem Himmel habe ich dieses Popup, das:

Ihr System hat keinen Anwendungsspeicher mehr.

Beenden Sie alle Anwendungen, die Sie nicht verwenden, um Probleme mit Ihrem Computer zu vermeiden.

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 die Kernel-Task 7 GB und 22,36 GB Swap-Speicher von insgesamt 23 GB verwendet zu haben (was offensichtlich der Fall war). Ich habe jedoch immer noch 20 GB freien Speicherplatz auf meiner SDD.

Speicher - iStat-Menüs - Screenshot

Der Aktivitätsmonitor hat nicht viel geholfen, während mein OS X auf dem Weg zur Zerstörung war.

Process Explorer

kernel_task - Registerkarte Speicher - Screenshotkernel_task - Registerkarte Statistik - Screenshot

Meine top Statistiken vor dem Einfrieren des Kernels:

 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 war mein OS X eingefroren und ich musste einen Hard-Reset durchführen, meine SDD im Wiederherstellungsmodus reparieren und anschließend reparieren (verlorene Arbeit wiederherstellen, Anwendungskonflikte beheben, meinen verlorenen + gefundenen Ordner überprüfen, Chrome / Terminal-Registerkarten verschwunden, Kopfschmerzen usw.). ).

Meine Frage ist, wie überprüfe ich die hohe Speichernutzung der Kernel-Task oder wie gehe ich richtig mit solchen Situationen um? Ich habe versucht, mit Activity Monitor eine Probe zu entnehmen, diese ist jedoch ausgegraut.


Meine MBR-Details: 2,3 GHz Intel Core i7 (Ende 2013) mit 16 GB RAM. OS X: 10.9.5

Kenorb

@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 Mal, dass ich dieses Popup sehe, bei dem mir der Speicher ausgeht (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.

Klanomath

Verwenden Sie zprint -t (Lion) oder sudo zprint -t (Mountain Lion und höher).

Klanomath

Sie haben Recht mit der Irrelevanz der Reproduzierbarkeit in Bezug auf Ihre Frage im Titel, aber es könnte relevant sein, Ihre Probleme zu lösen.

Klanomath

Würde es Ihnen etwas ausmachen, die Ausgabe zu Ihrer Frage hinzuzufügen (oder in Ihren Dokumenten zu speichern)? Nur zum späteren Nachschlagen / 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 erzählen.

Charlie Martin

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, frisst kernal_task mehr als 10 GB Speicher

Kenorb

Es gibt viele Dinge, die bei der Verwendung hoher Kernel-Tasks schief gehen. Normalerweise hängt dies mit fehlerhaften oder schweren Prozessen zusammen, bei denen die Systemressourcen überlastet sind (z. B. Indizierung des Speichers, Ausführen von VMs, zu viele Registerkarten im Webbrowser oder andere Hintergrundprozesse).

Im Folgenden finden Sie einige Methoden, mit denen Sie Probleme bei der Verwendung des OS X-Kernels untersuchen können:

Grundlegende Methoden

  • Führen Sie Console.app und überprüfen Sie " Alle Nachrichten ", um festzustellen , 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 können Sie im Terminal top laufen und zum Aktualisieren die Leertaste gedrückt halten, um das Ursachenproblem leichter zu finden ( Swapins / Swapouts / Festplatten ?).

  • Führen Sie sudo fs_usage im Terminal aus , 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 Strg - C , um es zu stoppen.

    Aktion: Beenden Sie Apps, die häufig in der Liste angezeigt werden, aber Sie verwenden sie nicht.

    Weitere Informationen finden Sie unter: Wie debugge ich einen außer Kontrolle geratenen "kernel_task" -Prozess?

  • Führen Sie sudo syscallbypid.d (oder syscallbyproc.d ) aus, warten Sie ein wenig und sudo syscallbypid.d syscallbyproc.d - C. Überprüfen Sie nun, welcher Prozess in dieser 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 sysdiagnose Befehl sysdiagnose (kann durch sysdiagnose von Shift - Control - - - (Punkt) ausgelöst werden, um schnell systemweite Diagnoseinformationen zu erfassen, die bei der Untersuchung von Systemspeicher- / Leistungsproblemen hilfreich sind (wird in /var/tmp ) Apple-Leute. Versuchen Sie während der Analyse, nichts 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?

  • Führen Sie den footprint , um detaillierte Speicherinformationen auf Ebene der einzelnen VM-Regionstypen und vertauschten Bytes zu erfassen:

     sudo footprint -a 

    Ältere Version:

     sudo footprint -all -categories -swapped -collapseSharing 
  • Verwenden Sie spindump um das gesamte System zu profilieren. Es generiert /tmp/spindump.txt Datei /tmp/spindump.txt (einschließlich des Kernels und seiner Erweiterungen).

  • Verwenden Sie vm_stat , um Statistiken zum virtuellen Speicher vm_stat . Z.B

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

     sudo zprint -t -s | head -n20 

    Es werden die am meisten verschwenderischen Kernelzonen angezeigt.

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

     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üfung anhand des csrutil status ).

  • Probieren Sie den sar System-Aktivitätsreporter aus, der verschiedene vom Betriebssystem verwaltete kumulative Statistikzähler abtasten und melden kann.

Weitere nützliche Debugging-Tools finden Sie in dtrace-Skripten ( grep dtrace /usr/bin/* ). Wenn Sie den fehlerhaften Prozess kennen, der das Problem verursacht, können Sie ihn mit dtruss debuggen.


Aktionen

Hier sind einige Vorschläge, die Ihnen bei Betriebssystemproblemen helfen können.

  • Geben Sie inaktiven Speicher frei. Dazu müssen Sie zuerst den Cache leeren und das Löschen des Festplattencaches erzwingen:

     sync && sudo purge 

    sync - Erzwingt den Abschluss ausstehender Festplattenschreibvorgänge (Cache leeren)

    purge - Erzwingt das Löschen des Festplattencaches (geleert und geleert).

    Seine Funktion besteht im Wesentlichen darin, alle ausstehenden E / A-Vorgänge zu beenden, die den Festplatten-Cache verwenden, und dann den gesamten belegten Festplatten-Cache freizugeben. Daher sollte Speicherplatz freigegeben werden, um das Auslagern und Auslagern des Hauptspeichers zu erleichtern. Die Verwendung ist sicher, da sie keinen Einfluss auf anonymen Speicher hat, der über 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 auch temporäres Spotlight deaktivieren:

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

    Und betrachten Sie andere Dienste durch:

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

Leng

Spotlight wird immer wieder angezeigt, aber ich verwende es nicht und jedes Mal, wenn ich es töte, wird es in der Sekunde danach wieder angezeigt. Wie / soll ich es loswerden?

Kenorb

@ling Ich würde vorschlagen, dass Sie dann eine andere Frage stellen, da dies mit einem hohen Kernel-Task-Speicher zusammenhängt, nicht mit einem Spotlight-spezifischen.

Zizouz212

Seufz, ich habe 4 GB RAM auf meinem Mac und erst kürzlich stieg die Kernel-Aufgabe auf 3,1 GB, was im Grunde meinen gesamten Computer einfrierte. Mein Google Drive-Tab wurde geschlossen und auf 950 MB reduziert ...

Hyiltiz

Nicht spezifisch genug, um das kernel_task der hohen Speicher- und CPU-Auslastung von kernel_task tatsächlich zu lösen.

fern10

Ich hatte ein sehr ähnliches Problem, nachdem ich meinen LCD-Bildschirm auf einem iMac Ende 2012 ausgetauscht hatte. Der Lüfter lief mit hoher Drehzahl und hatte eine hohe CPU-Auslastung von Kernel_task. Ich habe es auf einen Temperatursensor eingegrenzt, den Sie vom alten LCD-Bildschirm zum neuen Ersatzbildschirm wechseln müssen. Wenn Sie dies vergessen, wirken sich die CPU-Geschwindigkeit und Kernel_task auf die Verlangsamung Ihres Systems aus.