Performance: Die Basis im System

10.03.2007 von Martin Kuppinger
Der zweite Teil der Serie geht auf eine Reihe weiterer Veränderungen beim Windows Server 2003 ein, mit denen die Performance des Gesamtsystems erhöht wird. Dazu zählt beispielsweise der Support für NUMA (Non-Uniform Memory Architecture).

Im ersten Teil der Serie wurden vor allem Änderungen auf Kernel-Ebene behandelt. Neben NUMA werden in diesem Teil Themen wie die Änderungen bei den Funktionen für die Ein- und Ausgabe auf Festplatte und im Netzwerk und Optimierungen bei verschiedenen Diensten und Anwendungen besprochen. Außerdem werden auch die optimierten Funktionen für die Performance-Analyse näher betrachtet.

NUMA

NUMA steht für Non-Uniform Memory Access. Dabei handelt es sich um Systeme, bei denen technisch gesehen auf einer physischen Maschine mehrere Knoten vorhanden sind, die jeweils getrennt auf Speicher zugreifen. Jeder Knoten, meist aus vier Prozessoren bestehend, verfügt über eigenen Speicher. Er kann aber auch Speicher anderer Knoten nutzen, wozu er allerdings die Verbindung zwischen den verschiedenen Knoten verwenden muss, was wesentlich aufwendiger ist als der Zugriff auf den lokalen Speicher. Die Herausforderung bei NUMA-Systemen ist daher, den Zugriff auf den Speicher und andere Ressourcen so zu optimieren, dass möglichst mit lokalen Ressourcen gearbeitet werden kann.

Die Unterstützung des Windows Server 2003 für NUMA-Architekturen wurde ebenso verbessert wie die meisten anderen Funktionen für eine höhere Skalierbarkeit. Der Scheduling-Mechanismus des Systems sorgt zunächst dafür, dass neue Prozesse beim Start möglichst gleichmäßig auf die verschiedenen Knoten verteilt werden. Neue Threads eines Prozesses erben dann die Knotenzuordnung des Prozesses, sodass nach Möglichkeit alle Threads im gleichen Knoten ausgeführt werden und damit lokale Ressourcen des Knotens nutzen.

Entsprechend versucht auch der Memory Manager des Betriebssystems, die Speicherressourcen optimiert zuzuweisen. Soweit möglich wird physischer Speicher immer aus dem gleichen Knoten zugeordnet.

Zusätzlich gibt es noch die NUMA APIs. Über diese Schnittstellen können beispielsweise die Knotenzuordnungen von Prozessen und Threads sowie das Cache-Management der Anwendungen in Abhängigkeit von den Knoten eines NUMA-Servers beeinflusst werden.

Die Speichersubsysteme

Auch wenn die Performance-Optimierungen beim Windows Server 2003 ihre Ursache vor allem in Änderungen beim Kernel haben, findet man doch auch noch einige andere Bereiche im System mit Optimierungspotenzial. Einer dieser Bereiche ist die Ein- und Ausgabe zu Speichersubsystemen – und hier natürlich primär Festplatten. Schon durch die wesentlich langsamere Schreib- und Lesegeschwindigkeit im Vergleich zum Hauptspeicher kann hier ein Engpass entstehen.

Andererseits wirken sich die Optimierungen im Kernel auch auf die Performance beim Schreiben und Lesen von Datenträgern aus, weil die entsprechenden Komponenten selbst effizienter arbeiten können. Es gibt aber auch spezifische Anpassungen.

Eine davon ist der so genannte Storport Driver. Dieser Treiber ist eine Alternative zum mit Windows 2000 eingeführten SCSI Port Driver. Er ist deutlich schneller und hat einen höheren Durchsatz vor allem beim Einsatz mit hoch performanten Speichersystemen, wie zum Beispiel optimierten RAID-Adaptern und Fibre Channel-Lösungen. Das hat mehrere Gründe:

In der Summe führen die Änderungen nach Aussagen von Microsoft zu einer wesentlich verbesserten Performance. Die Steigerungen bewegen sich bei 2-Prozessor-Systemen im Bereich von 100%.

Netzwerk-I/O

Im Bereich der Ein- und Ausgabe auf das Netzwerk stellen die Optimierungen beim Windows Server 2003 letztlich nur einen Zwischenschritt dar, da beim Windows Server Longhorn und bei Windows Vista ja ein völlig neuer TCP/IP-Stack zum Einsatz kommt. Dennoch gibt es einige wichtige Änderungen:

Auch hier wurden wieder deutliche Verbesserungen erzielt, die auch im Zusammenhang stehen mit weiteren Anpassungen bei Diensten. Für bestimmte Einsatzsituationen ist die Anzahl der gleichzeitig unterstützten Verbindungen, die theoretisch nun den Wert von einer Million erreichen können, wichtig – das gilt beispielsweise für Online Gaming- und Chat-Server. Im Regelbetrieb liegen die Verbesserungen aber unter 20%.

Optimierungen bei Diensten

Bei den Windows Media Services lassen sich Leistungssteigerungen bis zum Faktor 5 feststellen, wenn mit Streaming Media gearbeitet wird. Auch diese sind, ebenso wie die Performance-Steigerungen um über 100% bei DNS und FTP, nur zum Teil auf die Optimierung des Netzwerk-I/O zurückzuführen.

Ansonsten gibt es die größten Änderungen in der Dienst-Performance der IIS, was an der in Expert’s inside Windows NT/2000 bereits hinlänglich beschriebenen geänderten Architektur liegt. Hier sind je nach Prozessorzahl Leistungssteigerungen von mindestens 80% zu verzeichnen. Systeme mit einer größeren Zahl von Prozessoren profitieren von den zusätzlichen Kernel-Optimierungen überproportional, sodass Microsoft für 8-Prozessor-Systeme Leistungssteigerungen um bis zu 500% bei standardisierten Benchmarks angibt.

Aber auch in anderen Bereichen gibt es Optimierungen. Beim Dateisystem wird durch verbesserte Behandlung von Handles (Verweisen) auf Dateien und der Meta-Daten sowohl die Anzahl der Kommunikationsschritte zwischen Client und Server als auch die Menge der übertragenen Daten reduziert.

Die Komponente, die den Cache aufräumt, kann nun in definierten Intervallen arbeiten. Bei Mehrprozessor-Systemen macht sich vor allem die Zuordnung von Threads zu Prozessoren und der seltenere Prozessorwechsel bemerkbar – also wieder einmal eine Kernel-Optimierung, die sich auch auf einen Dienst auswirkt. Und bei Dateien, die an unterschiedliche Clients geliefert werden müssen, wird auf die gleichen Informationen zugegriffen, statt die Datei intern zu kopieren.

Deutlich wird aber auch hier, dass es letztlich das Zusammenspiel einer Vielzahl von Faktoren ist, das zu einer besseren Performance führt. Insgesamt scheint das beim Windows Server 2003 gut gelungen zu sein.