Die grösste Angst des PC-Nutzers...

...ist nach einem Kommentar auf meinem Blog, dass Daten in die Swap-Datei ausgelagert werden, weil dann sein System langsam wird. ... Jetzt ist es natürlich für den Normalnutzer ein Bedrohung seiner Lebensqualität, wenn er hört, dass Vista "viel mehr Arbeitsspeicher" verwendet (braucht).

Immer wieder liest und hört man die Aussage, dass Windows Vista einen überdimensionalen Speicherbedarf hat. Als Grundlage wird dann die Auslastung des Hauptspeichers basierend auf der Angabe des Taskmanagers herangezogen. Was ist da nun eigentlich dran?

Windows Vista nutzt eine Technik namens SuperFetch als Speichermanager. SuperFetch analysiert im Hintergrund die Nutzung des Hauptspeichers über die Zeit, solange der Benutzer mit dem Rechner arbeitet und dieser eingeschaltet ist. Aus diesen Informationen bildet es Vorhersagen basierend auf den statistischen Daten und einer intelligenten Wahrscheinlichkeitsrechnung, welche Hauptspeicherinhalte zu einer bestimmten Zeit möglicherweise benötigt werden. Diese Inhalte werden dann schon in den freien Hauptspeicher vorgeladen, damit sie sofort zur Verfügung stehen, wenn der Benutzer sie tatsächlich braucht.

Ein kleines Beispiel verdeutlicht diesen Effekt: Ich starte jeden Morgen Outlook 2007, um meine Emails zu lesen, wenn es nicht schon im Hintergrund läuft. Ich nutze Groove 2007, Office Communicator 2005 und eine kleine Anwendung mit dem Namen PureText, um über Windows-Taste + V Text aus der Zwischenablage ohne Formatierung einfügen zu können. Weiterhin starte ich regelmäßig Windows Mail, um in den Microsoft Newsgroups Fragen zu beantworten  Letzteres ist schon fast eine Entspanungsaufgabe - mein bisheriger Zimmerkollege konnte schon am Klang des Tastaturanschlags erkennen, wann es bei mir wieder soweit war ;-)

SuperFetch weiss mittlerweile, dass ich diese Anwendungen regelmäßig benötige und lädt die dafür notwendigen Speicherseiten im Hintergrund in den Physical Memory Cache vor. Von dort können diese Seiten, wenn sie tatsächlich benötigt werden, direkt in den Working Set geladen werden, anstatt sie dann von der Festplatte lesen zu müssen. Hier spielt die deutlich geringere Latenz von Hauptspeicher (~0.0001 ms) gegenüber Festplattenzugriffen (~0.5–24 ms) die entscheidende Rolle.

Wenn der Computer über nicht genügend freien Arbeitsspeicher verfügt, kommt ReadyBoost und/oder ReadyDrive ins Spiel. Mit Hilfe dieser neuen Techniken in Windows Vista können Anwender zusätzlichen Flashspeicher für derartig vorgeladene Speicherseiten von SuperFetch benutzten, welcher a) sehr kostengünstig ist, b) ohne Öffnen des Computers einfach hinzugefügt werden kann und c) auch eine Erweiterung von Computern ermöglicht, deren maximaler Hauptspeicherausbau schon erreicht wurde. Das Ergebnis sind subjektiv deutlich schnellere Startzeiten der jeweiligen Programme, die man oft benutzt.

Als Beispiel haben wir einen Workload auf einem PC simuliert. Die Hauptspeicherausstattung des Computers lag bei der Minimalempfehlung von 512 MB. Wir ermittelten die Ablaufgeschwindigkeit des Workloads bei 512 MB RAM und verglichen sie mit Testläufen, bei denen zusätzlicher Flashspeicher für ReadyBoost eingebunden war (512 MB, 1GB und 2 GB).

Das Ergebnis zeigt den Vorteil des neuen Speichermanagements. Während der Computer mit 512 MB RAM den Workload in 42,45 s bewältigte, sank die benötigte zeit mit 512 MB Flashspeicher auf 27,12 s. Mehr Flashspeicher steigerte die Abarbeitungsgeschwindigkeit nur noch marginal - mit 1 GB benötigte der Computer 25,21 s, mit 2 GB nur noch 24,72 s.

Kommen wir nun zurück zu der grössten Angst des PC-Nutzers. Vor Windows Vista wurde Speichermanagement primär für Umgebungen optimiert, in denen Programme häufig mehr Arbeitsspeicher beötigen, als das System zur Verfügung stellen kann. Das Betriebsystem nutzt dann einen Speichermanagement Algorithmus, der den Low Memory Effekt vermeiden hilft. Geht einem Computer der freie physikalische Arbeitsspeicher aus, schafft das Betriebsystem Platz durch das Verlagern von derzeit nicht verwendeten Speicherseiten in eine Auslagerungsdatei auf der Festplatte. Dieser Vorgang wird On-Demand Paging (von pagefile = Auslagerungsdatei) oder Least Recently Used (LRU) Memory Management genannt.

Die Angst, dass SuperFetch in Windows Vista jetzt zu vermehrtem Paging führt, weil es kostbaren Arbeitsspeicher belegt, ist unbegründet. Als Beleg dafür schauen wir eimal auf einige Screenshots, die ich von meinem Computer während der laufenden Arbeit angefertigt habe:

Was ist dort zu sehen? Der erste Screenshot zeigt meinen PC im Normalbetrieb. Ich habe eine Reihe von Anwendungen offen - in Summe laufen 75 Prozesse. Der Wert für den Arbeitsspeicher, den der Task-Manager an dieser Stelle anzeigt, ist zwar nicht wirklich der genutzte Arbeitsspeicher, aber für diesen kleinen Versuch ist die Angabe hinreichend genau. Mein Speicherbedarf liegt also bei 841 MB. Klingt erstmal nach ganz schön viel.

Als nächste Schritt starte in Virtual PC 2007 eine virtuelle Maschine, welcher 1 GB RAM zugewiesen sind. Die Auslastung steigt abrupt auf ~1.6 GB und fällt danach leicht auf 1.58 GB ab. Das ist allerdings deutlich weniger, als von den meisten erwartet. Eigentlich sollten 841 MB  + 1.024 MB  = 1.865 MB sein. Windows Vista benötigt aber ~200 MB weniger.

Der dritte Screenshot zeigt die Situation nach dem Abschalten der virtuellen Maschine. Die Arbeitsspeicher-Anzeige sinkt auf 602 MB. Das sind 239 MB weniger als vorher.

Natürlich ist dieser Test sehr einfach gestrickt und nicht exakt reproduzierbar - er ist aber hinreichend einfach, so dass er von jedem auf dem eigenen PC nachvollzogen werden kann. Die stärkere Nutzung des Physical Memory Caches in Windows Vista führt also nicht zu erhöhtem Paging.

Zum Schluss noch ein Hinweis für alle, die mehr mit den Performancedaten experimentieren möchten. Windows Vista enthält einen neuen Ressourcenmonitor, der viel detaillierter als der Taskmanager anzeigt, was auf dem Computer alles so vorgeht. Aufrufbar über den Taskmanager auf dem Leistungstab über den Ressourcenmonitor-Button stellt er Informationen über CPU, Datenträger, Netzwerk und Hauptspeicher zur Verfügung. Darüber kann man zum Beispiel sehr schnell sehen, welche Anwendung besonders viel CPU-Zeit, Festplatten-IO oder Hauptspeicherauslastung verursacht.

Hier sind auch neue Funktionen wie Low Priority IO einsebar - zum Beispiel verbraucht der Suchindex-Dienst keine anderweitig benötigten Systemressourcen, sondern arbeitet dann, wenn freie Ressourcen zur Verfügung stehen. Dafür sind schon sehr kleine Pausen des Anwenders ausreichend. Also nicht verwundert sein, wenn die Festplatte des Computers nach der Installation von Windows Vista zu Beginn auch rattert, wenn der Computer scheinbar im Leerlauf ist. Das ist kein Anzeichen für Paging und der Rechner wird dadurch nicht signifikant verlangsamt. Viele Anfragen von Kunden zeigen jedoch, dass es durchaus ein psychoakkustisches Problem darstellen kann ;-)