Augen auf beim Hardwarekauf: I/O-Performanceverlust bei Virtualisierung von Windows XP?

Im letzten Monat wurde ich auf den Thread Langsames Windows XP auf Hyper-V R2 in den Microsoft TechNet-Foren aufmerksam gemacht. Ein Kunde schreibt:

…habe auf einen HP ML350 G5 mit Quad XEON Proz. und 12GB RAM das Problem, das Windows XP als VM sehr langsam läuft. Im Taskmanager der virutellen Maschine kann man beobachten, dass jede kleine Rechenaufgabe von div. Prozessen gleich eine heftige CPU Last (virtuell) auslöst. Andere virtuelle Maschinen auf diesen Hyper-V Server mit Windows7 oder Windows 2008 Server als OS laufen wie geschmiert. Ich habe im Internet etwas gefunden, dass es mit einem bestimmten Step des Prozessor zusammernhängen könnte…

imageWas ist hier das eigentliche Problem? Bei der Virtualisierung von der x86-Version von Windows XP sowie älteren Windows-Versionen wie zum Beispiel Windows Server 2000 können in bestimmten Hardwareumgebungen Leistungseinbußen beobachtet werden. Hintergrund ist ein häufiger Zugriff auf die Advanced Programmable Interrupt Controller’s (APIC) Task Priority Register (TPR) der CPU. Dieses Verhalten zeigt Windows XP (und ältere Versionen wie Windows 2000) immer dann, wenn der Interrupt Request Level (IRQL) des Prozessors verändert wird.

In einer virtualisierten Umgebung muss der Zugriff auf die TPR des APIC durch den Hypervisor gehandhabt werden, was zu Performanceverlusten bedingt durch Virtualisierung führt. Diese Verluste sind dabei unabhängig von der verwendeten Virtualisierungslösung, solange sie Hypervisor-basierend ist.

Um den Zugriff auf die TPRs des APIC zu beschleunigen, führte Intel ein Technologie mit dem Namen Intel® VT FlexPriority in neueren Prozessoren ein. Eine nähere Beschreibung dieser Technologie und der Auswirkungen findet man in Intel® Virtualization Technology Processor Virtualization Extensions and Intel® Trusted execution Technology, woraus ich auch das obige Bild entnommen habe. Windows XP Sp3 und Windows Server 2000 SP4 liessen sich dadurch in Benchmarktests auf Virtual Iron um bis zu 35% beschleunigen. Diese Technologie ist zum Beispiel in den Intel Xeon Prozessorenreihen 5200, 5400, 5500 und 7400 enthalten.

Jedoch muss man hier jetzt genau hinschauen: FlexPriority ist in dem B2-Stepping noch nicht enthalten. Eingeführt wurde es erst ab dem E-Stepping, welches jedoch nicht auf den Markt kam und ist somit ab dem G-Stepping enthalten. Kunden, die wie oben einen Server mit Xeon Prozessoren zwecks Virtualisierung von Windows XP einsetzen möchten, sollten beim Kauf darauf achten, dass die CPUs neueren Datums sind und FlexPriority unterstützen. Dazu kann man die von Intel unter processorfinder.intel.com zur Verfügung gestellte Suche nutzen, mit der man die genauen Details jeder CPU nachschlagen kann.

Wer allerdings neuere Betriebssysteme virtualisiert, braucht sich keine Sorgen machen. Windows Server 2003, Windows Vista, Windows 7 und Windows Server 2008 sowie die R2-Varianten enthalten Kerneloptimierungen, so dass bei IRQL-Änderungen auf die TPR nicht mehr zugegriffen werden muss und die Performance nicht beeinträchtigt wird.

Weitere Informationen: