Mac - per-kext Speichererweiterung, alias welcher Kext ist undicht?

3786
petr

Ich habe Probleme mit einigen Kernel-Erweiterungen, die ich als ein oder zwei Tage im Einsatz verwende. Der Speicherbedarf kernel_tasksteigt auf 1,2 GB und bleibt die ganze Zeit dort. Das Problem ist, dass ich ein paar Erweiterungen von Drittanbietern installiert habe, und es wäre schwierig, sie einzeln zu entfernen. Ganz zu schweigen davon, dass das Leck tatsächlich in einigen Kernmodulen enthalten sein kann.

Gibt es eine Möglichkeit, die pro-Text-Speicheraufteilung dieser kernel_taskGesamtsumme zu sehen?

6

1 Antwort auf die Frage

9
NOTjust -- user4304

Es gibt ein Befehlszeilenprogramm, mit dem Sie den für Kernel-Erweiterungen verdrahteten Speicher überprüfen können . Ein Speicherverlust wird jedoch häufig nicht als kabelgebundener Speicher angezeigt, aber wir können hoffen:

  1. Terminal öffnen

  2. Art kextstat

  3. Wenn Sie nicht sehen, dass die Spalte für verdrahteten Speicher größer als die Spalte mit der Größe (der Standardspeichergröße für .kext) für eine Ihrer vermuteten Täter-Kernel-Erweiterungen (oder eine beliebige .kext- Erweiterung ) ist, fahren Sie mit Schritt 4 fort.

  4. Typ man kextutil, lesen Sie diese Manpage. Ich habe dies erfolgreich verwendet, um die Installationsprobleme einer Kernel-Erweiterung richtig zu diagnostizieren. Es kann zumindest zu Ihrer Information nützlich sein.

    X. Ich bin mir nicht sicher, ob ich dir kextcachehelfen würde. Für das Debuggen des betreffenden .kext müssen Sie beispielsweise die Xcode-Entwicklungsumgebung verwenden und über mindestens zwei Computer verfügen. Lassen Sie mich nur sagen, seien Sie vorsichtig, was Sie booten . Durchsuchen Sie die eigene Entwicklerdokumentation von Apple, um zu erfahren, wie Sie dies auf Ihren Plattformen tun können. Wenn Sie an der Codierung der Kernel-Erweiterungen beteiligt sind, sollten Sie bereits wissen, wie dies geschieht. Es ist nicht für das Licht des Tastenanschlags.

Einige Punkte, die Sie beachten sollten:

  1. Das Betriebssystem verwendet mehr RAM, wenn es verfügbar ist. Wenn Sie Ihren RAM kürzlich von 8 GB auf 16 GB aufgerüstet haben, haben Sie möglicherweise einen großen Sprung in der Speicherauslastung von kernel_task festgestellt.

  2. Integrierte GPUs (Grafikkarten) teilen sich den Speicher mit kernel_task, sodass bei bestimmten Prozessen der verwendete Speicher hochspringt. Die meisten der Zeit, wenn der Prozess beendet wird, wird der Speicher durch die GPU und kernel_task den Speicherverbrauch sinkt freigegeben wieder nach unten.

Falls Sie dies nicht in Terminal.app nachverfolgen können, würde ich Folgendes tun:

  • Laden Sie den fseventer herunter und installieren Sie ihn ( starten Sie dann den Mac neu), und führen Sie dann den fseventer aus.

  • Öffnen Sie den Aktivitätsmonitor und sehen Sie, ob Sie für diese Programme verwandte Prozesse finden können

  • Sehen Sie sich beide Programme nebeneinander an, um zu sehen, ob Sie einen Prozess damit verknüpfen können, viele Daten auf die Festplatte zu schreiben (HP Druckersoftware ist eine Art notorische Bloatware, die häufig etwas tut). Versuchen Sie dann, Prozesse von AM zu beenden, und sehen Sie, ob die Aktivität in fseventer angehalten wird oder ob der Speicherverbrauch von kernel_task um einiges nachgelassen hat.

  • Wenn Sie der Meinung sind, dass Sie die .kext-Datei kennen, sich aber nicht sicher sind, welches Programm, oder nicht wissen, welche .kext-Datei, dann verwenden Sie Suspicious Package (ebenfalls in der unten stehenden SU-Frage), um die .pkg / .mpkg-Datei zu überprüfen Dateien, von denen Sie vermuten, dass sie mit dem Kext verknüpft sind. Sie können auch mit der rechten Maustaste auf eine .m / pkg-Datei klicken und mit der rechten Maustaste darauf klicken. Klicken Sie auf "Paketinhalt anzeigen", um hineinzugehen.

  • Eine andere Möglichkeit, um herauszufinden, wo einige der Teile eines Programms liegen, besteht darin, in Terminal.app zu gehen, lsbomein Leerzeichen einzugeben und dann eine relevante Datei aus dem Bereich zu ziehen. /Library/ReceiptsDann einmal Löschen und dann /Contents/Archive.bomEnter drücken. ( Dies ist für viele Programme nicht verfügbar, wenn sie von einem anderen Computer migriert wurden. )

  • Sie können AppCleaner auch verwenden, um die Entfernung / Untersuchung zu unterstützen.

... es wäre auch hilfreich für Helfer zu wissen -> welche Hardware / Software betreiben Sie? Ist alles HW / SW auf dem neuesten Stand? Sollen alle diese .kexts ähnliche Aufgaben erfüllen? Was machen Sie? Haben Sie große Hardware angeschlossen (zB Audio-Interfaces)?

Wenn Sie es nicht auf diese Weise herausfinden können, würde ich die untenstehende Checkliste durchgehen und prüfen, ob Sie etwas beantworten / entfernen / daraus entnehmen können (Probleme dieser Art erfordern leider einige Untersuchungen, es sei denn, Sie haben Glück und das Programm ist wirklich offensichtlich in ihrem Ressourcenverbrauch):

  • Wenn Ihre Programme migriert wurden, empfiehlt es sich, sie neu zu installieren. Migration und sogar das einfache Klonen eines Laufwerks ist nicht ohne Einschränkungen.

  • Eine schlechte Festplatte kann auch dazu führen, dass dies passiert, oder ein Teil der Logikplatine könnte fehlerhaft oder beschädigt sein (gesehen mit eigenen Augen). Führen Sie den Apple Hardware Test (AHT) aus (sollte mit dem Gerät auf den ursprünglichen Installationsdisketten installiert sein) (oder Apple Service Diagnostics (ASD), wenn Sie einen Freund haben, der bei Apple funktioniert, oder nehmen Sie ihn einfach mit)

  • Wissen Sie genau, in welchen Programmen Kernel-Erweiterungen laufen? Ich habe jede Menge Apps von Drittanbietern, die im Hintergrund in verschiedenen Phasen des Verdeckens / der Unsichtbarkeit ausgeführt werden, und die meisten von ihnen haben keine Kernel-Erweiterungen installiert.

  • Haben Sie die Console.app unter Applications> Utilities überprüft? Wenn Sie die Protokolldateien nicht geprüft haben, sollten Sie dies tun. Möglicherweise erhalten Sie einen Hinweis an Sie oder eine möglicherweise hilfreiche Partei. In diesem Fall können Sie Ihre Frage möglicherweise spezifisch überprüfen, es sei denn, Sie beschließen, den Täter aus Ihrem Computer zu löschen System.

  • Der Befehl 'top' im Terminal kann etwas mehr Details enthalten als der Aktivitätsmonitor.

  • Ich mag das Programm- Menü, es kann nützlich sein, um Dinge zu überwachen, ohne den Aktivitätsmonitor offen zu halten. Natürlich läuft ein anderes Programm von Drittanbietern.

  • Wurden Sie im abgesicherten Modus gestartet (deaktiviert zusätzliche Kernel-Erweiterungen)?

  • Ist dies eine sehr "saubere" Installation in Bezug auf Fragmentierung / Tage seit Neuinstallation / Installation? (Offensichtlich nicht in Bezug auf die Anzahl der laufenden Drittanbieter-Apps).

  • Teilen Sie viele Dateien, die ständig gesichert werden, Batch-Bearbeitung oder eine / V-Transcodierung?

Beim ersten Posting:

Mein Kernel_Task verwendet> 800 MB Real Memory und> 50 MB VM, entsprechend dem Aktivitätsmonitor. Die Betriebszeit beträgt weniger als 6 Stunden. Ich habe gerade die Benutzer gewechselt und Aperture beendet, das ~ 3 GB Real Memory verwendet und die Kernel-Task ~ 50 MB gesunken ist.

Am 12. September '12:

kernel_task wird mit 1.04GB von realen Speicher 67MB VM. Betriebszeit = ~ 5,5 Tage. Zwei Benutzer haben sich angemeldet, Dutzende von Browser-Registerkarten in fünf verschiedenen Browsern des aktuellen Benutzers.

Vielleicht möchten Sie auch diese beantwortete Frage zu SU und die akzeptierte Antwort sowie die dort aufgelistete Software als Hilfsmittel betrachten, um Ihnen dabei zu helfen, dieser Frage auf den Grund zu gehen.

`kextstat | awk 'NR == 1 NR! = 1 '| sort -n` verwendet `awk` und` sort`, um die Ausgabe von `kextstat` etwas lesbarer zu machen und die Kexte nach Speicherbedarf zu sortieren. Isaac vor 9 Jahren 2