Gibt es eine Möglichkeit, OSX dazu zu bringen, mehr RAM und weniger Swap zu verwenden?

12

Das Problem, das ich habe, ist, dass wir auf einem Server (und auch auf anderen OSX-Boxen) 4 GB RAM haben, aber wir stellen fest, dass OSX nur 40-60% des verfügbaren RAM verwendet, während es auch einen Swap von 6-7 GB hat. Auf dem Server werden Apache und MySQL ausgeführt, während die anderen Computer Desktops sind.

Ich habe seine Verwendung mit ähnlichen Linux-Boxen (Hardware und Software) verglichen und festgestellt, dass Linux normalerweise 80-90% des Arbeitsspeichers verwendet und eine viel kleinere Auslagerungsdatei (2-3 GB) hat. Die Linux-Server laufen in der Regel auch viel schneller.

Gibt es eine Möglichkeit, OSX zu zwingen, mehr oder den größten Teil des Arbeitsspeichers zu verwenden, bevor eine Auslagerungsdatei verwendet wird?

In Windows können Sie den Swap tatsächlich komplett deaktivieren. Gibt es etwas Ähnliches für OSX?

Darryl Hein
quelle
Zur Verdeutlichung: 1. Ist der Engpass das VM-System? Wie in, wenn Sie die Speichersterne sehen, gibt es eine große Menge, wenn Auslagerungen auftreten. 2. Woher bekommst du deine Free- und VM-Größeninformationen? Beispielsweise stimmt die im Aktivitätsmonitor angegebene VM-Größe nicht mit der Größe der Auslagerungsdatei überein.
Chealion
Ich habe keinen Beweis, dass das VM-System (VM oder Swap) das Problem ist, aber ich weiß, dass ich auf meinem Desktop 6 GB RAM habe, von denen normalerweise 2-3 GB frei sind. Wenn ich zwischen Programmen wechsle, würde man meinen, dass es blitzschnell ist, da sich alles im RAM befindet. Stattdessen dauert es 2-15 Sekunden, bis ich wieder zu Illustrator zurückkehre. Ich denke, dass ähnliche Dinge auf dem Server passieren - so etwas wie das Caching für MySQL oder temporäre Tabellen. Ich benutze top, um die VM-, RAM- und Swap-Nutzung zu bestimmen. Irgendwelche Ideen?
Darryl Hein
3
Um die tatsächliche VM-Auslastung zu bestimmen, ist die Ausführung am einfachsten du -sh /var/vm- das heißt, sie kann künstlich hoch sein, wenn ein Schlafbild (das am häufigsten auf Laptops zu sehen ist) vorhanden ist. Es stehen verschiedene Tools zur Verfügung, mit denen Sie feststellen können, ob der Speicher vm_statdie Verzögerungen verursacht: - Sie interessieren sich insbesondere für den Wert der Auslagerungen. Weitere Informationen zur Speicherverwaltung von Apple finden Sie unter: developer.apple.com/documentation/Performance/Conceptual/…
Chealion,

Antworten:

17

Die grundlegendste Antwort? Nein. Das Betriebssystem verwaltet die Speicherverwaltung für den Benutzer, indem es einem Prozess so viel Speicherplatz zur Verfügung stellt, wie er benötigt, und nicht viel zur Verfügung stellt, um die Leistung des Systems zu ändern. Es hilft nicht viel, herauszufinden, ob die Speichernutzung Teil der Gleichung ist, warum die Linux-Server die Mac-Server übertreffen.

Aufgrund der mangelnden "Hackbarkeit" des virtuellen Speichersystems können Sie am besten die Leistung des virtuellen Speichers bewerten, um festzustellen, ob dies wirklich der Grund für Leistungsprobleme ist. Am einfachsten ist es, ihn zu verwenden vm_statoder zu befolgen Verwenden Sie live, um vm_stat [number of seconds]zu sehen, wie viele Auslagerungen auftreten. Das Verschieben nicht verwendeter Seiten aus dem RAM auf die Festplatte ist viel kostengünstiger als das Zurückholen der Seiten von der Festplatte in den RAM. Eine Seite in OS X-Begriffen bezieht sich auf 4 KB Daten.

Außerdem können 32-Bit-Prozesse (z. B. Illustrator) nicht auf mehr als 4 GB zugreifen. Theoretisch ist es also möglich, dass 2 GB frei sind und ein Prozess nicht mehr über genügend Arbeitsspeicher verfügt, wenn 6 GB installiert sind.

Auf deinem Desktop und den Servern würde ich laufen vm_stat 2 die letzte Spalte und überprüfen - insbesondere, wenn Sie die Verzögerung von mehreren Sekunden bemerken, wenn Sie zu Illustrator wechseln.

Um herauszufinden, wie groß der Swap tatsächlich ist, können Sie entweder die Swap-Größe in Activity Monitor überprüfen oder ausführen du -shc /var/vm/swap* | tail -n 1.

Das Verwenden von du -sh /var/vmhat eine Einschränkung: Auf Laptops, die über den Ruhezustand (mindestens 4 Jahre) sleepimageverfügen, ist möglicherweise ungefähr so ​​groß wie der installierte Speicher.


Mac OS X Memory Jargon:

Kabelgebunden : Dies bezieht sich auf Kernel-Code und dergleichen. Speicher, der niemals aus dem RAM verschoben werden sollte. Auch als residenter Speicher bekannt.

Geteilt : Speicher, der von zwei oder mehr Prozessen gemeinsam genutzt wird. Beide Prozesse würden diese Speicherkapazität anzeigen, sodass es etwas irreführend sein kann, wie viel Speicher tatsächlich verwendet wird.

Real : Dies ist die von task_info () gemeldete "reale" Speichernutzung für eine Anwendung - eine grobe Zählung der Anzahl der physischen Seiten, über die der aktuelle Prozess verfügt. (RSIZE)

Privat : Dies ist der Speicher, den ein Prozess allein verwendet und der im residenten Speicher verwendet wird. (RPRVT)

Virtuell : Die Gesamtmenge des Adressraums in dem Prozess, der auf etwas abgebildet wird - egal, ob es sich um einen beliebig großen Bereich für Variablen oder etwas anderes handelt -, entspricht nicht der tatsächlichen VM-Nutzung. (VSIZE)

Aktiv : Der derzeit als aktiv gekennzeichnete Speicher wird als RAM verwendet.

Inaktiv : "Inaktiver Speicher wird nicht mehr verwendet und wurde auf der Festplatte zwischengespeichert. Er verbleibt im RAM, bis eine andere Anwendung den Speicherplatz benötigt. Das Belassen dieser Informationen im RAM ist zu Ihrem Vorteil, wenn Sie (oder ein Client Ihres Computers) zurückkehren dazu später. " - Mac OS X-Hilfe

Frei : Die Menge an RAM, die tatsächlich ohne Daten verfügbar ist.


Die beste Dokumentation, die ich kenne (und die ich bei Nachforschungen finden konnte), ist Apples eigener Artikel zum Thema " Managing Memory " auf der Entwickler-Website.

Andere wertvolle Quellen: Darwin-dev-Mailingliste: [ 1 ], [ 2 ] und ein alter Artikel über MacOSXHints . Zusätzlich hat Mike Ash eine gute Einführung für Laien in seinem Blog veröffentlicht


Es ist möglich (ich habe es noch nicht ausprobiert), das virtuelle Speichersystem zu deaktivieren, indem es ausgeführt sudo launchctl unload /System/Library/LaunchDaemons/com.apple.dynamic_pager.plistund dann neu gestartet wird, damit dynamic_pager (das Programm, das die Zuordnung des virtuellen Speichers tatsächlich vornimmt) nicht startet. Da das Betriebssystem jedoch davon ausgeht, dass es über virtuellen Speicher verfügt, können Probleme sehr, sehr schnell auftreten. Um es wieder zu laden, führen Sie sudo launchctl load /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist(falls erforderlich aus dem Einzelbenutzermodus)

Chealion
quelle