Letzte Woche bekam ich eine Anfrage von einem c't Redakteur, ob Microsoft für Windows Vista Hinweise und Anleitungen für Benchmarking zur Verfügung stellt. Es gibt bereits eine eigene Seite auf microsoft.com für über Benchmarking on Windows XP, allerdings gibt es bei Windows Vista Neuerungen unter der Haube, die sehr dazu geeignet sind, genaue Benchmarktests zu erschweren.

Beim Benchmarking geht es primär um nachvollziehbare und konsistente Messergebnisse. Gemäß dem alten Spruch Wer viel misst, misst Mist! gilt es, die automatischen Tuningmechanismen von Windows Vista beim Benchmarking mit zu berücksichtigen. Wenn es zum Beispiel um die Geschwindigkeit von bestimmten Hardwarekomponenten geht, sollte man diese Mechanismen ausschalten, damit die Messergebnisse nicht verfälscht werden. Will man dagegen wissen, wie Superfetch arbeitet oder wie sich Vista dem normalen Anwender von der Performanceseite aus zeigt, dann macht es Sinn, diese Mechanismen auch auszureizen.

Microsoft stellt dafür seit kurzem ein eigenes Whitepaper Measuring Performance in Windows Vista bereit. Darin finden sich Information zur Performancemessung unter Windows Vista. Es bietet Anleitungen zum Erstellen von technisch wiederholbaren Workloads und Messungen. Es ist in die Bereiche Installation, Trainieren des Systems und Abarbeiten der Idle Tasks unterteilt.

Installation

Normalerweise installiert man Windows Vista mit den standardmäßig eingestellten Optionen. Allerdings gibt es in Windows Vista gegenüber Windows XP neue Animationstechniken während der Benutzung durch den Anwender. Für Benchmarktests, deren Zweck der direkte Vergleich zwischen Windows XP und Windows Vista ist, empfehlen wir daher, die Animationen auf beiden Systemen auszuschalten, um eine bessere Vergleichbarkeit der Ergebnisse erreichen zu können.

Wer unter Windows Vista Hardwarekomponenten möglichst genau ausmessen möchte, sollte weiterhin die Dienste SuperFetch, Volume Shadow Copy Service und Windows Search indexing deaktivieren, da diese die Messergebnisse verfälschen können. Für Benchmarking von normalen Benutzeraktionen unter Widows Vista dagegen sollten diese Dienste angeschaltet bleiben, da sie auch in einer normalen Benutzerumgebung im Hintergrund arbeiten.

Eine weitere Möglichkeit ist das Deaktivieren des Desktop Window Manager (DWM) während Benchmarktests - wir empfehlen jedoch, ihn aktiviert zu lassen, da er wenig bis gar keinen Einfluss auf die Messergebnisse hat.

Weiterhin empfiehlt es sich, die Auswirkungen von User Account Control (UAC) zu beachten. Wenn der Workload des Tests durch User Account Control Meldungen unterbrochen wird, muss darauf manuell reagiert werden, da der Dialog aus Sicherheitsgründen auf einem anderen Desktop (dem Secure Desktop) ausgeführt wird und nicht programmatisch beantwortet werden kann. Da jeder manuelle Eingriff das Risiko einer starken Verfälschung von Messergebnissen mit sich bringt, empfehlen wir, für die Messung UAC zu deaktivieren oder auf Autoapprove zu stellen. Wir epmfehlen ausdrücklich, dass diese Deaktivierung nach erfolgreich abgeschlossenen Tests wieder zurückzunehmen.

Schliesslich gilt es noch, Windows Error Reporting zu berücksichtigen. Wir empfehlen hier, möglicherweise auftretende Fehler nur in die Queue zu stellen und nachträglich zu melden:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting]
"ForceQueue"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\Consent]
"DefaultConsent"=dword:00000004

Trainieren des Systems

Nachdem die Benchmarkinganwendung auf dem System installiert wurde und möglicherweise das System auch mit Daten befüllt wurde, sollte abgewartet werden, bis die Indizierung alle neue Daten erfolgreich durchsucht und in den Index aufgenommen hat. Danach sollte der Benchmark-Workload mehrfach durchgeführt werden, damit Superfetch das Prefetching entsprechend analysieren und berechnen kann. Dabei achtet Superfetch auf Benutzereingabe. Es analysiert nur Workloads, in denen ein Benutzer interagiert und mindestens einmal pro Minute die Maus bewegt, mit der Maus klickt oder Tatstatureingaben vornimmt. Damit Superfetch einen Benchmark-Workload sauber prefetchen kann, muss man dafür sorgen, dass während aller Benchmarkläufe aller 30 Sekunden eine Mausbewegung oder eine Tastatureingabe erfolgt.

Für Prefetching von Logon- und Logoff-Vorgängen muss das System anschliessend mindestens zweimal neu gestartet werden, wobei ein Benutzer nach jedem Neustart für mindestens fünf Minuten angemeldet werden muss.

Nach signifikanten Konfiguratonsänderungen an Hard- oder Software sollte der Ordner %WINDIR%\Prefetch samt Inhalt gelöscht und die obigen Trainingsaktionen neu ausgeführt werden.

Abarbeiten der Idle Tasks

Wenn Windows Vista keine Benutzerinteraktion über einen längeren Zeitraum registriert, geht das System in den Idle-Modus. In disem Betriebsmodus werden bestimmte Aufgaben im Hintergrund mit geringer Priorität ausgeführt. Dazu gehört zum Beispiel die Onlinedefragmentierung der Festplatte, das Erstellen von Systemwiederherstellungspunkten oder auch die Optimierung der Ablage von Systemdateien auf der Festplatte. Damit man die Vorteile dieser Aktionen in den Benchmark mit aufnehmen kann, muss man entweder eine Zeit lang warten, oder über eine spezielle System-API namens ProcessIdleTasks, die nur für Benchmarktests geschaffen wurde, die Abarbeitung der Idle-Tasks gezielt anstossen:

Rundll32.exe advapi32.dll,ProcessIdleTasks

Dieser Aufruf startet das Abarbeiten der Idle-Tasks asynchron im Hintergrund. Die durchgeführten Aufgaben benötigen ca. 10 bis 15 Minuten. Die API selbst arbeitet synchron und liefert nach dem Aufruf einen standardisierten Microsoft Win32 Errorcode:

DWORD
ProcessIdleTasks()

Neben den Idle-Tasks gilt es, auch auf möglicherweise geplante Aufgaben zu achten, damit diese sich nicht mit dem Benchmarktest überschneiden.

Weiterführende Informationen