Ist inaktiver Speicher nicht eine Verschwendung von Ressourcen?

Ich suche nach einer Erklärung der Speichernutzung auf meinem Computer, insbesondere angesichts des Beispiels in diesem Screenshot unten:

Speichernutzung

Ich verstehe, was ist Freeund Activebedeutet
Aber was bedeuten Wiredund Inactive?

Vor allem inactive, warum verbraucht es so viel Speicher für etwas, das wir nicht verwenden?

Antworten (7)

Inaktive Erinnerung hat wegen eines beschissenen Namens einen schrecklichen Ruf bekommen. Es hätte so etwas wie "Machen Sie Ihren Mac beim zweiten, dritten und vierten Mal, wenn er die gleiche Aufgabe ausführt" heißen sollen, aber das ist auch ein schrecklicher Name.

Apple hat den Aktivitätsmonitor neu geschrieben, als es mehrere neue Funktionen einführte und komprimierten Speicher hinzufügte, sodass einiges davon nicht mehr für macOS gilt, das keinen „inaktiven Speicher“ anzeigt, aber dies gilt immer noch für die Speicherverwaltung von Mac OS X, wie hier dokumentiert Version der Aktivitätsanzeige: https://support.apple.com/en-us/HT201538

So habe ich es jemandem erklärt, dem das Konzept des virtuellen Speichers unter OS X neu ist:

  • Wired : Das System kann nicht ohne diese Menge an RAM laufen (nie getauscht)
  • Aktiv: Programme verwenden diesen Speicher jetzt oder in den letzten Sekunden wirklich
  • Inaktiv: Dinge, die Programme von der langsamen Platte oder anderswo gelesen haben und die sie angeblich nie wieder brauchen. Ingenieure wissen es besser, Sie werden in ein paar Minuten zu Facebook zurückkehren oder Word neu starten, nachdem Sie es beendet haben. Auf Computern passieren immer wieder die gleichen Dinge.
  • Kostenlos: Total verschwendeter RAM – das System benötigt nur ein oder zwei MB freien Speicherplatz, um kurzfristige Zuweisungsanforderungen zu erfüllen. Für die größten Zuweisungen verwendet es einfach einen Teil des inaktiven RAMs, indem es es aktiv/verdrahtet zuweist und die Informationen darüber entfernt, was es früher enthielt.

Das Problem tritt auf, wenn Free+Inactive weniger als ungefähr 1/3 der Gesamtsumme ausmachen und dann kann es wirklich langsam werden.

Inaktiver Speicher ist Bonusgeschwindigkeit / Double Duty RAM. Es ist jederzeit kostenlos, macht aber auch wiederholte Aufgaben viel, viel schneller, wenn das System richtig geraten und etwas im RAM behalten hat, das Sie noch einmal tun werden. Es ist schneller als ausgelagerter Speicher, da es bereits im RAM geladen ist und Dinge beschleunigt, wenn das virtuelle Speichersystem gute Vermutungen anstellt.

Wenn Sie sich fragen, ob RAM ein Problem ist, können Sie, anstatt sich jede der 4 Kategorien anzusehen (5, wenn Sie den aktiven Austausch mitzählen), W + A als Verlangsamung eines neuen Programms / einer neuen Aufgabe und F + I als Beschleunigung eines neuen Programms koppeln neues Programm/Aufgabe. Je mehr F+I Sie haben, desto mehr neue Programme können Sie starten, bevor sich der Arbeitsspeicher auf das Auslagern verlassen muss, um den zugewiesenen Speicher zu jonglieren.

Sie müssen nicht wirklich wissen, wie Swap funktioniert, da ich es oben erwähnt habe. Wenn ein Programm im Leerlauf ist und tagelang (oder stundenlang) nicht verwendet wurde, schreibt das System diesen RAM auf die Festplatte, anstatt das Programm zu beenden. Dadurch kann das System alle möglichen Dinge in Bezug auf die Speicherverwaltung mischen und handhaben und verhindert, dass jedes Programm untereinander sprechen muss, um sich zu einigen, wer weniger Speicher verwendet, wenn das System erschöpft ist.

Hier ist ein reales Beispiel dafür, wie inaktiver RAM verwendet wird.

  1. Beenden Sie alle Apps und stellen Sie sicher, dass die beiden Apps, die wir testen, nicht auf automatischen Start eingestellt sind, wenn Sie sich anmelden
  2. Starten Sie Ihren Mac neu
  3. Schalten Sie Ihren Aktivitätsmonitor ein und beobachten Sie den gesamten Arbeitsspeicher
  4. Zeit, wie lange es dauert, Anwendung A zu starten (MS Word wäre eine gute Wahl)
  5. Beenden Sie A
  6. Zeit, wie lange es dauert, Anwendung B zu starten (etwas von Adobe wäre auch gut)
  7. Beende B
  8. Zeit, wie lange der zweite Start von A dauert
  9. Beenden Sie A
  10. Der zweite Start von Time B.
  11. Zeit A beginnt zum dritten Mal, während B läuft.

Sie sollten beim zweiten/dritten Start dramatische Beschleunigungen sehen, da das System lernt, die Dinge, die diese beiden Apps zum Ausführen benötigen, im inaktiven RAM zu halten.


In Ihrem Fall bedeutet die Summe von Wired und Active, dass wahrscheinlich ein Wechsel auf die Festplatte stattfindet und Ihr Mac nicht so schnell ist, wie er sein könnte, da Ihr inaktiver RAM nicht groß genug ist, um alle Dinge zu speichern, die Sie möglicherweise wiederverwenden müssen . Wenn Sie ein schnelles SSD-Laufwerk haben, ist diese RAM-Zuweisung in Ordnung, und anstatt langsamer zu werden, sobald weniger als die Hälfte Ihres RAMs F + I ist, können Sie die Dinge näher auf etwa 1/4 des gesamten RAMs für F reduzieren +I, bevor ich eine merkliche Langsamkeit sehe. Diese Richtlinien sind allgemein, und Sie sollten ein vm_stat 15oder ein ähnliches Intervall beobachten, um sicherzustellen, dass das kontinuierliche und mittlere Wechseln der Lautstärke Ihren Mac nicht verlangsamt.

Wow, sehr vollständige Antwort für Neuankömmlinge wie mich. Vielen Dank, sehr geschätzt :)
Yup - ich kann für alle antworten - ein für alle Mal können die Leute es bearbeiten, um es besser zu machen, und Sie bekommen Ihre Antwort. Ziemlich coole Idee für eine Website, auf der Leute kommen und interessante Fragen stellen können. :-)
Wow! Schöne Antwort!
Ich wünschte, sie hätten es in meiner OS-Klasse so erklärt.
Ich habe das niemals gewusst. Gute Antwort. +1.
Inaktiver Speicher ist nur in bestimmten Szenarien Bonusgeschwindigkeit. Wenn Sie eine Vielzahl von Programmen verwenden, kann dies ein Problem darstellen, da das Freigeben von inaktivem Speicher bei Bedarf offensichtlich Zeit in Anspruch nimmt. Zeit, die beim Start der nächsten nicht zwischengespeicherten App hinzugefügt wird. Auf meinem Mac mini (i5) benötigt Photoshop CS5 7 bis 10 Sekunden weniger zum Starten, wenn ich vorher inaktiven Speicher lösche.
Inaktiver Speicher ist großartig, solange Sie nicht visualisieren, selbst wenn Sie mehr als genug Speicher für die VM und OS X haben; Festplatten-Caches während der Visualisierung verlangsamen Ihren Mac und der zwischengespeicherte Speicher hilft nicht.
Die VM-Software (Fusion, Virtualbox, was auch immer) sollte ziemlich gut darin sein, den Speicher verkabelt oder aktiv zu halten, wenn die VM davon profitieren würde. Gibt es ein bestimmtes Problem, das Sie sehen?
Die Bereinigung von @cvsguimaraes erfolgt nicht sofort; chat.stackexchange.com/transcript/message/12107920#12107920
@kbyrdm VM bedeutet hier wahrscheinlich virtuellen Speicher (nicht virtuelle Maschine).
@GrahamPerrin Aus diesem Grund verwenden einige Leute Skripte, um den Speicher im Hintergrund mit niedriger IO-Priorität zu löschen.
Ich bin mir nicht sicher, ob dies an anderer Stelle zitiert wird, aber hier ist eine gute Referenz (siehe insbesondere "Seitenlisten im Kernel": developer.apple.com/library/mac/documentation/Performance/…
Spät auf der Party auf eine SSD umzusteigen, kann eine äußerst schlechte Idee sein. Während der Leistungsabfall viel geringer ist als bei sich drehenden Medien, können die häufigen Schreibvorgänge in dieselben Blöcke den Flash-Speicher ziemlich schnell zerstören (gemessen in Jahren, aber nicht Jahrzehnten).
@agentroadkill Swapping ist immer eine schlechte Idee - in der Praxis habe ich kein Problem mit einer einzelnen Apple SSD gesehen. Sogar SSDs von Drittanbietern schneiden an dieser Front wunderbar ab - ich verstehe die Theorie, dass Sie Ihre Schreibvorgänge irgendwann erschöpfen werden, in der Praxis sehe ich einfach keine Leute, die bereit sind, sich mit Systemen abzufinden, die genug tauschen, um ein Problem zu sein.
@bmike Ich habe gelesen, dass Betriebssysteme nach Mavericks IIRC Speicher anders handhaben und einfach mehr davon laufenden Prozessen zuweisen und dann austauschen, wenn neue Apps geöffnet werden. Habe ich das richtig verstanden? Wenn nicht, warum erhalten wir das Tortendiagramm für den Arbeitsspeicher nicht mehr im Aktivitätsmonitor?
Einige Benutzer, darunter auch ich, haben sich darüber beschwert, dass inaktiver Speicher sich weigert, gelöscht zu werden. Das ist aber schon lange kein Thema mehr. Keine Ahnung ob es ein Bug war oder was. Eine Beispielbeschwerde: superuser.com/questions/460658/…
Sollte "Festplattencache" oder so heißen. Es heißt jetzt "gecachte Dateien". Das Äquivalent wird in Linux "cached mem" genannt top.
Ist das der Grund, warum das erste Mal, wenn ich ein Programm öffne, viel langsamer ist als das zweite?
Ja, @JBis - in vielen Fällen gibt es mehrere Caching-Ebenen, sodass beim ersten Öffnen gemeinsam genutzte Bibliotheken geladen, private Bibliotheken geladen, Caches und Anwendungsstatus aus dem Speicher gelesen und möglicherweise eine Internetprüfung auf Updates durchgeführt werden müssen - und der zweite Start kann dramatisch schneller sein aufgrund dieser speziell sowie andere Mechanismen.
@bmike In Bezug auf sudo purge(was anscheinend keinen Zweck hat ), was machen Apps mit dem Anspruch, Speicher zu bereinigen und zu löschen? Und sind sie nützlich? (Vielleicht eine ganz neue Frage) Beispiel: itunes.apple.com/us/app/memory-clean-free-up-memory/… itunes.apple.com/us/app/dr-cleaner-disk-mem-clean /…
Wie könnte das Neuladen von Facebook möglicherweise die zuvor zugewiesenen Teile des Speichers wiederverwenden?

Die Zahl, die am wichtigsten ist, um festzustellen, ob Ihr Mac Speicher „gestresst“ wird, ist die Zahl „Auslagerungen“. In der Aktivitätsanzeige in Mavericks wird dies nicht mehr angezeigt, sie zeigen jetzt die Informationen in 'Swap Used:'.

Auslagerungen bedeutet, dass das Betriebssystem festgestellt hat, dass nicht genügend RAM verfügbar ist, um alle angeforderten Anwendungen und Prozesse auszuführen. Was es dann tut, ist, Teile des Speichers, von denen es feststellt, dass sie nicht aktiv verwendet werden, auf die Festplatte auszulagern. Dies bedeutet, dass RAM-Speicher (schnell) in HDD-Speicher (langsam) geändert wird. Wenn dies häufig vorkommt, weil viele Anwendungen ausgeführt werden und der Benutzer zwischen den Anwendungen hin- und herwechselt, dann gibt es viele Auslagerungen und Einlagerungen.

Wenn Sie feststellen, dass die Page-Outs zunehmen, sollten Sie Maßnahmen ergreifen.

Das Problem auf meinem Mac ist, dass der "inaktive" Speicher anscheinend nie gelöscht wird, es sei denn, ich führe eine manuelle Bereinigung im Befehlsfenster durch. Es baut sich auf und baut sich auf, bis ich ein Popup-Fenster erhalte, das mich auffordert, Anwendungen zu beenden. Selbst nachdem ich alle meine Anwendungen beendet habe, habe ich immer noch zu viel inaktiven Speicher, um irgendetwas auszuführen. Auf meinem Mac mit der neuesten Version von Mountain Lion ist es also NICHT wahr, dass inaktiver Speicher zurückgefordert wird, wenn der freie Speicher knapp wird. Entweder habe ich irgendwo eine App, die einen Teil des inaktiven Speichers gesperrt hat, der nie freigegeben wird, oder das iOS hat einen Fehler. (Ich habe 8 GB physischen Speicher ... das sollte reichen!)

Ich bin bei dir, Ernie ... in Mac OS 10.6 und 10.7 auf einem MacBook Pro und Mac Pro schleicht sich inaktiver Speicher ein und das Betriebssystem beginnt mit dem Austauschen (gemäß "Page Ins" und "Page Outs") und das System wird bis zum Stillstand kriechen. Der inaktive Speicher scheint nie zurückgefordert zu werden. Ich muss "Purge" verwenden, um den inaktiven Speicher zurückzugewinnen und mein System wieder aktiv zu machen.
Woher kommt dieses Popup-Fenster? Was ist die Speichersituation, wie berichtet, vm_statwenn es passiert? Was macht Sie so sicher, dass es "zu viel" inaktiven Speicher geben kann, "um etwas auszuführen"? Soweit es mich betrifft, ist dies alles Hörensagen, das keine Unterstützung im Code hat, von dem Sie wissen, dass er tatsächlich im Kernel ausgeführt wird.
Sieht Ihre Speicherzuordnung so aus, wie Gus es präsentiert hat? Hier sprechen wir von einem Gigabyte kabelgebunden und anderthalb Gigabyte aktiv. Die inaktive / kostenlose Ration sieht für mich in dieser Situation gut aus. Vielleicht würden Sie eine zweite Frage stellen, die Ihre Situation beschreibt, in der die Dinge zusammenbrechen?
@Eric hast du jemals herausgefunden, wie du löschen kannst, um dein inaktives Gedächtnis zurückzubekommen?
@Ernie kurze Antwort: Nein. Längere Antwort: Seit der ursprünglichen Frage sind fast 7 Jahre vergangen, und selbst ich (der jahrelang auf ein Upgrade auf eine neue MacOS-Version warte) bin auf 10.13 und 10.14, von denen keines mehr inaktiven Speicher meldet. Ich kann mich nicht erinnern, ob ich das Problem jemals auf 10.6 oder 10.7 gelöst habe. Ich habe kein ähnliches Verhalten in 10.13 oder 10.14 bemerkt.

Vielen Dank an alle Poster und Kommentatoren, dies war ein lehrreicher und nützlicher Thread für mich. Meine letzten Erfahrungen könnten für jemanden nützlich sein. Ich verwende meinen Mac Mini mit OS X10.8.1 und mit 16 GB RAM ausschließlich für Prototyping-Software, die woanders ausgeführt wird. Ich kann Ihnen versichern, dass ich nicht „in ein paar Minuten zu Facebook zurückkehren oder Word nach dem Beenden neu starten werde“ – ich mache das stattdessen auf meinem Macbook.

Meine Aufgabe bestand darin, eine große Menge Daten zu sammeln, I/O ist zeitaufwändig, also ist die Idee, so viele Daten wie möglich auf einen Schlag in den RAM zu lesen, sie dort zu verarbeiten und dann zurück auf die Festplatte zu schreiben , dann wiederholen Sie den Vorgang, bis er fertig ist, was einige Stunden dauert. Was ich sehe, ist, dass jedes Mal, wenn ich einen neuen Datenblock einlese, der inaktive Speicher springt – ich nehme an, dass die System-KI annimmt, dass ich den alten Block wieder verwenden möchte, was ich nicht tue – und der freie Gedächtnis fällt.

Nach ein paar Iterationen dieses Prozesses sinkt der freie Speicher auf wenige MB, der inaktive Speicher gibt ein paar weitere MB frei, und schließlich, nach einigen Minuten des Hin- und Herpendelns zwischen freiem und inaktivem Speicher, wird der inaktive Speicher freigegeben ein paar GB auf einmal. Alles ist so, wie @bmike es beschreibt, und sowohl vm_stat 15 als auch der Aktivitätsmonitor zeigen 0 Auslagerungen an.

Außer vielleicht nicht ganz. Einige Male sind die Dinge reibungslos vorangegangen, ich mache mich auf den Weg, um einen Kaffee oder ein Abendessen zu trinken, und überwache den Prozess nicht, und was nicht passieren sollte, passiert, und der Prozess wirft plötzlich eine Bootsladung von Page-Outs ab und verlangsamt sich erheblich. Stellen Sie fest, dass es wahrscheinlich mein beschissener Code ist, der das Problem verursacht, aber ich wünschte, ich könnte den inaktiven Speicher ausschalten, nur um diese Quelle der Variabilität zu beseitigen. Ist es kaputt? Ich würde das überhaupt nicht sagen, aber ich würde sagen, dass die Speicherverwaltung für meinen Anwendungsfall nicht optimiert ist.

Inaktiver Speicher , der von kürzlich aktiven und beendeten Apps verwendet wird. OS X hält es reserviert, falls der Benutzer das Programm erneut öffnen möchte. In diesem Fall muss OS X keinen Speicher verschieben, der die Leistungsgeschwindigkeit beschleunigt. Wenn Sie das Programm nicht erneut öffnen, wird nach einer Weile der Speicher des Inaktiven freigegeben oder verschoben.(c)

Diese Funktion ist cool, wenn Sie viel RAM haben, aber wenn dies nicht der Fall ist, ist es ziemlich nervig. Eigentlich dreht sich alles um Apfelkram. Wenn Sie ein leistungsstarkes Gadget oder einen Mac haben, ist alles cool, aber wenn Ihr Gerät älter wird, verlangsamen alle Funktionen es.

Sie müssen also spezielle Tricks anwenden, um es zu verwalten.

Für inaktiven Speicher gibt es einen Befehl purge, um ihn freizugeben.

Im Grunde ist es kaputt. Inaktiver RAM sollte automatisch "geleert" werden, wenn der freie RAM niedrig ist. Was bringt es, RAM für zuvor geöffnete Anwendungen zu halten, in der Hoffnung, dass der Benutzer es erneut öffnet? Die Tatsache, dass Free RAM niedrig ist, weist darauf hin, dass vorhandene ACTIVE-Anwendungen möglicherweise nicht über genügend RAM verfügen und JETZT ausgetauscht werden. GB RAM für geschlossene Anwendungen aufzubewahren, ist einfach dumm. Laut Apples eigener Beschreibung sollte inaktiver RAM automatisch gelöscht oder ausgeliehen werden, wenn der freie RAM niedrig ist. Dies ist eindeutig nicht der Fall.

Virtuelle Speichersysteme machen große Mengen an freiem RAM zu einer Verschwendung. Wenn ein Programm nach einer Speicherzuweisung fragt, bildet der Kernel mehr virtuellen Speicher und verteilt ihn wie Süßigkeiten. Nur wenn ein Programm diesen Speicher mit tatsächlichen Daten füllt, muss das System im RAM Platz für diese Operation schaffen. Dieses "Platzmachen" zieht aus freiem und dann inaktivem Speicher - und die Verzögerung, um inaktiven Speicher freizugeben, ist unermesslich gering. Die Bereinigung, die Sie beschreiben, ist genau das, was passiert - nur dass Sie implizieren, dass das System die Bereinigungsarbeit im Voraus erledigen sollte, wenn das System faul ist, und diese Arbeit nur bei Bedarf erledigt.
@bmike Aber würde das nicht bedeuten, dass, wenn kein freier RAM mehr vorhanden ist und ich eine neue App starte, der inaktive RAM-Anteil abnehmen und der aktive steigen würde? Das ist eindeutig nicht der Fall und meiner Erfahrung nach wird das System extrem langsam, wenn kein freier RAM mehr vorhanden ist, obwohl Gigabyte inaktiver RAM vorhanden sind. Das System scheint es vorzuziehen, die Festplatte auszutauschen, bevor es in Betracht zieht, inaktiven RAM wiederzuverwenden.
@codingFriend1 Seien wir genau - wie viele freie Seiten vm_stathalten Sie für "keinen freien RAM mehr"? Wenn der Mac "langsam" ist, wofür zählen die Ein- und Auslagerungen vm_stat 1? Jedes Mal, wenn ich dies auf einem problematischen System betrachte, möchte ich es vm_stat 15in einem Terminalfenster ausführen (oder mich beim Dateisystem anmelden), damit ich genau wissen kann, wie die Paging-Aktivität ist, wenn ich entscheide, ob/wann ich Dinge wie die tune Pager. Dieses Beispiel hat 100 MB freien RAM, also ist es wahrscheinlich nicht einmal unter Paging-Druck.

Inaktiver Speicher beschleunigt im Wesentlichen das Öffnen ehemals geschlossener Prozesse. Wenn Sie feststellen, dass das Mac OS zu viel Speicher beansprucht, den Sie nicht wirklich benötigen, wie von den Dutzenden von Registerkarten, die Sie in Safari oder Chrome geöffnet haben, verwenden Sie einfach den Befehl „Löschen“ im Terminal. Verwenden Sie in OS X Mavericks stattdessen einfach 'sudo purge' (Sie müssen Ihr Passwort eingeben). Es spart wertvolle Sekunden, wenn Sie etwas wieder öffnen müssen, aber wenn Sie ein RAM-intensives Spiel spielen oder eine RAM-hungrige Anwendung öffnen möchten, empfehle ich auf jeden Fall die Verwendung des Purge-Befehls.

Wie unterscheidet sich das von anderen Antworten?