Wenn sich IT-Manager über die Virtualisierung von Servern unterhalten, ist meistens die Rede von einer entsprechenden Software-Lösung wie vSphere. Dabei wird oft vergessen, dass die innovativen Virtualisierungslösungen ihre volle Leistungsfähigkeit erst zur Geltung bringen können, wenn die im Server verbauten Prozessoren sie optimal unterstützen. Aus diesem Grund sollten IT-Manager das Augenmerk auch auf die Funktionen moderner Prozessoren richten, damit sie die Virtualisierungslösung für einen stabilen und performanten Betrieb konfigurieren können.
Um zu verstehen, warum die Virtualisierungserweiterungen des Prozessors von besonderer Bedeutung sind, erfolgt zunächst ein Exkurs in die prinzipielle Betriebssystemarchitektur. Anhand verschiedener Beispiele erhalten IT-Manager einen guten Einblick, warum die Auswahl der richtigen CPU und die Aktivierung verschiedener Virtualisierungsfunktionen des Prozessors so wichtig für eine virtuelle Umgebung sind.
Darum sind Virtualisierungsfunktionen in CPUs notwendig
Noch vor einigen Jahren wurden CPUs dahingehend optimiert, ein einziges laufendes Betriebssystem auf dem Server zu unterstützen. Da bei der Virtualisierung auf einem Server aber mehrere Betriebssysteme parallel laufen, sind veraltete Prozessoren für diesen Einsatz kaum geeignet. Vor allem wenn es um sogenannte Ring-0-Anfragen geht, muss der Hypervisor eingreifen und die Anfragen an die CPU umschreiben. Diese Vorgänge sind aufwändig und bremsen deutlich die Leistung.
Bei der Verwendung von Prozessoren und den Berechtigungen, die Funktionen dieser CPU zu nutzen, wird häufig von Ringen gesprochen. Über diese Ringe wird gesteuert, welche Prozesse auf die einzelnen Bereiche des Prozessors zugreifen dürfen. Im innersten Ring, dem sogenannten Ring 0, läuft das Betriebssystem des Servers. Sämtliche Prozesse des Betriebssystems werden im sogenannten Kernel-Modus ausgeführt. Alle Anwendungen und Benutzer-Prozesse haben kein Recht auf diesen Ring zuzugreifen. Die Anwendungen nutzen wiederum den Benutzer-Modus der Ringe 1-3. Prozesse in den einzelnen Ringen können die Prozesse von anderen Ringen nicht beeinträchtigen. Das soll verhindern, dass fehlerhafte Anwendungen das Betriebssystem zum Absturz bringen.
Häufig verwendet das Betriebssystem auch den Ring 1, der direkt an den Ring 0 angeschlossen ist. Vor allem beim Einsatz einer Virtualisierungslösung wird zusätzlich zum Ring 0 vom Betriebssystem noch der Ring 1 verwendet. Viele Betriebssystemfunktionen werden in diesem Fall im Ring 1 betrieben. Der Hypervisor, also die Virtualisierungsschicht, arbeitet übergeordnet im Ring 0. Dadurch kann die Virtualisierungslösung mehrere parallel ausgeführte Betriebssysteme auf dem Server verwalten.
Intel Virtualisierungserweiterungen: VT-x, VT-d, EPT
Seit 2006 bietet Intel Prozessoren, die spezielle Virtualisierungsfunktionen beinhalten. Diese wurden in der Zwischenzeit erweitert und werden allgemein als Intel Virtualization Technology (VT-x) bezeichnet. Neben VT-x bietet die Xeon-Plattform außerdem noch VT-d ( Virtualization Technology for Directed I/O ), wodurch Virtualisierungslösungen direkten Zugriff auf Peripheriegeräte wie Netzwerkkarten erhalten. Zudem erlaubt die in neueren Xeon-Prozessoren verfügbare CPU-Erweiterung Extended Page Tables (EPT), auch bekannt als Second-Level-Address-Translation (SLAT), der Virtualisierungslösung einen beschleunigten Speicherzugriff. Eine Übersicht der für Virtualisierung optimierten Xeon-Prozessoren findet sich auf der Intel-Webseite .
Intel Xeon E5-v3-Prozessoren sind eine gute Wahl, wenn es um den Aufbau eines leistungsfähigen Dual-Socket-Server geht. Der größte Vorteil dieser Prozessoren liegt in einer im Vergleich zu den Vorgängermodellen gestiegenen Leistung und einer verbesserten Energieeffizienz. Erreicht wird diese Leistungssteigerung vor allem durch die Integration von mehr CPU-Kernen. Insgesamt lassen sich bis zu 18 Kerne verwenden. Außerdem verfügt der E5-v3 über eine mit AVX2 (Advanced Vector Extensions 2) bezeichnete Erweiterung, die auch Server-Anwendungen beschleunigen kann . Neu ist auch die Unterstützung von DDR4-Speicher, die für 44 Prozent mehr Bandbreite und zugleich um 50 Prozent verbesserte Energieeffizienz sorgt. Zum verringerten Energiebedarf trägt bei, dass die Taktfrequenz jedes Kerns einzeln gedrosselt werden kann. Weitere Features sind dafür gedacht, eine bessere und verlässlicher vorhersagbare Leistung bei virtualisierten Infrastrukturen zu liefern, die Cloud-Plattformen ermöglichen. Wie groß der Leistungszuwachs im Vergleich zur Vorgängergeneration in Bereich Virtualisierung ausfällt, zeigen die Benchmarks auf Basis eines HPE ProLiant DL360 Gen9 mit zwei Intel Xeon Prozessoren vom Typ E5-2699 v3 .
Virtualisierungsfunktionen der CPU aktivieren
Die Virtualisierungsfunktionen der Intel-Prozessoren lassen sich in der Regel über das BIOS/EFI aktivieren. Eine Konfiguration dieser Technologie ist nicht notwendig. Sobald sie aktiviert ist, steht sie zur Verfügung. Die meisten Virtualisierungslösungen lassen sich mittlerweile ohnehin nur dann installieren, wenn die Virtualisierungsfunktionen in der CPU aktiviert sind. Ist dies nicht der Fall, wird bereits bei der Installation in der Regel eine entsprechende Fehlermeldung angezeigt.
Sobald die Virtualisierungsfunktionen aktiviert sind, können die virtuellen Betriebssysteme nahezu auf die gleichen Funktionen der physischen CPU zugreifen, wie physisch installierte Betriebssysteme. Das heißt, in den Gastbetriebssystemen wird die gleiche CPU-Architektur verwendet, wie auf dem Hostsystem.
Status von Intel VT-x überprüfen
Wenn Intel VT-x auf Servern deaktiviert wird, funktionieren Virtualisierungslösungen wie VMware vSphere 6 nicht mehr optimal. Sollen zum Beispiel VMs im laufenden Betrieb zwischen verschiedenen Hosts verschoben werden, muss das die CPU unterstützen. Denn bei diesem Vorgang, werden Informationen der einen CPU auf die andere übertragen. Das gilt auch für den Arbeitsspeicher. Ob auf einem Host die Technologie aktiviert ist, können Administratoren zum Beispiel mit einem SSH-Client auf einem vSphere-Host überprüfen. Mit dem Befehl „esxcfg-info|grep „\—-\HV Support““ kann getestet werden, ob VMware auf die Virtualisierungstechnologie des Prozessors zugreifen kann. Als Ergebnis muss hier „3“ erscheinen. Bei jedem anderen Ergebnis wird die Virtualisierung-Technologie des Prozessors nicht verwendet.
Kompatibilität zwischen Prozessoren im Bereich der Virtualisierung
Fassen Unternehmen mehrere Server in einem Cluster zusammen, etwa um eine hohe Verfügbarkeit und eine dynamische Lastenverteilung zu erzielen, können die VMs in diesem Cluster auf die verschiedenen Hosts übertragen werden. Das funktioniert auch im laufenden Betrieb, wenn die eingesetzten Server und vor allem die verwendeten Prozessoren dieses Feature unterstützen. Probleme können diesbezüglich entstehen, wenn in Unternehmen Server mit verschiedenen Prozessor-Generationen und unterschiedlichen Funktionen im Einsatz sind. Für diesen Fall steht unter VMware vSphere 6 für Cluster der sogenannte EVC-Modus ( Enhanced vMotion Compatibility ) zur Verfügung. Wird dieser aktiviert, lassen sich VMs auch dann im laufenden Betrieb verschieben, wenn mehrere Generationen von Intel-Prozessoren mit unterschiedlichen Funktionen im Einsatz sind. Ähnliche Verfahren gibt es auch für Hyper-V.
Vor der Aktivierung respektive Auswahl des EVC-Modus sollte jedoch abgeklärt werden, ob bestimmte Anwendungen neuere CPU-Erweiterungen nutzen, die für den laufenden Betrieb von essentieller Bedeutung sind. Wird beispielsweise Intel AES-NI zur Verschlüsselung genutzt, ist es nicht empfehlenswert, einen EVC-Modus zu konfigurieren, der diese Erweiterung nicht unterstützt, da man in diesem Fall ein Vielfaches an Performance verliert. Um dies zu vermeiden, sollte man darauf achten, dass ein Cluster mit Servern ausgestattet ist, deren Prozessoren aus der gleichen Generation stammen.
Virtuelle Server und physische CPUs steuern
Durch den Einsatz spezieller Prozessoren können VMs und die virtuellen Betriebssysteme auf den VMs auch auf Funktionen der physischen CPU zugreifen. Das wird durch Intel VT-x ermöglicht. In professionellen Virtualisierungslösungen können Administratoren in den Einstellungen einer VM zahlreiche Einstellungen vornehmen, damit die VM optimal mit der CPU arbeiten kann.
Hyper-Threading, NUMA und Virtualisierung
Intel hat Hyper-Threading bereits 2002 für Xeon-Prozessoren eingeführt. Durch diese Technologie stellt der Prozessor zwei logische CPUs für Anwendungen zur Verfügung. Im Taskmanager erscheinen beim Einsatz einer Dual-Core-CPU bei aktivierten Hyper-Threading somit vier CPU-Kerne. Moderne Applikationen nutzen diese Technik, indem ein Einzelprozess in mehrere sogenannte Threads aufgeteilt wird, die von einer CPU mit aktiviertem Hyper-Threading schneller verarbeitet werden können. Wird die Hyper-Threading-Funktion im BIOS des Servers aktiviert, dann steht sie Virtualisierungslösungen ebenfalls zur Verfügung.
Die meisten neuen Server verwenden Non-Uniform Memory Access (NUMA)-Arbeitsspeicher. NUMA soll die Leistung verbessern, indem es Arbeitsspeicher auf Prozessorbasis zuweist. Ein Block dedizierten Arbeitsspeichers wird NUMA-Knoten genannt. Eine CPU kann schneller auf ihren lokalen NUMA-Knoten (Arbeitsspeicher, der dieser CPU direkt zugewiesen ist) als auf einen nicht lokalen NUMA-Knoten zugreifen.
Vor allem die Virtualisierung profitiert vom Einsatz von NUMA. VMware vSphere nutzt dazu automatisch eine Richtlinie, um einen optimalen Betrieb zu gewährleisten. Standardmäßig ist die NUMA-Funktion aktiviert. Hier besteht die Möglichkeit, den einzelnen VMs die gleiche Anzahl oder weniger vCPUs zuzuweisen wie die Anzahl der Kerne jedes einzelnen NUMA-Knotens. Dabei wird natürlich darauf geachtet, die Maschinen möglichst in einem gemeinsamen NUMA-Knoten zu bündeln.
Es ist aber auch möglich, einer VM mehr vCPUs zuzuweisen als auf dem lokalen NUMA-Knoten zur Verfügung stehen. In diesem Fall muss natürlich auch der Arbeitsspeicher eines anderen Knoten verwendet werden. Die Verbindung der Knoten kann ESXi aber automatisiert herstellen. Generell ist es aber aus Leistungsgründen am besten, beim Einsatz von NUMA nur so viele vCPUs zuzuweisen wie auf dem physischen NUMA-Knoten tatsächlich zur Verfügung stehen.
Erweiterte Virtualisierungsfunktionen nutzen
Administratoren haben in vSphere 6 auch die Möglichkeit einer VM direkten Zugriff auf die Virtualisierung-Funktionen der CPU zu geben. Gesteuert wird der Zugriff aber durch vSphere. Das ist zum Beispiel sinnvoll, wenn in einer virtualisierten Umgebung ein weiterer Virtualisierungshost wie ESXi oder Hyper-V betrieben werden soll.
Dazu steht in den Eigenschaften einer VM der Menüpunkt „CPU/MMU-Virtualisierung“ zur Verfügung. Hier aktivieren Administratoren die Option „Intel VT-X für die Virtualisierung des Befehlssatzes und Intel EPT für die Virtualisierung der MMU verwenden“. Hyper-V setzt sogar SLAT-fähige Prozessoren voraus.
Fazit
Der Blick auf die Betriebssystemarchitektur und die grundsätzliche Arbeitsweise von Virtualisierungslösungen macht klar, dass die VT-Erweiterungen ein entscheidendes Auswahlkriterium für die Auswahl eines Servers sind. Der Einsatz von Virtualisierung ist für Rechenzentren jeder Größe sinnvoll. Neben der besseren Auslastung vorhandener Ressourcen, bietet die Technik auch Vorteile in den Bereichen Serverbereitstellung, Hochverfügbarkeit und dynamischer Lastenverteilung.
Damit die Vorteile der Virtualisierung in der Praxis voll zur Geltung kommen, sollten IT-Manager bei der Anschaffung neuer Server auch einen Blick auf die verwendete CPU werfen und sich mit deren Virtualisierungsfunktionen vertraut machen. Nur mit diesem Wissen ist eine optimale Konfiguration und somit ein stabiler und effizienter Betrieb einer Virtualisierungslösung möglich.
Weitere Informationen zum Thema: