Prefetching in Windows 7, Teil 2 - SuperFetch und ReadyBoost

Wie in Teil1 des Prefetching in Windows 7 Eintrags angekündigt, hier nun der 2. Teil der Reihe.

Heute werden wir uns um SuperFetch und ReadyBoost kümmern. Beides sind Prefetching Technologien die Microsoft in Windows 7 einsetzt um das System und Zugriffe auf Anwendungen zu beschleunigen.

SuperFetch

Als erstes sprechen wir über SuperFetch, eine Speicherverwaltungs-Technologie die entwickelt wurde um den Arbeitsspeicher eines Rechners effektiver zu nutzen und das System in bestimmten Szenarien zu beschleunigen, indem Daten in den RAM geladen werden bevor Sie benötigt werden. SuperFetch arbeitet im Hintergrund und nutzt Zeiten in den das System gerade "idle" ist, d.h. nicht viel zu tun hat um die Daten vorzuladen.

SuperFetch analysiert im Zusammenspiel mit dem Memory Manager Dienst die Speichernutzung, darauf welche Speicherseiten oft benötigt werden und ob es bestimmte Muster gibt die sich an bestimmte Zeiten oder Daten wiederholen (das ist auch als Proactive Memory Population bekannt). Aufgrund dieser Ergebnisse, ist SuperFetch in der Lage benötigte Daten in den RAM zu laden, noch bevor sie durch die Anwendung angefordert werden. Dies spart bei der anschließenden wirklichen Anforderung Zeit, da langsames Laden vom Datenträger entfällt. Natürlich werden die Seiten im RAM nicht blockiert, sondern auch schnell wieder freigegeben sollte er anderweitig benötigt werden.

Ein Beispiel des Vorteils von SuperFetch ist z.B. Ihre Buchhaltung macht immer zum Monatsende am letzten Freitag im Monat die Abrechungen und startet immer dann Ihre Buchhaltungssoftware. Da SuperFetch bestimmte wiederkehrende Nutzungsmuster erkennen kann lädt es an diesem Tag, nach dem Ihr System gestartet ist, wenn es gerade nichts zu tun hat bereits die benötigten Daten in den RAM vor. Wenn die Buchhaltungssoftware dann aufgerufen wird startet Sie schneller, da sie nicht erst von der Festplatte geladen werden muss.

SuperFetch wurde entwickelt um in den folgenden Situationen zu helfen und diese vorbeugen:

Schlechte Speicherausnutzung

  • Die Performance verschlechtert sich nach und nach
  • Programme wurden längere Zeit nicht genutzt, daher müssen evtl. Speicherseiten erst wieder von der Festplatte/aus dem Pagefile geladen werden.
  • Hintergrundprogramme benötigten viel Speicher, wodurch Seiten anderer Anwendungen aus dem RAM entfernt werden, diese müssen dann bei erneutem Zugriff von Festplatte oder aus dem Page File geladen werden

Systemzustände benötigten Speicher

  • Nach dem Boot
  • Nach Hibernation
  • Große Applikationen

Schlechte Festplattenperformance

  • Programme benötigen lange zum Starten
  • Hard Page Faults treten auf, d.h. Speicherseiten müssen von Festplatte oder aus dem Pagefile geladen werden

ReadyBoost

ReadyBoost und ReadyBoot. Beide Begriffe hören sich beim ersten Hören zunächst gleich an, es geht aber um 2 verschiedene Dinge. ReadyBoot haben wir bereits in Teil 1 behandelt, heute geht es um ReadyBoost.

ReadyBoost hingegen ist Teil der SuperFetch Technologie und stellt dem Betriebssystem einen Speicherort (Cache) auf einem Flashspeicher zur Verfügung um diesen als schnellen dedizierten Speicherort außerhalb des RAM für die Zwischenspeicherung von relevanten Daten zu nutzen. ReadyBoost speichert Daten für den schnelleren Zugriff auch pro aktiv durch die Nutzung der von SuperFetch erstellten Nutzungsmuster, z.B. wann wird eine bestimmte Speicherseite benötigt wird.

ReadyBoost wurde entwickelt um die gesamte System-Performance zu verbessern indem die schnellen Speichermedien, wie USB Flash Laufwerke, USB Sticks, SD oder CF Karten, als zusätzlicher Cache genutzt werden können. Da gerade kleine und nicht zusammenhängende Datenpakete von Flash Speichern schneller geschrieben und gelesen werden können als von herkömmlichen Festplatten, greift die ReadyBoost Technologie nur hier um den Geschwindigkeitsvorteil zu nutzen. Große zusammenhängende Datenpakete werden erkannt und diese werden weiterhin von der Festplatte gelesen.

Die Festplatte ist trotz einer evtl. verbauten SATA-Festplatte immer noch der langsamste Faktor und somit der Flaschenhals in Sachen Performance. Aus diesem Grunde nutzen Betriebssysteme den zur Verfügung stehenden Arbeitsspeicher möglichst optimal aus und versuchen so viele Speicherseiten wie möglich von der Festplatte im RAM zu halten, um darauf bei Bedarf schneller zugreifen zu können. Flashspeicher sind hier eine hervorragende Möglichkeit, um bei Hard Page Faults nicht von langsamen Festplatten, bzw. aus dem Page File auf der Festplatte laden zu müssen, sondern hier eine schnellere Alternative zu haben. Zudem sind Flashspeicher nicht nur sehr schnell sondern auch günstig.

Geschwindigkeiten der einzelnen Speichertypen:

Memory type Latency (in milliseconds)

Main memory (DRAM) ~0.0001

Flash memory (NVRAM) ~0.5–1

Disk media (HDD) ~0.5–24

Das Zwischenspeichern von ReadyBoost bezieht sich auf den gesamten Festplatteninhalt nicht nur auf das Paging File oder DLL´s. Sämtliche Daten die auf den Flashspeicher zwischengespeichert werden, sind zusätzlich immer noch auf der Festplatte vorhanden, die Daten sind also gespiegelt. Durch diese Spiegelung gibt es z.B. auch keine Probleme wenn den Stick im Betrieb den ReadyBoost Speicher aus dem System entfernen. In diesem Fall fällt das Betriebssystem wieder auf die Festplatte zurück und fährt dort mit der Verarbeitung der Daten fort, der Geschwindigkeitsvorteil fällt dann weg.

Um ReadyBoost auf einem Flashspeicher zu aktivieren gibt es einige Anforderungen an das Gerät:

  • Der USB Key muss USB 2.0 fähig sein
  • Das USB Gerät muss folgende Schreib-/Lesegeschwindigkeiten mindestens mitbringen: Lesegeschwindigkeit für 4 kb Paket 3,5 MB/s / Schreibgeschwindigkeit: 2,5 MB/s
  • Das USB Gerät muss über mindestens 64 MB freien Speicher verfügen.

Sind die zwischengespeicherten Daten auf dem genutzten Flashspeicher sicher?

Definitiv JA, alle Daten mit einer AES-128 Verschlüsselung und einem Pro Boot Session Key verschlüsselt. ReadyBoost komprimiert zusätzlich alle Daten mit einer Kompressionsrate von schätzungsweise 2:1 um den zur Verfügung stehenden Speicherplatz optimal zu nutzen.

Wie aktiviert man ReadyBoost?

Vermutlich wird jeder es bereits einmal gesehen, allerdings nicht realisiert haben. Wenn man einen USB Stick oder eine USB Festplatte in das Gerät einsteckt, der/die den Anforderungen für ReadyBoost entspricht, hat man zusätzliche Optionen im Autoplay Dialog der erscheint. Ebenfalls hat man in den Eigenschaften eines für ReadyBoost nutzbaren USB Geräts die Option das Gerät für ReadyBoost zu nutzen.

 

Nach dem ich diese beiden Begriffe erklärt habe, werde ich in meinem nächsten Beitrag darauf eingehen, warum man SuperFetch nicht deaktivieren sollte.

Weiterführende Links (englisch-sprachig) zum Thema Prefetching:

Das Whitepaper zu den angesprochenen Technologien finden Sie hier

Ein ReadyBoost Q&A von Tom Archer, aus einem Interview mit Matt Ayers, einem Programm Manager aus der Windows Client Performance Gruppe gibt es hier

Ein sehr schöner Beitrag von Mark Russinovich zu Windows Vista in denen er über die besprochenen Themen ReadyBoot, SuperFetch und ReadyBoost schreibt finden sie hier.