Prefetching in Windows 7, Teil 1 - ReadyBoot

In meinem letzten Blogeintrag haben wir bereits den Begriff ReadyBoot Prefetcher gesehen und ich habe eine genauere Erklärung angekündigt.

Das möchte ich heute einlösen. In diesem Eintrag kümmern wir uns um ReadyBoot. Wenn man von Prefetching in Windows 7 spricht, gibt es allerdings mehr als nur diesen einen Begriff, daher wird es noch einen zweiten Teil zum Prefetching in Windows 7 geben. Darin werde ich die Begriffe SuperFetch und ReadyBoost erklären.

Genug der Vorrede, fangen wir an.

Was ist ReadyBoot?

ReadyBoot ist eine von Microsoft entwickelte Technologie die Boot Performance eines Rechners zu verbessern. Latenzen die durch den „langsamsten“ Bestandteil eines Rechners auftreten sollen vermieden oder ausgeglichen werden.

ReadyBoot kommt vor allem bei herkömmlichen Festplatten zum Einsatz. Bei SSD Festplatten werden von Windows 7 einige Tests durchgeführt, um festzustellen ob ReadyBoot einen Mehrwert bietet oder nicht. Bei einer Festplatten WinSAT Wertung von mehr als 6.5 und einer durchschnittlichen Lese Rate von mind. 8 MB/s erreichen, was gute und schnelle SSD Festplatten erreichen, wird ReadyBoot deaktiviert. Zusätzlich zu ReadyBoot wird bei Erreichen der genannten Werte auch die automatische Defragmentierung abgeschaltet. SSD Festplatten basieren auf Speicherzellen, welche durch die Logik des in der SSD Festplatte eingebauten Controllers gleichmäßig beschrieben werden. Die einzelnen Speicherzellen einer SSD haben jeweils nur eine begrenzte Lebensdauer an Schreibzugriffen die Sie durchführen können, bevor sie unbrauchbar werden. Jeder Schreibzugriff der unnötig durchgeführt wird, ist aufgrund dessen kontraproduktiv für die Lebensdauer einer SSD. Mehr zum Thema SSD Festplatten und der Behandlung in Windows 7 finden sie hier (englisch-sprachig)

 

Während des Betriebssystemstarts werden sehr viele Daten von der Festplatte gelesen:

  • ~ 150-170 MB bei einer sauberen Retail Windows 7 Installation
  • ~ 300-500 MB bei OEM Pre Installationen 

Die Lesegeschwindigkeit beim Start ist ungefähr bei:

  • < 1 MB/s bei herkömmlichen Festplatten
  • 8-12 MB/s bei einem System mit aktivierten ReadyBoot

Daran sieht man das es einen enormen Vorteil bringt Dateien in den ReadyBootCache vor zu laden und dann bei Bedarf von dort zu laden. Nach dem Bootvorgang wird der ReadyBoot Cache wieder gelöscht.

Wie funktioniert ReadyBoot ?

Bei einem neu installierten Windows 7 System ist ReadyBoot ganz zu Beginn noch nicht optimiert. ReadyBoot analysiert die letzten 5 Bootvorgänge und erstellt davon Traces, um sich selbst zu trainieren. Anhand der Informationen die ReadyBoot aus diesen Boots gewonnen hat erstellt es einen „Bootplan“.

In diesem Bootplan ist verzeichnet welche Dateien bei den letzten Windows Starts geladen wurden. Beim Windows Start lädt ReadyBoot dann die benötigten Dateien anhand des Bootplans in den RAM bevor diese benötigt werden. Dadurch stehen diese aufgrund der wesentlich schnelleren Zugriffszeiten des RAM´s für den Bootvorgang schneller zur Verfügung.

Dateien die sich im Cache befinden, können wenn diese vom Betriebssystem oder Applikationen angefordert werden, viel schneller von dort geladen werden, als wenn diese erst von der Festplatte geladen werden müssen.

Hier noch eine kleine grafische Übersicht über ReadyBoot:

In einem xperf Trace kann man einen ersten Hinweis auf etwaige Probleme im ReadyBoot Graph sehr leicht an vielen schwarzen Feldern erkennen. Schwarz zeigt im ReadyBoot Graph in einem Trace sogenannte misses an. Wie in der Übersicht erkennbar, sind das Lesevorgänge die Betriebsystem, Dienste oder Applikation direkt von der Festplatte durchführen, statt aus dem ReadyBootCache. Um ReadyBoot z.B. bei einem frisch installiertem System zu optimieren, kann die Aktion -prepsystem von xbootmgr genutzt werden. Dabei werden automatisch 5 Neustarts durchgeführt und davon Traces erstellt, außerdem wird dabei ein neuer Bootplan für ReadyBoot erstellt. Ein einfacher Befehl von xbootmgr sieht dann z.B. so aus:

 

Mehr zum Prefetching in Windows 7 lesen Sie hier in Teil 2, darin geht es um Superfetch und ReadyBoost.