Probleme beim Verständnis des inaktiven Speichers in MacOSX

Ich dachte, ich hätte verstanden, wie MacOSX den Speicher verwaltet, aber in letzter Zeit bin ich von seiner Leistung verblüfft. Hier ist die Situation:

  1. Ich habe ein brandneues Core i7-System mit 8 GB physischem Speicher, auf dem MacOSX 10.6.7 ausgeführt wird. Es gibt ein paar Apps, die regelmäßig ausgeführt werden und einen Teil des Speichers beanspruchen – Safari, Mail, Xcode, Terminal usw.
  2. Ich muss drei 64-Bit-Prozesse parallel ausführen, von denen jeder etwa 2000 MB realen Speicher verwendet.
  3. Obwohl der kabelgebundene Speicher unter 1000 MB bleibt (dh ich habe über 7000 MB für Prozesse zur Verfügung), sehe ich eine starke Paging-Aktivität, die zu einer sehr schlechten Leistung der drei speicherintensiven Prozesse führt, die ich gestartet habe.
  4. Anscheinend geht mir der verfügbare RAM nicht aus, da der gemeldete inaktive Speicher bei etwa 2500 MB bleibt und der aktive Speicher nicht über 5000 MB steigt.

Kann mir jemand einen Hinweis darauf geben, warum MacOSX den inaktiven Speicher nicht für die Prozesse freigibt, die ihn benötigen, und stattdessen auf Paging zurückgreift? Gibt es auch eine geeignete Möglichkeit, die Speicherverwaltung durch das System zu beeinflussen?

Antworten (2)

Ich habe auf meinem Rechner festgestellt, dass Mac OS X etwas langsam ist, um die richtigen Dinge auszulagern.

Wann immer ich etwas besonders speicherhungriges mache, beende ich oft ein paar Anwendungen, um ihm zu helfen. Safari ist ein riesiger Speicherfresser, wenn es eine Weile läuft und ganz oben auf der Liste der zu beendenden Anwendungen steht. In meinem Fall war dies der Fall, als ich versuchte, VMWare Fusion ohne genügend tatsächlichen RAM auszuführen.

Sie kennen das wahrscheinlich, aber hier sind ein paar Links zur Apple-Dokumentation, die die Speichernutzung und den virtuellen Speicher unter OS X beschreiben:

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

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

Hier ist die Erklärung, die gegeben wird: Die inaktive Liste enthält Seiten, die sich derzeit im physikalischen Speicher befinden, auf die aber kürzlich nicht zugegriffen wurde. Es ist schwierig, eine genaue Definition dessen zu erhalten, was dies bedeutet, aber es scheint einen Dateisystem-Cache sowie tatsächlich inaktiven Speicher zu enthalten.

Inaktiver Speicher ist wahrscheinlich eine schwierige Sache auf einem interaktiven GUI-gesteuerten Betriebssystem, in dem ein Benutzer jederzeit zu jeder laufenden Anwendung wechseln kann und die Bereitstellung von Reaktionsfähigkeit in dieser Art von Situation wichtig ist ... aber die Kehrseite davon ist das In einer Situation wie Ihrer weiß das Betriebssystem nicht genau, was das Richtige ist.

Es ist möglich, (einen Teil) des inaktiven Speichers zu löschen, indem Sie den Purge- Befehl verwenden. Dies muss möglicherweise durch die Installation der CHUD-Tools installiert werden, aber Sie haben es möglicherweise bereits installiert. Ich habe nicht versucht, den Purge-Befehl zu verwenden, also YMMV ...

Ich habe ein bisschen geschwärmt und vielleicht Ihre Frage beantwortet oder auch nicht. Nachdem ich das alles aufgeschrieben hatte, fand ich auf dieser Seite eine weitere Frage, die viele der gleichen Informationen enthält, die ebenfalls hilfreich sein könnten.

Vielen Dank! Der purgeBefehl ist genau das, wonach ich gesucht habe. Ich hatte die Support-Artikel in Apples KB gefunden, aber sie waren nicht besonders nützlich.

MacOS gibt den inaktiven Speicher frei, aber nur, wenn es wirklich nötig ist. Dieser "inaktive Speicher" kann tatsächlich ein Speicher sein, von dem der Kernel glaubt, dass er ein Kandidat für das Auslagern ist - aber er hat sich noch nicht entschieden, da noch mehr Zeit vergeht, ohne dass auf den inaktiven Speicher verwiesen wird (stattdessen konzentriert er sich auf das Auslagern des Speichers das ist wirklich weniger wahrscheinlich, bald wieder verwendet zu werden). In einem solchen Fall wird das "Löschen" des inaktiven Speichers tatsächlich dazu führen, dass Ihre Leistung leidet (da diese häufig verwendeten Seiten wieder von der Festplatte eingelesen werden müssten, bevor Ihr Programm mit der Ausführung fortfahren kann).

purgeist für Entwickler nützlich, um die Startbedingungen einer Anwendung zu simulieren – zB um zu sehen, wie lange es dauert, bis eine Anwendung nach einem Systemstart oder einer langen Pause zum ersten Mal läuft. Für den typischen Benutzer purgeist es nicht sehr nützlich (und führt tatsächlich zu vorübergehenden Leistungseinbußen).