Unter der Haube von ReadyBoost

Eine aktuelle Suche mit Live Search zeigt 55.331 Ergebnisse zum Begriff "ReadyBoost". Da ich häufig Fragen im Zusammenhang mit Windows ReadyBoost gestellt bekomme, versuche ich an dieser Stelle einmal, ein wenig Licht in die Technologie dahinter zu bringen und mit einigen Mythen aufzuräumen. ReadyBoost ist kein zusätzlicher virtueller Arbeitsspeicher für den Computer. Da USB-Sticks oder SD-Karten im laufenden Betrieb entfernt werden können, macht es auch keinen Sinn, den Speicher als Hauptspeicher adressieren zu können. Flashspeicher ist auch wesentlich langsamer im Vergleich zu DRAM. 

ReadyBoost nutzt Flashspeicher als einen zusätzlichen Puffer für die Auslagerung von Speicherseiten. Sinn und Zweck ist der schnellere Zugriff auf häufig verwendete Speicherseiten durch die deutlich geringere Latenz von Flashmedien im Vergleich zu Festplatten. Dabei wird nicht die gesamte Auslagerungsdatei auf den Flashspeicher kopiert, sondern nur häufig benutzte Speicherseiten zusätzlich im ReadyBoost-Cache vorgehalten.

Windows Vista nutzt dafür eine Neuerung namens Windows SuperFetch. SuperFetch analysiert im Hintergrund die Hauptspeicherbenutzung des Computers durch den Anwender. Speicherseiten, die regelmäßig benötigt werden, kann SuperFetch im Hintergrund schon in den Hauptspeicher vorladen (Proactive Memory Population), so dass sie sofort zur Verfügung stehen, wenn der Anwender die entsprechende Anwendung benutzen möchte. Dadurch verbessert sich die Antwortzeit des Computers, da die Ladezeiten von Programmen zum Beispiel drastisch verringert werden können.

Das ist übrigens auch ein Grund für den scheinbar drastisch gestiegenen Speicherbedarf von Windows Vista: Vista nutzt vorhandenen Arbeitsspeicher im Vergleich zu Windows XP besser als Cache aus. Warum das einige "Experten" so stört, wird mir nicht klar. Bei einem Prozessorcache fragt sich auch keiner, wieviel denn davon benutzt wird. Ganz im Gegenteil: Wir erwarten, dass größere 1st, 2nd und 3rd Level Caches mehr Performance ermöglichen. Nur beim Hauptspeicher scheint es einigen wichtig zu sein, dass davon möglichst viel *nicht* benutzt wird. Das macht für mich keinen Sinn.

Mit SuperFetch weiss Vista, welche Speicherseiten oft benötigt werden. Mit Windows ReadyBoost & ReadyDrive können diese Speicherseiten dann von SuperFetch zusätzlich auf Flashspeicher abgelegt werden. ReadyBoost nutzt dazu einen speziellen Algorythmus, welcher die Schreibzugriffe auf den Stick minimiert und die Zugriffe gleichmäßig über den gesamten, an ReadyBoost zur Verfügung gestellten Platz, verteilt. Damit wird die Lebensdauer des Flashspeichers nicht signifikant verringert. ReadyBoost komprimiert zusätzlich die zu speichernden Daten, so dass mehr als der physikalisch zu Verfügung stehende Platz genutzt werden kann. Die Daten werden weiterhin automatisch verschlüsselt gespeichert (AES-128), so dass die ReadyBoost-Datei keine externe Absicherung benötigt.

Für ReadyBoost können USB-Sticks, SD- und CF-Karten sowie Memory Sticks über PCI, PCIe und SSA Busse genutzt werden. Faktisch können damit nahezu alle internen Kartenleser von Notebooks benutzt werden, mit Ausnahme von extern über USB angeschlossenen Lesegeräten sowie internen Lesern, die über USB 1.0 oder USB 1.1 angeschlossen sind.

Weitere Eckpunkte für ReadyBoost:

  • Die Größe der ReadyBoost-Datei kann von 230 MB bis zu 4 GB reichen.
  • Microsoft empfiehlt ein Verhältnis von 1:1 bis maximal 3:1 zwischen ReadyBoost Cachegröße und Hauptspeicher (RAM) für optimale Performancevorteile.
  • Der Flashspeicher muss als Mindestanforderung 2,5 MB/s random 4K reads und 1,75 MB/s random 512K writes über die gesamte Größe (!) unterstützen.
  • Für die "enhanced for ReadyBoost" Bezeichnung liegen die Anforderungen höher: 5 MB/s random 4K reads und 3 MB/s for random 512K writes.

Die Geschwindigkeit des Flashspeichers kann auch mit Boardmitteln getestet werden. Allein die Angaben auf den Flashspeichern selbst sind dafür nicht aussagekräftig genug. Das Ergebnis in der GUI ist jedoch binär: ReadyBoost ist entweder möglich oder nicht. Wer wissen will, warum sein Gerät den Test nicht bestand, kann in der Ereignisanzeige nach Event 1005 ("Das Gerät ... wird nicht für einen ReadyBoost-Cache verwendet, da...") Ausschau halten.

Wer seine Flashspeicher selbst testen möchte, kann die Performancedaten über WinSat ermitteln. Windows Vista liefert dazu Winsat.exe mit, welches aus einer Eingabeaufforderung als Administrator aufgerufen werden muss:

  • Random 4K reads: winsat.exe disk –read –ran –ransize 4096 –drive E
  • Random 512K writes: winsat disk –write –ran –ransize 524288 –drive E

Der Laufwerksbuchstabe des Flashspeichers muss dabei ohne Doppelpunkt angegeben werden - in meinem Beispiel ist das Laufwerk der Buchstabe E. Der erste Test geht ziemlich schnell - der zweite dauert ein wenig länger. Anbei die Beispielausgabe einer SD-Karte in meinem Notebook:

C:\Windows\system32>winsat.exe disk –read –ran –ransize 4096 –drive E
Windows-Systembewertungstool
> Wird ausgeführt: Funktionsaufzählung v1.0.0.0 ''
> Laufzeit 00:00:00.56
> Wird ausgeführt: Speicherleistungsbewertung mittels Profilerstellung v1.0.0.0 '–read –ran –ransize 4096 –drive E'
> Laufzeit 00:00:06.63
> Datenträgerleistung 2.74 MB/s
> Gesamtausführungszeit 00:00:07.58

Über die Ereignisanzeige kann man sich auch alle ReadyBoost-relevanten Ereignisse gefiltert darstellen lassen. Dazu geht man in der Ereignisanzeige auf Anwendungs- und Dienstprotokolle > Microsoft > ReadyBoost. Dort findet man eine Reihe von Einträgen rund um ReadyBoost. Windows Vista protokolliert auch die Nutzung des ReadyBoost-Caches mit und erstellt regelmäßig Statistiken. Anbei einmal die letzte von meinem Computer:

Event 1015

Zusammenfassung der ReadyBoot-Leistung:
Anzahl E/A-Lesevorgänge: 23144
KB der E/A-Lesevorgänge: 419955
Anzahl Cachetreffer: 9589
Cachetreffer-KB: 194592
Cachetreffer-Prozentwert: 41.4319045973038
Cachefragmentierung: 7.83384753249513
Größe der komprimierten Daten in KB: 268771
Größe der Rawdaten in KB: 418644
Komprimierungsverhältnis: 1.55762340431073
Cachegröße in KB: 278455
Startabrufzeit: 36079564
Startabrufbytes Lesevorgang: 303685632
Startzeitstempel (UTC): 16.01.2007 08:35:18
Letzter Startplan-Zeitstempel (UTC): 15.01.2007 12:16:38
Letzter Startplan-Zeitstempel (lokal): Mo, Jan 15 07, 01:20:36

Windows ReadyBoost verbessert in Zusammenarbeit mit Windows SuperFetch also primär die Antwortgeschwindigkeit des Rechners angepasst an die spezifische Nutzung durch den Anwender. Windows ReadyDrive geht noch einen Schritt weiter. Da hier der Flashspeicher fest in der Festplatte eingebaut ist, kann er neben dem Cache für SuperFetch auch zu weiteren Zwecken genutzt werden. Eine Möglichkeit ist ein erweiterter Write Cache, damit die Festplatte bei Laptops im mobilen Betrieb nicht für jeden Schreibvorgang anlaufen muss oder auch die Ablage von Programm-spezifischen Daten durch den OEM. Weitere Informationen findet man im Whitepaper Windows PC Accelerators und in der ReadyBoost Q&A von Tom Archer, der Matt Ayers, den für ReadyBoost verantwortlichen Program Manager aus der Microsoft Windows Client Performance Group, interviewt hat.