CPU, Speicher, I/O

Virtualisierung: Anforderungen an x86-Hardware

16.06.2009 von Wolfgang Sommergut
Mit der Server-Virtualisierung sollen vor allem x86-Plattformen effizienter und kosteneffektiv arbeiten. Doch diese Hardware wurde nicht speziell für diese Aufgabe entwickelt. Deshalb müssen die Anbieter von Servern ihre System-Hardware auf die Virtualisierungs-Aufgaben entsprechend vorbereiten.

In den letzten Jahren ist die Rechenleistung im Server- und PC-Umfeld explosionsartig gestiegen. Um diese System-Performance effektiv zu nutzen, ist aktuell die Virtualisierungstechnologie das Mittel der Wahl. Neben der besseren Auslastung der Systeme, sinkt auch die Leistungsaufnahme in Bezug auf die Rechenperformance, was dazu beiträgt, die Betriebskosten der IT zu senken.

Allerdings hat im Jahr 1981, als IBM den ersten PC auf den Markt brachte, kaum jemand an diesen Virtualisierungs-Hype gedacht. Zwar konnten damals die dominierenden Mainframes mehrere Instanzen eines Betriebssystems in separaten virtuellen Maschinen bearbeiten – aber an eine solche rasante Entwicklung der aktuellen Server- und PC-Technologien dachte kaum jemand.

So konnte der erste PC mit MS-DOS nur ein Programm gleichzeitig auf einer physikalischen Hardware ausführen und dieses Anwendung gewährte noch dazu uneingeschränkten Zugriff auf alle Systemressourcen. Nach und nach entwickelten sich die x86-Systeme weiter und verrichten heute auch als ausgewachsene Server-Systme im Rechenzentrum ihre Dienste, so dass die Design-Entscheidungen von Anno dazumal auch noch x86-Server von heute kennzeichnen.

Obwohl der technische Fortschritt bei Prozessoren und Betriebssystemen, die Parallelverarbeitung von Anwendungen (Multitasking) deutlich vereinfacht und zu mehr Schutz vor Systemabstürzen führt, gilt bis heute noch das veraltete x86-Grundkonzept. Deshalb müssen die aktuellen Virtualisierungstechnologien und die dazugehörenden Hardware-Komponenten an das Virtualisierungsumfeld entsprechend angepasst werden.

Virtualisierungsfeindliche Prozessoren

Zu den größten Hürden der x86-Virtualisierung gehörte über Jahre das Privilegienmodell der Intel-Architektur. Typischerweise dürfen nur zentrale Komponenten des Betriebssystems direkt auf die Hardware zugreifen, sie laufen auf der Stufe 0 ("Ring 0"). Am wenigsten Rechte besitzen dagegen die Anwendungen, für die der so genannte User Mode ("Ring 3") vorgesehen ist. Wenn sich mit dem Hypervisor (auch Virtual Machine Manager (VMM)) eine Softwareschicht zwischen Hardware und Gast-Betriebssysteme schiebt, dann muss dieser die Kontrolle über die CPU übernehmen und sie als gemeinsame Ressource für mehrere VMs verwalten.

Allerdings erkennen herkömmliche x86-Betriebssysteme nicht, dass sie nur auf virtueller Hardware laufen, und versuchen weiterhin, mit Hilfe von Ring-0-Instruktionen privilegierte Operationen auszuführen, die nun dem VMM vorbehalten sind. Eine virtualisierte Umgebung muss deshalb dieses Verhalten der Gäste in den Griff bekommen.

Defizite durch aufwändige Hypervisor kompensieren

Bei Softwarelösungen existieren zwei Ansätze, um die Betriebssysteme in den virtuellen Maschinen (VM) zu zähmen:

Neue Prozessoren erleichtern die Virtualisierung

Die beiden führenden x86-Chiphersteller Intel und AMD erweiterten ihre neueren Prozessoren um Techniken (AMD-V und Intel VT), die Virtualisierung auf Hardwareebene unterstützen und damit den Hypervisor entlasten. Dazu gehört eine Neuordnung des Privilegiensystems, das mit dem "VMX Root mode" eine weitere Ebene mit maximaler Rechteausstattung einzieht, die dem Hypervisor vorbehalten bleibt. Unmodifizierte Gastsysteme können damit wie gewohnt im Ring 0 operieren und müssen nicht mehr von Virtualisierungssoftware reglementiert werden.

Virtuelle CPUs: Die Virtualisierungs-Erweiterungen der neuen CPUs erlauben es den Betriebssystemen, weiterhin Ring-0-Instruktionen auszuführen, ohne dem Hypervisor in die Quere zu kommen.

Die Virtualisierungsunterstützung auf Chipebene beschränkt sich nicht auf die Behebung dieses Legacy-Problems, sondern nimmt dem Hypervisor noch weitere Aufgaben ab. Dazu zählt auch die Speicherverwaltung, bei der die Memory Management Unit (MMU) eine zentrale Rolle spielt. Dieser Baustein, der Bestandteil moderner Prozessoren ist, dient der Übersetzung von virtuellen in physikalische Adressen.

Hilfe bei der Speicherverwaltung

"Virtuell" bezieht sich hier nicht auf die Partitionierung ganzer Maschinen, sondern darauf, dass Software unabhängig vom tatsächlich vorhandenen Arbeitsspeicher ein linearer virtueller Adressraum zur Verfügung gestellt wird. In Wirklichkeit unterteilt sich dieser in zahlreiche Speicherseiten, die unter Umständen sogar in einer Auslagerungsdatei auf der Festplatte abgelegt sein können. Mit Hilfe der MMU kann ein Betriebssystem die Daten von ihrem realen Speicherort holen, auch wenn es selbst nur die virtuelle Adresse dafür kennt.

In virtualisierten Systemen kann es der Hypervisor nicht zulassen, dass Gastsysteme direkt mit der MMU kommunizieren, weil sie sich sonst gegenseitig die Speicherverwaltung torpedieren würden. Daher simuliert er für jede VM eine eigene Nachschlagetabelle für Speicheradressen, und konsultiert bei Anfragen selbst die MMU, um den physikalischen Speicherort zu ermitteln.

AMD-V implementierte mit "Nested Paging" eine solche Technik auf Hardwareebene, so dass der VMM auf neueren Maschinen von dieser Aufgabe entlastet wird. Intel zog in der kürzlich vorgestellten Xeon-5500-Familie ("Nehalem") mit "Extended Page Tables" nach, so dass Gastsysteme wie gewohnt ihre eigenen Speichertabellen lesen und schreiben können. Beide Hersteller unterstützen die Virtualisierung zusätzlich mit Features, die es insgesamt leichter machen, den Zustand einer virtuellen Maschine zu speichern und zu verwalten, so dass etwa der Kontextwechsel mit möglichst geringen Verlusten vonstatten geht.

Virtualisierung – aber mit eingeschränkter Leistung

Trotz der deutlichen Fortschritte in der Prozessortechnik bleibt noch Raum für Verbesserungen. So vereinfacht die Hardwareunterstützung für Virtualisierung zwar die Hypervisor-Entwicklung. Damit können Xen und Hyper-V, die keine aufwändige Binärübersetzung wie VMware bieten, mit Hilfe der neuen Erweiterungen unmodifizierte Gast-Betriebssysteme ausführen.

Allerdings ist die erste Generation der Virtualisierungserweiterungen nicht allzu leistungsfähig, so dass beispielsweise Microsoft unter Hyper-V ein paravirtualisiertes Windows nutzt, um Teile der Speicherverwaltung effizienter über den Hypervisor abwickeln zu können.

VMware, das die ursprünglich entwickelte Binärübersetzung weiterhin anbietet, aber auf neueren CPUs auch die Virtualisierungserweiterungen der Prozessoren nutzen kann, stellte in einem Benchmarktest fest, dass die reine Softwarelösung bei vielen Aufgaben schneller war als die von der Hardware unterstützte Variante.

I/O-Virtualisierung noch in der Entwicklung

Mit der Virtualisierung von Ein- und Ausgabeoperationen (I/O) steht der Umbau der x86-Plattform vor einer weiteren großen Aufgabe. Bis dato regelt der Hypervisor den Zugriff auf Geräte wie Netzwerkadapter (NIC) oder Massenspeicher. Wenn mehrere Gastsysteme über das Netz kommunizieren möchten, dann kann nicht jedes von ihnen beliebig Daten in die Adressbereiche schreiben, die für die Interaktion mit dem NIC genutzt werden (Ports oder DMA). Sie würden sich dabei in kürzester Zeit in die Quere kommen und falsche Informationen übermitteln.

Direktzugriff: Während Xen und Hyper-V I/O-Operationen über ein Service-Betriebssystem laufen lassen, verlangt VMware ESX eigene Gerätetreiber, Mit VMDirectpath können Gastsysteme auch direkt auf Rechnerkomponenten zugreifen.

Die gängigsten Hypervisor verfolgen derzeit zwei verschiedene Ansätze, um die Kommunikation über Ein- und Ausgabegeräte zu regeln:

Die Hersteller von CPUs können ihre Unterstützung auch auf I/O ausweiten, indem sie etwa DMA-Puffer nach dem Muster von Nested Pages so einrichten, dass sie von allen VMs direkt angesprochen werden könnten. Dieses Ziel verfolgen Intel mit VT-d (erstmals in Nehalem umgesetzt) und AMD mit IOMMU.

Hardware-Vielfalt als Bremse

Allerdings bleibt die wichtigste Aufgabe dann immer noch bei den Anbietern der betreffenden Komponenten, weil diese die parallelen Anfragen in ihren Bauteilen entgegennehmen, sortieren und verarbeiten müssten. Damit würden sie ebenfalls den Hypervisor entlasten und die Ausführungsgeschwindigkeit verbessern. Angesichts der zahlreichen Komponenten für Intel-Rechner lässt sich absehen, dass eine solche Umstellung länger dauern dürfte.

In der Zwischenzeit behelfen sich die Hersteller von Virtualisierungssoftware bei Performanceengpässen etwa damit, dass sie den direkten Zugriff einer VM auf eine I/O-Komponente erlauben. Ein Beispiel dafür ist VMwares "VMDirectPath", das allerdings Intels VT-d benötigt. Dieses Vorgehen hat indes auch Nachteile, weil jede VM eine eigene dedizierte Hardware benötigt und zudem die Migration auf andere physikalische Maschinen erschwert wird, wenn diese nicht identisch ausgestattet sind.

Fazit

Im Fall der Virtualisierungsunterstützung zeichnet sich eine Transformation von Standardhardware ab, die noch mehrere Jahre dauern wird. Die Anbieter von Virtualisierungssoftware können die neuen Features von CPUs und anderen Komponenten nur von Version zu Version integrieren. Mit der Anschaffung neuer Maschinen muss auch bald die Software nachgezogen werden, weil ein veralteter Hypervisor die Möglichkeiten moderner Hardware nicht ausreizen kann. Eine weitergehende RZ-Automatisierung wird zudem eine halbwegs homogene Infrastruktur voraussetzen, besonders auf der Ebene des VMM.

Ein wesentlicher Unterschied zum virtualisierten Mainframe besteht auch darin, dass es bei diesem um die bessere Auslastung einer einzelnen Maschine ging. Die x86-Virtualisierung hingegen schließt mehrere oder viele physikalische Systeme zu einem großen Computer-Pool zusammen, in dem diese harmonieren müssen. Das scheitert jedoch an der Inkompatibilität zwischen AMD und Intel-Prozessoren, die eine Live Migration von VMs zwischen Hosts mit CPUs verschiedener Hersteller verhindert. Eine Lösung für solche gemischten Umgebungen ist noch nicht in Sicht. (ws/hal)

Dieser Artikel basiert auf einem Beitrag unserer Schwesterpublikation Computerwoche.