Wie deaktiviere ich Mac OS X von der Verwendung von Swap, wenn noch" inaktiver " Speicher vorhanden ist?

Ein häufiges Phänomen in meinem täglichen Gebrauch (und einigen anderen laut verschiedenen Beiträgen im Internet) von OS X scheint das System langsam zu werden, wenn kein "freier" Speicher mehr verfügbar ist. Angeblich ist dies auf einen Austausch zurückzuführen, da eine hohe Festplattenaktivität offensichtlich ist und vm_stat viele Ausfälle meldet. (Korrigiere mich von falsch)

Die Menge an" inaktivem " RAM beträgt jedoch normalerweise etwa 12,5%-25% des gesamten verfügbaren Speichers (^1.) beim Tauschen beginnt / tritt auf / endet.

Nach http://support.apple.com/kb/ht1342 :

Inaktiver Speicher

Diese Information im Speicher wird nicht aktiv verwendet, sondern war kürzlich verwendet.

Wenn Sie beispielsweise Mail verwendet und dann beendet haben, ist der RAM, der Mail verwendet wurde, wird als inaktiver Speicher markiert. Dieser inaktive Speicher ist verfügbar für die Verwendung durch eine andere Anwendung, genau wie freier Speicher. Wenn Sie jedoch E-Mails öffnen, bevor sie inaktiv sind speicher wird von einem andere Anwendung, Mail wird schneller öffnen, weil es inaktiv ist speicher wird in aktiven Speicher umgewandelt, anstatt E-Mails von der langsamere Festplatte.

Und nach http://developer.apple.com/library/mac/#documentation/Performance/Conceptual/ManagingMemory/Articles/AboutMemory.html :

Die inaktive Liste enthält Seiten, die sich derzeit in physischer Speicher, auf den kürzlich jedoch nicht zugegriffen wurde. Diese Seiten gültige Daten enthalten, aber kann jederzeit aus dem Speicher freigegeben werden.

Also im Grunde genommen: Wenn ein Programm beendet wurde, wird sein Speicher als inaktiv markiert und sollte jederzeit beanspruchbar sein. Dennoch wird OS X es vorziehen, Speicher für die Auslagerungsdatei auszutauschen, anstatt nur diesen Speicher zu beanspruchen, wenn der "freie" Speicher zu niedrig wird.

Warum? Was ist der Vorteil dieses Verhaltens gegenüber dem sofortigen Freigeben von inaktivem Speicher und dem Berühren der Auslagerungsdatei? Einige Quellen (^2.) darauf hin, dass OS X Seite aus die "Inaktiv" - Speicher zu tauschen, bevor Sie Sie loslassen, aber das macht keinen Sinn, jetzt bedeutet es, wenn der Arbeitsspeicher losgelassen werden können und aus dem Speicher zu jeder Zeit? Tauschen ist teuer, Freigeben ist billig, oder?

Kann dieses Verhalten mit einer Präferenz oder einem bekannten Hack geändert werden? (Vorzugsweise eine, die das vollständige Deaktivieren von swap/dynamic_pager und den Neustart nicht beinhaltet...)

Ich schätze den Befehl purge als nun, das Konzept der Reparatur von Festplattenberechtigungen, um freien Speicher zu erzwingen, aber das sind Möglichkeiten, schmerzhaft mehr freien Speicher zu erzwingen, als die Swap/Release-Entscheidungslogik tatsächlich zu beheben...

Übrigens wurde hier eine ähnliche Frage gestellt: http://forums.macnn.com/90/mac-os-x/434650/why-does-os-x-swap-when/ und hier: http://hintsforums.macworld.com/showthread.php?t=87688 aber obwohl das OPs die Kernfrage erneut gestellt hat, adressiert keine der Antworten eine Antwort auf es...

^1. UPDATE 17-mar-2012 Seit ich diese Frage zum ersten Mal gestellt habe, bin ich von 4 GB auf 8 GB installierten RAM gestiegen, und das Problem bleibt bestehen. Die Menge an" inaktivem " RAM betrug zuvor 0,5 GB-1,0 GB und liegt jetzt normalerweise bei 1,0-2,0 GB, wenn der Austausch beginnt/auftritt/endet, dh es scheint, dass etwa 12,5% -25% des RAM von osx-Kernellogik als inaktiv erhalten bleiben.

^2. Beispielsweise https://apple.stackexchange.com/questions/4288/what-does-it-mean-if-i-have-lots-of-inactive-memory-at-the-end-of-a-work-day :

Sobald Ihr gesamter Speicher verwendet wird (freier Speicher ist 0), schreibt das Betriebssystem inaktiver Speicher für die Swapdatei, um mehr Platz im aktiven Speicher zu schaffen.

UPDATE 17-mär-2012

Hier ist eine Zusammenfassung der Methoden, die bisher vorgeschlagen wurden, um zu helfen:

Die Säuberung Befehl

" Wird verwendet, um die anfänglichen Startbedingungen mit einem kalten Festplattenpuffercache für die Leistungsanalyse zu approximieren. Es wirkt sich nicht auf anonymen Speicher aus, der über malloc, vm_allocate usw. zugewiesen wurde."

Dies ist nützlich, um zu verhindern, dass osx den Festplattencache vertauscht (was lächerlich ist, dass osx dies tatsächlich tut), aber mit dem Nachteil, dass der Festplattencache freigegeben wird, was bedeutet, dass wenn der Festplattencache nicht ausgetauscht werden sollte, würde man einfach enden up mit einem kalten Festplattenpuffer-Cache, wahrscheinlich die Leistung negativ beeinflussen.

Die Freemememory App und / oder Reparieren Sie die Festplattenberechtigungen, um freien Speicher zu erzwingen

Hilft nicht, Speicher freizugeben, sondern nur einige Gigabyte Speicherinhalt vom RAM auf die HD zu verschieben. Am Ende verursacht dies viele Swap-Ins, wenn ich versuche, die Anwendungen zu verwenden, die beim Freigeben von Speicher geöffnet waren, da sich ein Großteil der VM jetzt im Swap befindet.

Beschleunigung der Swap-Allokation mit dynamicpagerwrapper

Scheint eine gute Sache zu sein, um die Swap-Nutzung zu beschleunigen, adressiert jedoch nicht das Problem des OSX-Swappings, solange noch inaktiver Speicher vorhanden ist.

Deaktivieren von Swap durch Deaktivieren von dynamicpager und Neustart von

Dadurch wird osx gezwungen, Swap nicht zum Preis des Systemspeichers zu verwenden, wenn der gesamte Speicher verwendet wird. Nicht lebensfähig Alternative...

Deaktivieren von Swap mit einem gehackten Dynamicpager

Ähnlich wie beim Deaktivieren von dynamicpager oben zeigen einige Auszüge aus den Kommentaren zum Blogbeitrag, dass dies keine praktikable Lösung ist: "Der inaktive Speicher ist wie gewohnt hoch". "wenn Ihrem System der Speicher ausgeht, hängt das gesamte Betriebssystem...", "wenn Sie die gesamte Menge an Speicher des Mac verbrauchen, wird die Maschine wahrscheinlich hängen"

Zusammenfassend ist mir immer noch keine Möglichkeit bekannt, Mac zu deaktivieren OS X von der Verwendung von Swap, wenn noch "inaktiver" Speicher vorhanden ist. Wenn es nicht möglich ist, gibt es vielleicht irgendwo eine Erklärung, warum osx es vorzieht, Speicher auszutauschen, der jederzeit aus dem Speicher freigegeben werden kann ?

Author: Community, 2011-07-31

5 answers

Per Definition ist inaktiver Speicher Speicher, der bereit ist, ausgelagert zu werden, und das Auslagern kann das Schreiben in Swap beinhalten. Dies ist keine Art von problem oder Problem, das optimiert werden muss; es ist in der Tat OS X arbeiten so konzipiert.

Leider sind Tech-Support-Autoren keine Kernel-Entwickler, und das Zitat des Apple Knowledge Base Support-Artikels ist einfach falsch, wenn behauptet wird, dass inaktiver Speicher von Programmen nicht verwendet wird. Wenn Sie ein Programm beenden, alle seine resident Memory wird frei; es hört nicht bei Inaktiv auf. Der zweite Link zur - Entwicklerseite, der beschreibt, wie die Speicherverwaltung funktioniert, ist jedoch eine gute Ressource, wenn er vollständig gelesen wird.

Es gibt viele Missverständnisse darüber, was" inaktiver Speicher " in OS X bedeutet.Entgegen den Missverständnissen ist nicht der gesamte inaktive Speicher leer, ungenutzt, Cache oder bereinigbar. Tatsächlich kann aktiver Speicher auch zwischengespeichert oder gelöscht werden, wenn kürzlich darauf zugegriffen wurde. Viel inaktiver Speicher auch enthält Daten, die nicht einfach verworfen werden können. Wenn es verworfen würde, würden Programme abstürzen, weil die verworfenen Seiten gültige Daten enthalten hätten (wie das Zitat von der OS X-Entwicklerseite sagt) und Programme erwarten, dass Daten, die sie im (virtuellen) Speicher gespeichert haben, nicht einfach verschwinden.

Inaktiver Speicher enthält dieselben Datentypen wie aktiver Speicher. Der einzige Unterschied besteht darin, dass OS X festgestellt hat, dass einige Speicherblöcke nicht aus a gelesen oder in a geschrieben wurden während.

Der Grund, warum OS X einige Speicher als inaktiv und andere Regionen als "aktiv" klassifiziert, hat mit dem Auslagern zu tun. Wenn der Speicher knapp wird, müssen Sie einige Daten auslagern. Die Frage ist, welche Daten? Wenn Sie Daten auslagern, die ein Programm sofort wieder benötigt, verschwendet es Zeit und führt nichts aus. Sie möchten also Speicher auslagern, den ein Programm nicht sofort erneut verwenden muss.

Antizipieren, welche Seiten in der zukunft ist schwierig, weil ein Programm seinen virtuellen Speicher verwenden kann, aber es mag und nicht das Betriebssystem nichts darüber sagen, was seine Pläne sind. Aber als Heuristik sind die meisten Programme in ihrer Speichernutzung" klebrig"; Wenn sie seit einiger Zeit keinen Speicher mehr verwendet haben, verwenden sie diesen Speicher wahrscheinlich weiterhin nicht und verwenden wahrscheinlich weiterhin Speicher, den sie kürzlich verwendet haben.

Wenn das Betriebssystem also beschließt, einige Daten auszulagern, wird die Strategie des Austauschs von Seiten verwendet, die nicht verwendet wurden kurzem. Aus diesem Grund sortiert OS X den von Programmen belegten Speicher in zwei Stapel von "aktiv" und "inaktiv"."Der oben veröffentlichte Link zur Entwicklerseite sagt, wenn er vollständig gelesen wird, wie dieser Prozess abläuft:

  • Wenn der Speicher niedrig wird, durchläuft das Betriebssystem die aktiven Speicherseiten und setzt jeweils ein Flag.
  • Wenn ein Programm eine Seite liest oder schreibt, wird das Flag gelöscht.
  • Wenn das Flag nach einiger Verzögerung nicht gelöscht wird, wird diese Seite wird in den "inaktiven" Stapel sortiert.
  • Wenn ein Programm auf eine" inaktive " Seite zugreift, wird sie wieder in den "aktiven" Stapel gelegt.
  • Wenn der Speicher leer ist, werden die" inaktiven " Seiten ausgelagert.

Beachten Sie, dass dieser Sortiervorgang, um zu entscheiden, welcher Speicher ausgetauscht werden soll, in allen modernen Betriebssystemen ähnlich ist. Linux hat die gleichen zwei Listen von aktiven und inaktiven Seiten, wie beschrieben in Verständnis des Linux Virtual Memory Managers. Windows vielleicht etwas ein bisschen anders mit mehr als zwei Klassen der Aktualität; ich kann nicht finden, eine aktuelle, zuverlässige technische Beschreibung in dem moment. Weitere Implementierungen werden auf der Wikipedia-Seite mit dem Titel "Page replacement algorithm" diskutiert. Der einzige Unterschied zu OS X war, wie die Statistiken angezeigt wurden: Jemand entschied, dass es eine gute Idee wäre, separate Zahlen für aktiv und inaktiv in top oder Activity Monitor anzuzeigen. Im Nachhinein war dies wahrscheinlich keine so gute Idee (und das hat sich in OS X 10.9 geändert.)

Dieser Vorgang zum Setzen und Löschen von Flags und zum Verwalten aktiver/inaktiver Heaps benötigt ein wenig Prozessorleistung. Aus diesem Grund tut OS X dies nicht, wenn viel freier Speicher vorhanden ist. Die ersten Programme, die Sie starten, werden also als "aktiver" Speicher angezeigt, bis der freie Speicher niedrig läuft.

Wenn Sie also von einer leeren Tafel ausgehen und immer mehr Programme öffnen, können Sie erwarten, dass Sie den folgenden Fortschritt in der Aktivität sehen Monitor:

  • Erstens gibt es viel "freien" Speicher und sehr wenig inaktiv. Dies liegt daran,dass der Speicherflagger nicht gestartet wurde.
  • Wenn die Menge an freiem Speicher abfällt, startet OS X mit dem Ausführen seines Speicherflaggers, und Sie sehen, wie die Menge an "inaktiv" steigt. Jedes Bit von " inaktiv "war zuvor "aktiv"."
  • Wenn Ihnen der freie Speicher ausgeht, werden Seiten aus dem Stapel "inaktiv" ausgelagert. Der Speicher-Flagger wird auch Full Tilt laufen sortieren von Speicher in aktiv und inaktiv. Normalerweise sehen Sie während des Schreibens von Swap eine Menge "inaktiv", was darauf hinweist, dass der Speicherflagger das tut, was er soll.

Pages müssen eingestuft werden als inaktiv, bevor Sie ausgelagert. Das ist, was das Zitat von der Apple Developer Site bedeutet, wenn es heißt "Diese Seiten enthalten gültige Daten, können aber jederzeit aus dem Speicher freigegeben werden."Dies steht im Gegensatz zu aktiven Seiten, die nicht veröffentlicht werden bis nachdem sie zu Inaktiv degradiert wurden. Es gibt verschiedene Möglichkeiten, Seiten freizugeben; Wenn die Seite einer Datei zugeordnet wurde und nicht geändert wurde, kann sie sofort gelöscht und bei Bedarf erneut gelesen werden. Ebenso, wenn es sich um Speicher handelt, der zuvor ausgetauscht und nicht geändert wurde, seit er ausgetauscht wurde. Programme können auch explizit Cache und reinigbaren Speicher zuweisen, um Daten zu speichern, die bei Bedarf vergessen und neu erstellt werden können (aber der Grund, warum ein Programm Cache zuweisen würde, ist, wenn es dauert erhebliche Zeit, um diese Daten neu zu erstellen.) Aber ein Großteil des inaktiven Speichers ist Speicher, in den Programme gültige Daten geschrieben haben, und das Auslagern dieser Daten erfordert das Schreiben zum Tauschen.

Wenn Sie sich daher die Menge an "inaktivem" Speicher im Aktivitätsmonitor ansehen und feststellen, dass gleichzeitig mit dem Schreiben des Computers in Swap viel inaktiv ist, erfahren Sie nur, dass das System wie vorgesehen funktioniert.

Es gibt auch eine Verwechslung zwischen inaktivem Speicher und Dateicache. Ich bin nicht sicher warum gibt es diese Verwirrung, weil Activity Monitor sie bereits unter separaten Überschriften auflistet. Cache ist Speicher, der zum Speichern aktueller Daten verwendet wird, die in das Dateisystem gelesen oder aus diesem geschrieben wurden, falls erneut darauf zugegriffen werden muss. Wenn der Speicher niedrig ist, neigt OS X dazu, den Cache zuerst loszuwerden. Wenn Sie Swap-Thrashing haben und Activity Monitor einen großen Stapel Cache anzeigt (NICHT inaktiv), dann wäre das ein Problem. Aber inaktives Gedächtnis ist eine andere Sache.

Wenn in zweifel, ignorieren Sie die Unterscheidung zwischen "inaktiv" und " aktiv."Betrachten Sie sie als einen Klumpen von" Speicher, der von Programmen verwendet wird " und addieren Sie die beiden Zahlen zusammen. Dies ist, was jedes andere Betriebssystem tut, wenn Sie über die Speichernutzung zu sagen.

HINWEIS für OS X 10.9: Mavericks führten "Speicherkomprimierung" ein, die mehr oder weniger eine andere Swap-Ebene ist. Aktive Seiten werden jetzt als inaktiv klassifiziert und dann komprimiert (was je nachdem, welche Tools Sie verwenden, möglicherweise als Kernelspeicher angezeigt wird mit,) dann geschrieben, um Swap als Speichernutzung zunimmt. Mavericks hat auch aufgehört, separate Nummern für aktiv und inaktiv im Aktivitätsmonitor anzuzeigen, da es sich als nicht nützlich herausstellt, insbesondere angesichts der damit verbundenen Missverständnisse.

 21
Author: crowding,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2014-04-03 19:28:05

Es gibt derzeit keine einfache Möglichkeit, das Swappiness-Verhalten von Macos X anzupassen (oder so heißt es). Es sind jedoch einige Hacks verfügbar (erfordert Developer account & SDK):

Http://cestdelamerde.com/archives/22-Killing-Mac-OS-X-Swapping-How-To-Disable-dynamic_pager.html

Http://dropsafe.crypticide.com/article/3848

Viel Glück!

Postscript. Ich denke, Sie möchten diese Antwort (auch von mir) lesen, um eine allgemeinere Überprüfung von welche aktiven, inaktiven und anderen Speicher in MacOSX: Verdrahteter Speicher vs. aktiver Speicher in OS X

 4
Author: bubu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-03-20 10:17:34

Keine dauerhafte Lösung, aber zumindest kann es helfen, inaktiven Speicher zurückzugewinnen, wodurch möglicherweise der gefürchtete Austausch vermieden wird: http://itunes.apple.com/nz/app/freememory/id460931672?mt=12

Das tool ist kostenlos und ziemlich einfach zu bedienen. Wählen Sie nach dem Start die Option "Freier Speicher" in der Systemsymbolleiste/ - menü.

Im Gegensatz zur Anzeige des ActivityMonitor-Speichers wird nur der freie Speicher angezeigt, was ein besserer Indikator dafür zu sein scheint, ob ein Austausch stattfindet oder nicht.

 4
Author: Jörn Zaefferer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2012-01-23 14:56:06

Beginnend mit OS X 10.5 gibt es offensichtliche Speicherverwaltungsprobleme in MAC OS X. Das Web war bereits nach einiger Zeit mit Beschwerden über eine dramatische Verlangsamung des Systems überladen. Damals hatte ich eine langsamere Maschine, Mac Mini mit 1 GB RAM, also kam ich (fälschlicherweise) zu dem Schluss, dass es an minderwertiger Hardware lag.

Jetzt habe ich 2010 MBP, core i7, 8 GB RAM, dual-GPU. Mac os X Snow Leopard war Schmerz, aber nach der Migration auf OS X Lion, einige ernsthafte Sachen auf MAC zu arbeiten begann ein Alptraum.

Ich habe es endlich geschafft, das problematische Szenario zu reproduzieren, also habe ich den Test durchgeführt und den Bildschirm in Video aufgenommen.

MAC OS X Lion Performance Problem-defekte Speicherverwaltung

Ich führe den Befehl tar+bzip aus, der grundlegendes Unix-Zeug ist, auf der großen Anzahl von Bilddateien in meinen Bildern/ Ordnern. Kurz vor dem Start führe ich den Befehl "Bereinigen" aus, um inaktive/zwischengespeicherte Programmdaten zu löschen.

Sie können auf dem Video sehen, dass der freie Speicher zu fallen beginnt sehr schnell und inaktiv steigt ständig. Wenn Sie sich den Befehl "bsdtar" ansehen, wird nur ein Fragment RAM benötigt, sodass das Problem nicht in diesem Prozess liegt. Sie können nicht sagen, dass es sich um einen Programmspeicherverlust handelt, da sich das Problem dann nicht im inaktiven RAM befindet, sondern im aktiven/verdrahteten.

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

Ich führe dasselbe Szenario und dieselben Befehle auf meiner Linux Centos 6-Box aus ,kein Problem! Die Speichernutzung beträgt etwa 10-20mb, keine Probleme mit Cache / Puffer.

Die Speicherverwaltung muss in Mac OS X sehr kaputt sein !

 3
Author: egremyl,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2012-04-24 08:56:52

Ich wette, es gibt keine richtige Antwort darauf. Es ist das gleiche mit dem Speicher, der aktiv bleibt, wenn Sie Ihren Mac in den Ruhezustand versetzen, er wächst und wächst mit jedem Schlaf, den Sie machen.

Auf der "Spaß" - Seite (auch bekannt als teuer) können Sie Ihren Speicher aufrüsten oder die Festplatte durch eine SSD ersetzen, sodass der Austausch nicht zu einem Leistungseinbruch führt. Ich habe mich für die erste Option entschieden, da Corsair Memory jetzt zu einem vernünftigen Preis erhältlich ist.

16GB RAM

 1
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2012-04-15 09:33:41