Ich möchte nur wissen, wofür kernel_task verantwortlich ist. Was ist ein akzeptabler maximaler RAM- und CPU-Verbrauch dafür?
Ich möchte nur wissen, wofür kernel_task verantwortlich ist. Was ist ein akzeptabler maximaler RAM- und CPU-Verbrauch dafür?
Antworten:
Die Kernelaufgabe ist etwas Besonderes, da es sich um ein gesamtes Betriebssystem / Mikrokernel handelt, das auf Mach 3.0 basiert . Es abstrahiert den Großteil der Kernhardware, des Timings, des Message-Passings und des Memory-Handlings.
Die meisten Benutzer bemerken im Aktivitätsmonitor, dass kernel_task
die gesamte CPU-Zeit für die Eingabe / Ausgabe (I / O) von Verarbeitungsverzögerungen und -berechnungen sowie für die Planung des Overheads von Prozessen und Threads angesammelt wird. In ähnlicher Weise werden alle Speicherzuordnungen akkumuliert, die sich nicht im Benutzerbereich befinden. Auf den Macs von 2014 und neueren Versionen besteht diese Aufgabe darin, die CPU zu drosseln. Wenn die Temperaturen im Prozessor zu hoch sind, wird der Kernel-Aufgabe "Keine Arbeit" zugewiesen und es wird eine hohe CPU-Auslastung angezeigt, damit der Prozessor im Leerlauf läuft und der Computer nicht überhitzt. Dies macht sich vor allem bei tragbaren Geräten bemerkbar - insbesondere beim MacBook ohne Lüfter oder Lüfter zum Kühlen des Prozessors. Apple warnt potenzielle Kernel-Programmierer davor unter "Warum sollten Sie sich vom Programmieren im Kernel fernhalten?" Wenn Sie die Kühlung deaktivieren, wird die Hardware dauerhaft irreparabel beschädigt.
Zusammenfassend ist die Kernel-Programmierung eine immense Verantwortung. Sie müssen äußerst vorsichtig sein, um sicherzustellen, dass Ihr Code nicht zum Absturz des Systems führt, keinen unbefugten Benutzerzugriff auf die Dateien oder den Speicher eines anderen Benutzers gewährt, keine Remote- oder lokalen Root-Exploits einführt und keine versehentlichen Datenverluste oder -beschädigungen verursacht .
Wenn Sie es sich nach einem Neustart ansehen, werden Sie feststellen, dass es mit minimalem RAM- und CPU-Bedarf startet und stattdessen nur wächst, wenn andere Programme ausgeführt werden und die Systemdienste benötigen.
Deaktivieren Sie nicht benötigte Anschlüsse (WLAN, Bluetooth usw.) sowie nicht verwendete / inaktive Programme, um das Programm zu vereinfachen. Wenn sich die Situation nicht beruhigt, sollten Sie einen Neustart in Betracht ziehen, um sicherzustellen, dass keine Aufgabe hängen bleibt oder Speicherplatz verloren geht. Wenn Sie Programme haben, die echte Arbeit leisten, wird der Kernel sowohl Speicher- als auch Prozessorzeit belegen. Beobachten Sie beim Starten, welche anderen Programme dieses Verhalten verursachen. Es ist selten ein Problem mit dem Kernel - auch bei schlecht funktionierenden Programmen - das nicht durch Abmelden und erneutes Anmelden gelöst werden kann. Die kernel_task bereinigt gut und achtet im Allgemeinen darauf, nur die Ressourcen zu verwenden, die von der Arbeitslast benötigt werden.
Mac OS X-Interna: Ein Systemansatz - Amit Singh - Google Books :
Der Kernel verwendet die Task- und Thread-Abstraktionen, um seine Funktionalität in verschiedene Ausführungsabläufe zu unterteilen. Der Kernel verwendet eine einzelne Task - die Kernel-Task - mit mehreren Threads, die Kernel-Vorgänge ausführen, z. B. Zeitplanung, Thread-Ernte, Callout-Management, Paging und Unix-Ausnahmebehandlung. Daher ist xnu ein monolithischer Kernel, der deutlich unterschiedliche Komponenten wie Mach, BSD und das I / O-Kit enthält, die alle als Gruppen von Threads in einer einzigen Task im selben Adressraum ausgeführt werden.
http://lists.apple.com/archives/darwin-kernel/2010/Sep/msg00014.html :
Die Kernel-Aufgabe ist keine echte Aufgabe. Es stellt den Kernel dar, der den Kern des Betriebssystems darstellt. Der Großteil dessen, was geschieht, erfolgt auf direkte Anforderung einer Anwendung. Jedes Mal, wenn Sie einen großen Speicherblock zuweisen, eine Datei öffnen oder schließen, eine Datei lesen oder schreiben, Daten über das Netzwerk abrufen, einen neuen Prozess oder Thread erstellen usw., führt Ihre Anwendung einen Systemaufruf aus. Diese Aufrufe bewirken, dass der Kernel für Ihre Anwendung funktioniert. Ein Großteil dieser Arbeit wird dem Kernel in Rechnung gestellt, aber tatsächlich wird sie von Ihrer Anwendung erledigt, wenn auch indirekt.
Ein praktischer Grund, warum der Kernel möglicherweise überlastet ist, ist, dass auf Ihrem System nicht genügend Arbeitsspeicher zur Verfügung steht und es überlastet. Überprüfen Sie das Speicherdruckdiagramm auf der Registerkarte Speicher des Aktivitätsmonitors, um festzustellen , ob es gelb oder rot ist.
In diesem Fall können Sie Prozesse nach Speicher sortieren und einige davon beenden, um den Druck zu verringern. (zB einige Google Chrome Helper-Prozesse beenden)