Die Windows Startphasen

Was passiert bei einem Windows Start?

In meinem letzten Blogeintrag habe ich bereits über die Übersicht der Bootphasen in einem xperf Trace geschrieben.

Ich habe angekündigt das wir auf die Bootphasen noch einen genaueren Blick werfen und das werden wir jetzt tun.

Schauen wir uns den gesamten Bootvorgang an, kommen wir auf 7 Bootphasen, zusätzlich zu den bereits aus dem xperf Trace bekannten 5 kommen noch die BIOS Initialization und die OS Loader Phase.

Ready Boot Prefetcher

Dem ein oder anderen ist vielleicht der Begriff Ready Boot Prefetcher im Boot Prozess aufgefallen. Was ist das? Kurz erklärt: Der Ready Boot Prefetcher lädt Daten die Windows für den Startvorgang benötigt in den Speicher vor, bevor Windows diese braucht. Dadurch kann Windows beim Start diese Daten schneller laden als von der langsamen Festplatte.

In einem folgenden Blogeintrag werde ich das Prefetching in Windows 7 und Ready Boot noch einmal genauer beleuchten und erklären.

Die einzelnen Phasen

BIOS

In dieser Phase wird die Firmware der Hardware identifiziert und initialisiert und der POST (Power-on self test) wird durchgeführt. Den POST kennen wir alle, er ist das erste was wir nach dem Einschalten eines Rechners sehen, weiß auf schwarz sind dabei auf dem Bildschirm einige Tabelle z.B: mit den eingebauten Laufwerken, oder eine Zahl die durchgezählt wird (dabei handelt es sich z.B. um den Test des Arbeitsspeichers) zu sehen. Diese Phase wird abgeschlossen wenn das BIOS eine funktionstüchtige Systemfestplatte entdeckt und den Master Boot Record (MBR) liest und die bootmgr.exe startet. Bootmgr.exe startet daraufhin winload.exe was den Bootvorgang in die nächste Phase die OSLoader Phase bringt.

Die BIOS Phase kann nicht mit dem Windows Performance Toolkit und xperf aufgezeichnet werden, die Zeit dieser Phase kann nur manuell gemessen werden. Die BIOS Version, die Bios Konfiguration und die Firmware Versionen der Hardware Komponenten können einen großen Einfluss auf die Boot Performance eines Rechners haben. Um die bestmögliche Boot Performance zu haben, sollte unbedingt sichergestellt werden, dass die aktuellste BIOS Version, und die aktuellste Firmware für die Hardware installiert ist. Außerdem sollten man die BIOS Konfiguration in Bezug auf die Boot Reihenfolge, PXE boot, AHCI Einstellungen überprüfen, ob diese korrekt eingestellt ist. Als Faustregel gilt zunächst einmal, alles in der Bootreihenfolge zu deaktivieren, was nicht wirklich benötigt wird. Als Zweites: die Reihenfolge es macht Sinn die HDD an die erste Stelle zu setzen, da dann vor dem Boot nicht noch andere Bootoptionen (USB, Netzwerk, CD/DVD( getestet werden müssen, bevor dann von der Festplatte gebootet wird.

Die Bootreihenfolge kann bei einem Start mittels des Quick Bootmenus, auch nur für den aktuellen Start geändert werden, das Quick Boot Menu kann bei den gängigsten BIOS Herstellern mit F9 oder F12 aufgerufen werden, dann kann das Gerät ausgewählt werden von dem gestartet werden soll, z.B. CD/DVD, PXE, USB.

Bei Änderungen im BIOS oder beim Aktualisieren von BIOS Version oder Firmware, sollten die Anweisungen der Hersteller aufmerksam gelesen und beachtet werden. Fehler oder Fehlkonfigurationen können dazu führen, das das System nicht mehr startet. Aufgrund dessen sollte auch im Vorhinein eine Sicherung der Daten erstellt werden,

OSLoader Phase

Wie geschrieben wird die OSLoader Phase vom Bios eingeleitet, sobald erfolgreich eine aktive Boot-Festplatte und darauf die Datei bootmgr.exe gefunden wird. Die Phase beginnt mit dem Aufruf der winload.exe. Zunächst werden Systemtreiber geladen um Daten von der Festplatte laden zu können, außerdem wird das System initialisiert, so dass der Windows Kernel geladen werden kann. Während der Kernel gestartet wird, werden die Registry Einträge und zusätzlichen Treiber geladen die mit BOOT_START markiert sind.

Da diese Phase sehr stark durch die BOOT_START Treiber beeinflusst wird, sollten alle Treiber signiert und aktuell sein.

OS Initialisierungs-Phase / Hauptboot-Phase

Diese Phase ist die längste und arbeitsintensivste Phase des gesamten Startprozesses. Diese Phase beinhaltet z.B.:

  • Die Initialisierung des Windows Kernels
  • Das Laden der Plug and Play Treiber
  • Das Laden der Registry
  • Das Anzeigen des Login Bildschirms und das Verarbeiten der eingegebenen Logoninformationen
  • Die Initialisierung des Desktops
  • Den Start der Dienste

Wie man sieht passiert in dieser Phase sehr viel daher macht es Sinn diese lange Phase in 4 Unterphasen aufzuteilen:

  • Pre Session Init
  • Session Init
  • Winlogon Init
  • Explorer Init

Rufen wir uns daher noch einmal die Übersicht aus dem xperf Trace in Erinnerung:

Die hier gezeigten Phasen können mit xperf aufgezeichnet und untersucht werden.

 

PreSession- oder Kernel-Init:

Diese Phase beginnt mit dem Aufruf des Kernels. Der Kernel initialisiert die Komponenten und Datenstrukturen. Der Plug and Play Manager, welcher die in der OS Loader Phase geladenen BOOT_START Treiber initialisiert. Auf dem Bildschirm wird währenddessen „Windows wird gestartet“ angezeigt.

Session-Init:

Wenn der Kernel die Kontrolle an den Session Manager Prozess (SMSs.exe) abgibt beginnt diese Phase. In dieser Teilphase wird die Registry initialisiert und es werden die Geräte und Treiber geladen die nicht als BOOT_START markiert sind. Ausserdem werden die Subsystem Prozesse gestartet. Beendet ist die SMSSInit Phase die durch die Übergabe der Kontrolle an die winlogon.exe.

Winlogon-Init:

In dieser Phase wird der Login Bildschirm angezeigt. Ausserdem werden vom Service control Manager die Dienste gestartet. Auch die Gruppenrichtlinien Skripte werden in dieser Phase verarbeitet. Abgeschlossen wird diese Phase mit dem Start der explorer.exe.

In einem Boottrace gibt es einen extra Übersichts Graph in dem man eventuelle Probleme oder Verzögerungen sehen kann. Auch bei einem ansonsten sehr schnell und sauber startenden System kann hier noch ein Verbesserungspotenzial liegen. Im folgenden Screenshot sind es z.B. insgesamt ca. 42 Sekunden  durch Skripte aus den Gruppenrichtlinien. Um die Transparenz für die Anwender zu erhöhen, oder zur Problembehandlung, kann z.B. die Anzeige von ausführlichen Statusmeldungen beim Starten aktiviert werden -> Windows 7 / Windows XP

Explorer-Init:

Nach Eingabe und erfolgreicher Authentifizierung wird der Desktop Fenster Manager (DWM.exe) gestartet welcher den Windows Desktop initialisiert und anzeigt.

Post Boot Phase

In dieser Phase kann ein Anwender bereits mit dem System interagieren, allerdings werden noch Taskleistensymbole geladen, Dienste (die als zeitversetzt eingestellt sind), und noch Programme gestartet (die im Ordner Autorun hinterlegt wurden). Dadurch hat diese Phase auch noch Einfluss darauf wie ein Anwender

Häufige Fragen

Wann ist der Boot abgeschlossen?

Microsoft definiert den Bootvorgang als abgeschlossen wenn CPU und Festplatte über einen Zeitraum von 10 Sekunden lang zu 80 % „idle“ ist

Wie lange dauert ein Windows Start normalerweile?

In einem Test wurde festgestellt das 75% der Rechner nach 30-40 Sekunden gestartet waren.

Bei einer sauberen Win 7 RTM Installation ist die Disk Auslastung nach ca. 20 s beendet und der Rechner reagiert auf Eingaben eines Anwenders.

Bei domänen-basierten Installationen die einige Business Anwendungen beinhalten, kann die Startzeit evtl. höher sein. Da die Startzeiten der Windows Clients einen großen Einfluss auf die Anwenderzufriedenheit hat, sollten diese auf jeden Fall im Auge behalten werden.

 

[1] Windows On/Off Transition Performance Analysis, https://msdn.microsoft.com/en-us/windows/hardware/gg463386.aspx

[2] Windows On/Off Transitions Solutions Guide, https://msdn.microsoft.com/en-us/windows/hardware/gg463230.aspx