Springe zum Inhalt

SoftEd Blog

In unserem SoftEd-Blog informieren wir Sie regelmäßig zu neuen Themen der Branche und Aktuellem aus Gesellschaft und Leben.

Blog abonnieren
| | IT-Infrastruktur

Auslagerungsdatei – Virtueller Arbeitsspeicher – Page File – Swap File

Diese vier Begriffe hat wohl jeder schon einmal gehört, der sich tiefer mit Windows beschäftigt. Doch was ist eigentlich was?

Um virtuellen Arbeitsspeicher zu erklären, müssen wir uns kurz klar machen, wie ein Prozess mit Arbeitsspeicher umgeht.

Beim Starten eines Prozesses werden seine Binärdaten in den Arbeitsspeicher des Rechners geladen. Der Prozess schreibt dann seine Nutzdaten ebenfalls in den Arbeitsspeicher. Zwischen Arbeitsspeicher und Prozessor findet also ein reger Datenaustausch statt, deswegen ist es gut, „schnellen“ Arbeitsspeicher zu haben. Da mehrere Prozesse prinzipiell nicht voneinander wissen, würde das Laden eines zweiten Prozesses früher oder später zu Überschreitungen bei dem genutzten Arbeitsspeicher führen und beide Prozesse würden mit fehlerhaften Daten arbeiten müssen und wahrscheinlich Abstürzen. Um dies zu vermeiden, verwaltet das Betriebssystem den Arbeitsspeicher und  stellt diesen den Prozessen zur Verfügung. Dabei ist Windows in der Lage sowohl den physisch vorhanden RAM als auch zusätzlichen Platz auf Festplatten zusammen zu fassen und diesen für Prozesse als so genannten Virtuellen Arbeitsspeicher bereit zu stellen.

Genau da stellt sich die Frage, was es mit dem ominösen „zusätzlichen Festplattenplatz“ auf sich hat. Damit ist das gemeint, das im Deutschen als Auslagerungsdatei oder im englischen als Swap- oder Page-File bezeichnet wird.

Grundsätzlich gilt:
Virtueller Arbeitsspeicher = RAM + Auslagerungsdatei(en)

Was macht diese Auslagerungsdatei? Sie ist zum einen eine Erweiterung des vorhandenen Arbeitsspeichers und erlaubt es, dass Programme mit einem Speicherbedarf von mehr als dem physisch vorhandenen RAM ausgeführt werden können. Andererseits erlaubt sie eine Priorisierung des Speicherverbrauches. Ist ihr Firefox beispielsweise für längere Zeit minimiert, so sorgt das Betriebssystem dafür, dass der derzeitige Speicherbedarf der Anwendung auf den langsameren Festplattenspeicher verschoben wird und der schnelle Arbeitsspeicher für derzeit aktive Anwendungen bereitgestellt werden kann. Dies hat zur Folge, dass es zu einer kurzen Verzögerung kommen kann, wenn Sie jetzt den Firefox wieder in den Vordergrund holen. Dafür gewinnen Sie aber die Möglichkeit, andere Prozesse auf den RAM zugreifen- und damit schneller laufen zu lassen.

Ein Prozess selbst sieht nur den vom Betriebssystem zugewiesenen virtuellen Speicher und weiß nicht, ob sich dieser im RAM oder auf einer Festplatte befindet. Auch ein Verschieben zwischen beiden Orten ist für den Prozess vollkommen transparent und wird von Windows verwaltet.

Mit diesem Wissen stellt sich automatisch die Frage, wie groß denn die Auslagerungsdatei sein soll. Lange hielt sich das auch von Microsoft verbreitete[1] Märchen des 1,5 fachen des physischen Arbeitsspeichers. Das hat seine Gültigkeit lange verloren. Folgt man dem Blog von Microsoft Most Valuble Professional (MVP) Mark Russinovich[2], so erfährt man, dass es nicht mehr um Schätzungen oder Faustregeln geht, sondern um konkrete Messwerte.

Warum sollte man sich darüber überhaupt Gedanken machen? Für den normalen Desktopbenutzer ist diese Frage absolut berechtigt und eine Optimierung ist da vermutlich weniger wichtig als im Serverumfeld. Geht man dort beispielsweise von 100 Citrix XenApp oder MS Terminalservern aus und folgt man der alten pi-mal-Daumen-Regel bei modernen Maschinen mit 32GB RAM oder mehr, so müsste für jeden der Server nochmal 48 GB Festplattenplatz konfiguriert werden. Bei 100 Servern sind das schon 4,8 TB – eine Größe die sowohl geplant als auch bezahlt werden muss. Ich denke das Potential einer intelligenten Strategie zum virtuellen Speicher wird ersichtlich.

Woran sollte man nun die Größe des virtuellen Arbeitsspeichers festmachen?
An der Realität! Windows ist in der Lage diesen Wert zu ermitteln und mithilfe des Werkzeuges „Process Explorer“[3] (auch von Mark Russinovich) kann dieser Wert ausgelesen werden.

Starten Sie alle Anwendungen, die Sie gleichzeitig verwenden möchten. Überprüfen Sie nach einiger Zeit – alle Anwendungen wurden gestartet – den „Peak-Commit“ Wert mithilfe des „System Information“ Fensters.

1
Abbildung 1 So finden Sie das System Information Fenster
2-298x300
Abbildung 2 Der wirklich interessante Wert!

Der „Peak Commit“ Wert gibt Auskunft darüber, wie viel virtueller Speicher von Ihrem System maximal belegt wurde. In meinem Testbeispiel sind dies rund 17 GB bei 8 GB physischem RAM. Für die Auslagerungsdatei gibt Mark Russinovich nun folgende Formel an:

„Peak commit“ – physischer RAM =  Anfangsgröße.

Beispiel: 17 GB – 8 GB = 9 GB

Des Weiteren empfiehlt er denjenigen, die mehr Platz nach oben brauchen für den Maximalwert das Doppelte des Minimum zu nehmen, wobei ich dies bei exakt ermittelten Werten für zu viel halte und ich in meinem Beispiel einfach ein GB mehr nehmen würde.

Bei Serversystemen sollte der Wert über einen längeren Zeitraum ermittelt werden um auch die Last von Aufgaben zu erfassen, welche beispielsweise nur einmal in der Woche laufen. Für Terminal- oder XenApp-Servern empfiehlt sich ein umfangreiches Loadtesting beispielsweise mit Citrix EdgeSight for Loadtesting oder SCOM.

Einstellen kann man die errechneten Werte dann schließlich in den Systemeigenschaften, welche am schnellsten über den Befehl „sysdm.cpl“ erreicht werden können. Unter dem Reiter „Erweitert“ im Bereich Leistung klicken Sie auf „Einstellungen“ wählen dort ebenfalls den Reiter „Erweitert“ und klicken auf „Ändern“. In dem nun offenen Dialog können Sie die neuen Werte nun einstellen. Vergessen Sie nicht auf „Festlegen“ zu klicken und starten Sie anschließend das System neu.

3-300x135
Abbildung 3 Konfigurationspfad für die Auslagerungsdatei

Anmerkungen:

  1. Ist die Größe der Auslagerungsdatei nicht mindestens Größe des RAM plus ein MB so kann im Fehlerfall kein vollständiges Speicherabbild erstellt werden.[4]  Dies dient vor allem der Fehlersuche bei beschädigten Systemen und ist im Regelbetrieb nicht notwendig.
  2. Um einen Kernelspeicherabbild (ebenfalls zur Fehlersuche) erstellen zu können, sollte die Auslagerungsdatei um die 2 GB groß sein.[5]
  3. Um ein kleines Speicherabbild erstellen zu können, sollte die Auslagerungsdatei mindestens für die Minimalgröße konfiguriert sein (bei Windows 7: 16 MB)[6]
  4. Dieser Artikel orientiert sich grob an den hier aufgeführten Artikeln.
    1. Mark Russinovich erklärt, was unter der Haube passiert und bringt das Speichersystem an seine Grenzen: http://blogs.technet.com/b/markrussinovich/archive/2008/11/17/3155406.aspx
    2. Nicholas Rintalan (Citrix) erklärt das Messen des tatsächlichen bedarfs zur Best-Practise: http://blogs.citrix.com/2011/12/23/the-pagefile-done-right/
    3. Der Microsoft Leitfaden zur Windows 7 Speichergrößenfestlegung: http://msdn.microsoft.com/en-us/windows/hardware/gg463425Der Autor oder SoftEd Systems übernehmen keinerlei Haftung für Ansprüche, welche durch die Anwendung der in diesem Artikel bereit gestellten Informationen entstehen könnten.

1 Kommentar für “Auslagerungsdatei – Virtueller Arbeitsspeicher – Page File – Swap File

Kommentieren

Ihre E-Mail-Adresse wird nicht veröffentlicht.

3 + achtzehn =