Performance: Die Basis im System

Die Performance eines Betriebssystems hängt von vielen Faktoren ab. Die entscheidende Basis ist aber die Architektur des Systems und die Optimierung potenzieller Engpässe. Der Artikel befasst sich mit einigen der zahlreichen Aspekte, die beim Windows Server 2003 die Performance beeinflussen.

Die Performance von Systemen wird von einer Vielzahl von Faktoren beeinflusst. Das macht die Optimierung der Performance auch zu einer „hohen Kunst“ in der IT, weil man nicht nur an einer Schraube drehen kann. Es reicht auch nicht aus, nur mehr und schnellere Prozessoren und viel Hauptspeicher zu installieren, weil diese auch optimal genutzt werden müssen.

Microsoft arbeitet schon seit den Frühzeiten von Windows NT an der Optimierung der Performance und hat im Laufe der Zeit auch manchen eingeschlagenen Weg wieder korrigiert. Zusammen mit der leistungsfähigeren Hardware ist die Performance über die Jahre auch kontinuierlich gestiegen. Dabei sind einerseits die Mindestanforderungen gewachsen, was zunächst die Vermutung nahe legt, dass die Performance des Betriebssystems selbst eigentlich schlechter geworden ist. Andererseits sind die Systeme aber auch im Vergleich mit früheren Versionen performanter geworden, wenn sie auf leistungsfähiger Hardware laufen, die heute deutlich besser genutzt werden kann.

Anders formuliert: Einfache Anforderungen lassen sich mit geringen Hardwareressourcen von einer älteren Windows-Version performanter lösen. Höhere Anforderungen lassen sich aber mit entsprechend leistungsfähiger Hardware unter den aktuellen Versionen von Windows, die mit mehr Hardware besser umgehen können, auch besser adressieren. Windows NT ist beispielsweise nicht auf die Nutzung von mehreren GByte Hauptspeicher ausgelegt, die heute in Servern Standard und nicht mehr die Ausnahme sind.

Nachfolgend werden verschiedene Änderungen, die im Betriebssystem vorgenommen wurden, im Detail und mit den erforderlichen Hintergründen zur Systemarchitektur erläutert. Der erste Teil der Serie behandelt die Änderungen im Kernel.

Synchronisation

Die Optimierungen, die die stärksten Verbesserungen bei der Performance bringen, erfolgen typischerweise entweder bei der grundlegenden Architektur oder im Kernel. Grundlegende Änderungen in der Architektur sind allerdings eher selten, in der Entwicklung seit Windows 2000 aber beispielsweise bei den Grafik- und Druckertreibern mehrfach durchgeführt worden.

Optimierungen auf der Ebene des Kernels sind dagegen bei jedem größeren Release zu finden. Der Kernel ist der Teil des Betriebssystems, der zu Beginn als Executive bezeichnet wurde und grundlegende Funktionen zur Verfügung stellt, wie unter anderem das Speichermanagement, die Interprozess-Kommunikationsmechanismen, die Treiberunterstützung, Sicherheitsfunktionen und das Scheduling, d.h. die Zuweisung von Rechenzeit zu Prozessen.

Ein weiterer wichtiger Funktionsbereich des Kernels ist die Synchronisation zwischen verschiedenen Prozessoren und, auf höherem Level, auch zwischen verschiedenen Prozessen. Dabei geht es konkret darum, den Zugriff auf kritische Daten so zu steuern, dass immer nur ein Prozessor mit diesen arbeiten kann. Bei den einzelnen Prozessoren gibt dafür den Mechanismus des IRQs (Hardware Interrupt Request). Der IRQ-Level des Prozessors wird dabei auf den höchstmöglichen Wert gesetzt, so dass dieser die Verarbeitung durchführen kann.

Wenn nun aber mehrere Prozessoren die gleichen Speicherbereiche nutzen, sind ergänzende Synchronisationsmechanismen für die Zugriffe auf kritische Informationen im globalen Speicher erforderlich. Dafür werden so genannte System Locks oder Systemsperren genutzt. Bei diesen wird ein Flag im globalen Speicher genutzt. Ist es nicht gesetzt, kann ein Prozessor die Sperre anfordern und aktivieren. Andere Prozessoren, die zugreifen möchten, müssen nun warten.

Hier kommt nun der Spinlock ins Spiel. Ein Spinlock ist eine Warteschleife, in der sich andere Prozessoren befinden, während ein Prozessor einen Lock gesetzt hat. Die wartenden Prozessoren – das können null, ein oder mehr sein – prüfen in regelmäßigen Abständen, ob die Sperre aufgehoben wurde. Dieses ständige Prüfen wird als spinning bezeichnet, woraus sich auch der Begriff des Spinlocks ergibt (Bild 1).

Bild 1: Der Ablauf bei Spinlocks.
Bild 1: Der Ablauf bei Spinlocks.

Das bringt aber auch das Problem mit sich, dass einerseits Threads auf einem Prozessor, der den erforderlichen Lock nicht erhält, nicht weiter ausgeführt werden können. Zusätzlich muss ein Prozessor im Rahmen der Spinlocks einen Teil der verfügbaren Rechenzeit eben für das Spinning aufwenden.