Ich habe ein sehr seltsames Problem, bei dem es mir schwerfällt, die Grundursache zu diagnostizieren.
Ich habe einen Mac Pro (2008, 8-Core 2,8 GHz, 8800GT) mit 14 GB RAM (vor kurzem wegen dieses Problems aktualisiert!).
Wenn ich mein System starte und mich anmelde, zeigt vm_stat / top / Activity Monitor an, dass kernel_task ungefähr 150 MB zugewiesen sind und dem Computer ungefähr 800 MB kabelgebundener Speicher zugewiesen sind.
Selbst anfangs scheinen 800 MB sehr viel kabelgebundener Speicher zugewiesen zu sein, ohne dass Anwendungen ausgeführt werden - aber es wird schlimmer. ( Hinweis : Wired ist gesperrt, nicht austauschbarer Speicher)
Nach einer sehr kurzen Zeit, die manchmal von etwas Einfachem wie dem Starten eines Terminals ausgelöst wird, steigt kernel_task auf 8-900 MB Real Mem (RSIZE) und der verkabelte Speicher wird auf 1,6 GB beschleunigt (was bedeutet, dass alle zusätzlichen Speicheranforderungen erforderlich sind) kabelgebundener RAM im Kernel).
Wenn ich alles beende (IE: keine laufenden Anwendungen, Aktivitätsmonitor oder Terminal zum Anzeigen von oben), wird weder kernel_task RSIZE noch der verkabelte Speicherbedarf nennenswert reduziert. Wenn Sie den umgekehrten Weg einschlagen und das System mit Aufgaben beladen, zeigt sich auch, dass der verkabelte Speicher nicht reduziert wird - und dass er, was wichtig ist, nicht vor starkem Auslagern reduziert wird.
Wenn ich mich abmelde und wieder anmelde, verringert sich dies ein bisschen (450 MB kernel_task, 1,28 GB Wired), aber nicht wieder auf den Start.
Ich lasse keine verrückten Kext s laufen - und außerdem zeigt Kextstat dort keine riesigen Speicherzuordnungen. Das größte ist com.apple.nvidia.nv50hal mit ca. 4 MB Arbeitsspeicher.
Die Maschine fühlt sich in diesem Fall insgesamt träger an - was nicht verwunderlich ist, da so viel RAM als nicht auslagerbar markiert wurde.
Ich habe also ein paar Fragen:
1) Gibt es eine gute Möglichkeit zu diagnostizieren, was den gesamten verdrahteten Speicher belegt hat? Es ist oft mehr als zweimal so groß wie kernel_task und es werden keine Anwendungen ausgeführt. Die tatsächliche Speicherkapazität scheint sich nicht zu summieren - es scheint, dass es eine Menge RAM gibt, die nirgendwo berücksichtigt werden.
2) Was passiert, wenn der Kernel plötzlich sechsmal so viel Speicher benötigt?
Antworten:
Um herauszufinden, warum der Kernel mehr Speicher als gewöhnlich belegt, können Sie verschiedene Tools verwenden.
kernel_task
Aufgabe, bei der keine andere mehr Speicher als üblich beansprucht wird.vm_stat 1
, um Echtzeit-Speicherstatistiken anzuzeigen und festzustellen, ob Ihr Speicher wirklich jede Sekunde größer wird.fs_usage
Tool (als Root) aus, um Systemaufrufe und Seitenfehler in Echtzeit zu überwachen.So überprüfen Sie die Summe der fehlerhaften / anonymen Zuordnungen mehrerer in Terminal ausgeführter Prozesse:
Es sammelt Speicherinformationen, z. B. wie viel es ausgetauscht wurde (pro Benutzer oder Kernel-Speicher).
Wenn Sie der Meinung sind, dass der Kernel den meisten Speicher belegt, probieren Sie
zprint
tool:Es werden Informationen zu Kernelzonen angezeigt
Wenn Sie das Löschen des Festplattencaches erzwingen möchten (um Speicherplatz freizugeben), können Sie Folgendes versuchen:
Siehe auch: Wie kann die Speichernutzung von Kernel-Aufgaben untersucht werden? bei AD SE
quelle
Kernel-Erweiterungen sind nur eines von vielen, vielen Codefragmenten, die vom Betriebssystem ohne Ihr Wissen ausgeführt werden können. Ich habe ein kleines Python-basiertes Hilfsprogramm namens Consultant's Canary, mit dem Sie einige davon finden können:
Wenn das keine potentiellen Schuldigen auftaucht, würde ich sagen, booten Sie von einer sauberen Installation und versuchen Sie, das Problem dort zu reproduzieren.
quelle