Hardware effizient nutzen

Mehrkern-CPUs und Virtualisierung

21.10.2008 von Uli Ries
Im Zusammenhang mit dem Thema "Effizientes Rechenzentrum" dürfte Virtualisierung der interessanteste Aspekt überhaupt sein. Mehrkern-CPUs bringen nicht nur die für virtualisierte Infrastrukturen notwendige Rechenleistung mit, sondern auch zahlreiche Optimierungen, die gezielt die Virtualisierungsleistung erhöhen.
Foto: Intel

Mehrkern-CPUs steigern die Performance von Servern und PCs im Vergleich zu herkömmlichen Prozessoren allein schon durch die Anzahl ihrer Kerne: Da ständig mehrere Anwendungen oder Dienste und somit Threads gleichzeitig auf die Hardware zugreifen, können durch Multicore-CPUs mehr Threads parallel erledigt werden. Besonders Anwendungen wie Datenbanken oder CRM-Systeme (Customer Relationship Management), die von Haus aus verschiedenste Threads erzeugen, profitieren von den Mehrkern-Prozessoren. Diese so genannten Multithreaded-Applikationen können verschiedene Aufgaben gleichzeitig auf die vorhandenen Rechenkerne verteilen und so in der gleichen Zeit erheblich mehr abarbeiten als auf einer Single-Core-CPU.

Das gilt auch für Web-Anwendungen und -Server, da ein Webserver in der Regel für jede Benutzersession einen eigenen Thread erzeugt. Bei Servern mit hoher Auslastung kommen so leicht viele hundert gleichzeitige Threads zusammen. Je mehr Kerne sich um diese Aufgaben gleichzeitig kümmern, desto flotter der Server. Optimieren die Programmierer ihre Anwendungen hinsichtlich der zugrunde liegenden Hardware und machen sie gezielt "multithreaded", steigt die Performance noch weiter.

Mehr virtuelle als physikalische Server

Beinahe ohne Klimmzüge der Programmierer profitiert die Virtualisierung von den Mehrkern-Prozessoren. Denn hier gilt es ja nicht nur, einzelne Anwendungen möglichst schnell abzuarbeiten, sondern ganze Betriebssysteme samt der darauf installierten Anwendungen gleichzeitig auf ein und derselben physikalischen Hardware laufen zu lassen. Damit sind virtualisierte Umgebungen die Paradeanwendung für Multicore-CPUs. Nach Aussage der Marktforscher von IDC sollen bereits im Jahr 2010 mehr virtuelle Server laufen als physikalische Server.

Die Vorteile der virtuellen Infrastrukturen liegen auf der Hand: Insgesamt geringerer Energieverbrauch und höhere Ausfallsicherheit durch redundante virtuelle Maschinen. Zwar braucht eine Mehrkern-CPU mehr Energie als ein Single-Core-Prozessor; unterm Strich sparen die modernen Rechenkerne jedoch Energie, da sie pro aufgenommenem Watt erheblich mehr Leistung bieten. Außerdem muss beim Einsatz einer Quad-Core-CPU nur ein physikalischer Server samt Hauptspeicher, Festplatte und Mainboard mit Energie versorgt werden, im Fall einer Single-Core-CPU jedoch gleich vier. Noch krasser wird das Beispiel, wenn gleich mehrere Quad-Core-Prozessoren im Servergehäuse stecken.

Spezielle CPU-Funktionen beschleunigen die Virtualisierung

Egal, welche Produkte in der Praxis eingesetzt werden, um Virtualisierung zu ermöglichen, eines ist allen Lösungen gemeinsam: Sämtliche Anfragen der virtuellen Maschine an die zugrunde liegende Hardware müssen erst vom Hypervisor (HV) – manchmal auch Virtual Machine Monitor genannt – verarbeitet werden. Der HV ist ein Stück Software, dass zwischen Gast- und virtuellem Betriebssystem läuft und somit quasi die Hardware emuliert. Diese Emulation kostet ein gutes Stück Performance. Auch Bare-Metal-Hypervisor wie VMwares ESX, die direkt auf der Hardware laufen und kein Host-Betriebssystem mehr brauchen, erzeugen einen Reibungsverlust.

Um die Leistungseinbußen zu minimieren, haben die Prozessorhersteller AMD und Intel jeweils eigene Erweiterungen für die Befehlssätze ihrer x86-CPUs entwickelt: AMD nennt seine Technik "AMD-V", Intel "IVT" (Intel Virtualization Technology). Die neuen Befehle sind nicht kompatibel, so dass die Anbieter von Virtualisierungssoftware ihre Produkte an AMD-V und IVT anpassen müssen. Die Platzhirsche Microsoft, VMware, Parallels und Xen haben dies schon vor längerem erledigt. Dank der Erweiterungen können deutlich mehr Befehle direkt vom Gastbetriebssystem an den ansonsten vom Hypervisor abgeschirmten Prozessor geschickt werden, so dass die zeitraubende Umsetzung durch den HV entfällt.

Erweiterte Zugriffsrechte

Intel hat darüber hinaus noch weitere Änderungen an seinen Produkten vorgenommen, um diese an die Anforderungen der Virtualisierung anzupassen. Die Funktionen sind zum großen Teil nicht nur in den hochgezüchteten Xeon-Server-Prozessoren zu finden, sondern auch in den für Notebooks und Desktop-PCs konzipierten Core-2-Duo-CPUs. So sorgt beispielsweise Intels VT-x-Technik unter anderem dafür, dass das virtualisierte Betriebssystem mit genau den gleichen Zugriffsrechten auf die CPU versehen wird, als würde es direkt auf der Hardware laufen (Ring aliasing).

Ohne VT-x straucheln die Betriebssysteme, da sie eigentlich den Ring mit den meisten Privilegien (Ring 0) direkt ansprechen können, dies aber bei gleichzeitig laufendem Hypervisor nicht können, da dieser den Ring 0 exklusiv für sich beanspruchen muss. VT-x gaukelt dem Betriebssystem vor, im Ring 0 zu laufen, so dass herkömmliche Betriebssysteme ohne Modifikation auch auf virtualisierten Maschinen genauso zuverlässig laufen wie auf physikalischen. Auch Hauptspeicherzugriffe werden durch diese Hardwareergänzung zuverlässiger.

Direkter Zugriff auf Ressourcen

Neben VT-x findet sich in Intel-Produkten noch eine weitere Spezialität: Intels "Virtualization Technology T for directed i/O" (VT-d). VT-d ist keine Änderung an der CPU, sondern am Chipsatz, und löst eines der dringendsten Probleme auf dem Weg hin zu noch schnelleren und stabileren virtuellen Maschinen. Durch VT-d können die Hardware-Treiber des virtualisierten Betriebssystems direkt auf die zugrunde liegende Hardware wie Grafik- und Netzwerkkarte zuzugreifen. Der Hypervisor muss die Hardware also nicht länger aufwändig simulieren, wodurch sich die Performance des Gast-Betriebssystems drastisch erhöht.

Ohne VT-d wäre dies nicht möglich, da sich die gleichzeitig auf einem physikalischen Server laufenden Betriebssysteme sonst in die Quere kämen und sich unter Umständen genau die Bereiche des Hauptspeichers überschreiben würden, die jeweils zur Kommunikation mit der Hardware nötig sind. Auch für VT-d bieten die führenden Anbieter von Virtualisierungssoftware bereits Unterstützung. AMD hat zwar mit "IOMMU" (Input/Output Memory Mapping Unit) ein ähnliches Konzept zur Effizienzsteigerung angekündigt. IOMMU wird aber erst in dem für Mitte 2009 erwarteten Chipsatz SR5690 zu finden sein.