Was bedeutet es, wenn ich am Ende eines Arbeitstages viele „inaktive“ Speicher habe?

Nach einem Arbeitstag an meinem MacBook Pro mit Mac OS X 10.6.5 zeigt die Aktivitätsanzeige, dass der Großteil der 8 GB Arbeitsspeicher meines Computers „inaktiv“ und nur ein winziger Teil des Kreisdiagramms „frei“ ist. Dies gilt auch, wenn ich alle Anwendungen geschlossen habe und nur der Finder läuft.

Was bedeutet das? Wird der "inaktive" Speicher von irgendetwas belegt? Oder ist es tatsächlich noch für Anwendungen verfügbar? Danke.

Antworten (5)

OS X verwendet wie die meisten modernen Betriebssysteme ein virtuelles Speichersystem zur Speicherverwaltung. Unter anderem ermöglicht dies dem Betriebssystem, den Computer so zu behandeln, als hätte er einen unbegrenzten Speicherpool. Um dies zu erreichen, lagert das Betriebssystem ungenutzte Teile des Arbeitsspeichers in einen Plattenspeicher aus, der als Auslagerungsdatei bekannt ist .

Natürlich ist RAM nicht unbegrenzt, daher gruppiert OS X RAM in vier Kategorien: verkabelt, aktiv, inaktiv und frei. Verdrahteter Speicher wird vom Betriebssystem benötigt und kann niemals aus dem Speicher ausgelagert werden. Aktiver Speicher ist Speicher, der von derzeit ausgeführten Programmen verwendet wird. Inaktiver Speicher wurde kürzlich von Programmen verwendet, die jetzt beendet wurden (oder seit langem nicht mehr verwendet wurden). Freier Speicher ist, wie der Name schon sagt, RAM, das nicht verwendet wird.

Wenn Sie ein Programm starten, wird es in den aktiven Speicher geladen. Wenn Sie ein Programm jedoch beenden, wird es nicht aus dem Arbeitsspeicher entfernt; vielmehr wird es in den inaktiven Speicher gestoßen. Aus diesem Grund ist es oft schneller, ein Programm neu zu starten – es befindet sich noch im RAM (versuchen Sie dies mit einem großen Programm wie Firefox).

Sobald Ihr gesamter Speicher belegt ist (freier Speicher ist 0), schreibt das Betriebssystem inaktiven Speicher in die Auslagerungsdatei, um mehr Platz im aktiven Speicher zu schaffen.

Wenn ein Programm in die Auslagerungsdatei ausgelagert wird und Sie es erneut starten, wird es aus der Auslagerungsdatei in den aktiven Speicher gezogen.

Kurz gesagt, es sollte Ihnen eigentlich egal sein, ob Ihr freier Speicher niedrig ist. Tatsächlich möchten Sie, dass es niedrig ist - freier Speicher ist verschwendeter Speicher (da das Betriebssystem ihn für nichts verwendet).

Wenn Sie untersuchen, wie viel Speicher Ihr Computer verwendet, sollten Sie hauptsächlich auf Swap used achten , das Ihnen die Größe der Auslagerungsdatei des virtuellen Speichers angibt, und Page ins , das Ihnen sagt, wie oft das Betriebssystem Speicher aus der Auslagerungsdatei ziehen muss ins aktive Gedächtnis.

Ich finde, dass Page-Outs ein besserer Indikator für die Verwendung von Swaps sind als Page-Ins, da Page-Ins sowohl das Laden von Programmen als auch das Laden aus der Swap-Datei umfasst.
Ah, das ist der Grund, warum Firefox beim ersten Mal ewig braucht, um zu laden, aber danach nicht mehr.
In Activity Monitor beträgt meine VM-Größe mehr als 160 GB! Gibt es eine Art Auslagerungsdatei auf meinem Computer, die tatsächlich so groß ist?!
@penyuan: Nein. Theoretisch könnte die Auslagerungsdatei so groß werden, aber die tatsächliche Größe der Auslagerungsdatei wird im Aktivitätsmonitor als Swap verwendet bezeichnet .
Inaktiver Speicher ist teilweise, wie Sie sagen, obwohl speziell ein Cache des Dateisystems oder von Bibliotheken, auf die eine Anwendung möglicherweise erneut zugreift, aber auch Speicherblöcke von derzeit ausgeführten Anwendungen, die zugewiesen, aber in einem bestimmten Zeitraum nicht aufgerufen wurden (nicht sicher der genauen Zeitdauer). Der Kernel markiert diese als Inaktiv , um sie für das Auslagern auf die Festplatte zu priorisieren, wenn die Menge an freiem Speicher zu niedrig wird.
Ich bin mir ziemlich sicher, dass inaktiver Speicher verworfen wird, wenn das System wenig RAM hat, da er nicht benötigt wird und so oder so von der Festplatte gelesen werden müsste, wenn er wieder benötigt wird. Nur aktiver Speicher sollte jemals ausgelagert werden. Wenn inaktiver Speicher tatsächlich ausgelagert wurde, würde dies bedeuten, dass der Speicher nie verworfen wurde und die Auslagerungsdatei unendlich wachsen würde.
@deceze: Inaktiver Speicher wird ausgelagert. Aktiver Speicher wird inaktiv verschoben, wenn er nicht mehr benötigt wird. Ich nehme an, wenn Sie so wenig Speicher haben, dass kein Platz für inaktiven Speicher vorhanden ist, wird der aktive Speicher direkt auf die Festplatte ausgelagert, aber das ist ein besonderer Umstand. Tatsächlich wächst die Auslagerungsdatei theoretisch unbegrenzt (bis kein Speicherplatz mehr vorhanden ist), aber auch das kommt äußerst selten vor.

Dies ist höchstwahrscheinlich kein Problem und beschleunigt möglicherweise Ihren Computer.

Alle (die meisten?) Betriebssysteme verwenden einen Festplatten-Cache, der einige kürzlich aufgerufene Dateien im Speicher speichert, sodass der wiederholte Zugriff auf diese Dateien beschleunigt werden kann. Der Festplatten-Cache unter OS X hat eine variable Größe und wird als „inaktiver Speicher“ angezeigt.

Wenn ein Programm mehr Speicher benötigt, löscht OS X einen Teil des Festplatten-Cache (die am wenigsten verwendeten Dateien), um Platz für die Ausführung/Erweiterung des Programms zu schaffen.

Ich finde, wenn ich viel kompiliere oder Fotos sortiere (dh auf Tausende von Dateien nacheinander zugreife), wird der Festplatten-Cache erweitert und viel inaktiver Speicher verwendet. Vorausgesetzt, es handelt sich nur um diesen Disk-Cache, ist dies kein Grund zur Sorge.

Wenn es sich um einen Hintergrundprozess oder eine Hintergrundanwendung handelt, deren Speicherverbrauch zunimmt (aber seine Seiten als inaktiv markiert sind), können Sie dies feststellen, indem Sie im Aktivitätsmonitor nach Programmen mit sehr hoher "Real Memory" -Nutzung suchen. Wenn es dort nichts offensichtlich Großes gibt (dh die Gesamtzahl liegt bei weitem unter 8 GB), dann ist es der Datei-Cache.

Sie sollten sehen, dass es wenig oder gar keine Swap-Nutzung gibt, und wenn Sie ein speicherintensives Programm öffnen, verringert sich die Menge an inaktivem Speicher, ohne dass auf die Festplatte ausgelagert werden muss.

(Ich glaube, es gab eine Zeit lang einen Fehler in 10.4 oder 10.5, bei dem dieser Speicher nicht immer sehr effektiv freigegeben wurde und trotz eines großen Festplatten-Cache zu Auslagerungen führte, aber meiner Erfahrung nach scheint dies in 10.6 behoben zu sein).

Inaktiver Speicher ist eigentlich RAM, kein Speicher, der auf die Festplatte ausgelagert wurde.

"Inaktiver" Speicher ist für die Verwendung durch andere Programme verfügbar - es handelt sich lediglich um das Zwischenspeichern von Programmen oder Daten, die Sie kürzlich verwendet haben, falls Sie sie erneut benötigen. Wenn Sie andere Programme starten oder andere Daten benötigen, wird der zwischengespeicherte Speicher gelöscht und bei Bedarf für Ihre neue Arbeitslast verfügbar gemacht.

Das ist jedenfalls die Theorie, und ich halte sie für richtig. Allerdings habe ich diesen Hinweis auf ein "Bereinigungs"-Dienstprogramm gefunden, das jemand geschrieben hat, weil er nicht der Meinung war, dass inaktiver Speicher schnell genug freigegeben wird.

Für eine offizielle Dokumentation zu diesem Thema lesen Sie dies (und suchen Sie nach "inaktiv").

Fürs Protokoll, mein MBP sagt derzeit: frei 58 MB, kabelgebunden 239 MB, aktiv 1,84 GB, inaktiv 900 MB – und das System funktioniert recht gut.
Ich finde Purge Command ein God Send Tool. Mit Photoshop + Firefox + Illustrator + Netbean + SmartGit kann ein 4-GB-iMac leicht zu Tode kriechen. Natürlich ist Firefox der Hauptschuldige, aber wenn Sie die Dinge ein wenig beschleunigen möchten, beenden Sie Firefox und geben Sie "purge &" Good as new erneut aus
Die Manpage von Purge sagt tatsächlich, dass es geschrieben wurde, um den Festplatten-Cache nur zu leeren (nicht anonymes Speicher: Stack, Heap oder Copy on Write) für die Leistungsanalyse (gerade weil der Festplatten-Cache das System beschleunigt). Es wurde nicht für eine schnellere Veröffentlichung geschrieben, da die Ausführung langsamer ist als der Kernel, der den Speicher bei Bedarf dynamisch zurückfordert. Wenn Sie eine App vollständig schließen, werden alle zugewiesenen Speicher entfernt, und wenn Sie danach löschen, wird die Anwendung langsamer geladen, siehe linuxatemyram.com/play.html . Ich schätze, Purge hat etwas Psychologisches, genauso wie das zwanghafte Leeren des Mülls.

Beginnend mit OS X 10.5 gibt es offensichtliche Speicherverwaltungsprobleme in MAC OS X.

Ich habe es endlich geschafft, das problematische Szenario zu reproduzieren, also habe ich den Test ausgeführt und den Bildschirm als Video aufgezeichnet.

MAC OS X Lion Leistungsproblem - defekte Speicherverwaltung

Ich führe den tar+bzip-Befehl, der grundlegendes Unix-Zeug ist, für die große Menge an Bilddateien in meinem Ordner „Pictures/“ aus. Kurz vor dem Start führe ich den Befehl "Purge" aus, um inaktive / zwischengespeicherte Programmdaten zu löschen.

Sie können auf dem Video sehen, dass der freie Speicher sehr schnell abnimmt und die Inaktivität ständig zunimmt. Wenn Sie sich den Befehl "bsdtar" ansehen, wird nur ein Fragment des RAM benötigt, sodass das Problem nicht in diesem Prozess liegt. Sie können nicht sagen, dass es sich um ein Programmspeicherleck handelt, denn dann würde das Problem nicht im inaktiven RAM liegen, sondern im aktiven/verdrahteten.

Als der freie Speicher unter 100 MB fiel, startete ich einige Apps, wie Safari, iPhoto und MS Word, und Sie können im Video sehen, dass es sogar Minuten dauert, eine App zu starten, wenn es normalerweise (wenn es freien RAM gibt). würde etwa 3-5 Sekunden dauern, um zu laden.

Ich führe das gleiche Szenario und die gleichen Befehle auf meiner Linux Centos 6-Box aus, kein Problem! Die Speicherauslastung beträgt etwa 10-20 MB, keine Probleme mit Cache/Puffer.

Die Speicherverwaltung muss in Mac OS X sehr kaputt sein!

Einiges von dem, was Sie beschreiben, könnte die Grundlage für eine andere Frage bilden, aber es ist keine Antwort auf diese Frage.
Ich würde sagen, dass Ihre Beschreibung des freien Speichers, der sich schnell auf den Sollwert reduziert, und das System, das den gesamten Rest des nicht aktiven und verdrahteten RAM als inaktiv ansammelt, ein Hinweis darauf ist, dass das System genau wie vorgesehen funktioniert. Nur weil die Speicherverwaltung auf einem Betriebssystem anders ist als auf einem anderen, heißt das nicht, dass sie auch nicht funktioniert. Optimierungsentscheidungen haben immer eine Kehrseite.

Diese Diskussion macht nur Sinn, wenn die Aussage, dass "Ihr Computer schneller läuft, wenn der freie Speicher niedrig ist" - wahr wäre. Wenn mein Desktop-Mac nicht seltsam verkabelt ist, beginnt das Programm, das ich gerade ausführe, in der Minute, in der mein freier (überwachter) Speicher knapp wird, bis zu dem Punkt zu versinken, an dem ich nichts mehr tun kann, bis es von selbst wieder hochfährt oder durch meine Intervention des Freien Gedächtnisses. Ich habe einen iMac 2118 (2006 oder später), der maximal 3 GB RAM hat, also versuche ich, ihn zu verwalten, wenn ich kann, aber das ist sehr frustrierend. Irgendwelche Gedanken?