CPU-Leistung unter Hyper-V mit der Ressourcensteuerung verteilen

    Leistungsüberwachung (perfmon) für virtuellen ProzessorEin wesentliches Anliegen der Server-Virtualisierung besteht darin, die enorme Rechenleistung moderner Server besser zu nutzen und ihre traditionell geringe Auslastung zu erhöhen, indem sie mehrere virtuelle Maschinen parallel ausführen. Allerdings muss man dabei aufpassen, dass man die virtualisierten CPUs nicht überlastet. Hyper-V bietet für die Zuteilung von Rechenzeit zu VMs 2 verschiedene Ansätze.

    Desktop-Virtualisierer wie VMware Workstation oder Virtualbox beschränken sich bei der Zuteilung von CPU-Ressourcen auf die Zahl der logischen Prozessoren pro VM. Im interaktiven Betrieb virtueller Instanzen ist kaum auszugehen, dass ein Benutzer mehr als 2 oder 3 VMs parallel ausführt und diese mit rechenintensiven Aufgaben auslastet.

    Ganz anders sieht es am Server aus, wo möglichst viele virtuelle Maschinen mit teilweise leistungshungrigen Apllikationen um die Prozessortakte konkurrieren. Hier kommt es darauf an, Rechenzeit zwischen den VMs möglichst günstig zu verteilen und dabei zu verhindern, dass der Server überlastet wird.

    Rechenzeit mit dem Hyper-V-Manager einstellen

    Unter Hyper-V erfolgt die Zuteilung CPU-Ressourcen über den Hyper-V-Manager. Wenn man mit der rechten Maustaste auf den Eintrag für eine bestimmte VM klickt, gelangt man zum Befehl "Einstellungen". Im folgenden Dialog kann man unter "Prozessor" die Rechenzeit für die betreffende VM anpassen. Wenn diese gerade ausgeführt wird, lässt sich nur ein Teil der Parameter verändern.

    Rechenleistung unter Hyper-V verwalten

    Die am leichtesten verständliche Einstellung betrifft die Zahl der logischen Prozessoren. Sie spiegelt die Zahl der physikalisch vorhandenen Prozessorkerne wider. Verfügt der Rechner beispielsweise über eine Quadcore-CPU, dann kann man der VM im Hyper-V-Manager bis zu 4 logische Prozessoren zuteilen. Wieviele man einer virtuellen Maschine in der Praxis spendiert, wird primär davon abhängen, wieviele Gastsysteme auf der Maschine insgesamt laufen sollen.

    Weniger intuitiv erscheinen die Möglichkeiten zur Limitierung der CPU-Zeit im Abschnitt Ressourcensteuerung. Die Einstellungen betreffen dort entweder die absolute oder relative Zuteilung von Prozessorleistung.

    Feste Grenzwerte vorgeben

    Für die Festlegung fester Ober- und Untergrenzen sind die beiden Felder mit der missverständlichen Beschriftung Reserve für virtuellen Computer und Grenze für virtuellen Computer zuständig. Im ersten gibt man ein, wie viel Prozent der Rechenleistung der zugeteilten logischen CPUs eine VM mindestens erhalten soll. Das zweite setzt die prozentuelle Obergrenze für die in der VM maximal verfügbare Prozessorleistung. Der größte Nachteil dieser Aufteilung besteht darin, dass eine VM selbst dann die festgelegte Obergrenze nicht überschreiten kann, wenn die Maschine insgesamt nur sehr gering ausgelastet ist.

    Unter beiden Eingabefeldern findet sich jeweils ein Feld mit der Beschriftung Anteil an den Gesamtressourcen in Prozent. Es ist nicht editierbar, vielmehr berechnet der Hyper-V-Manager dort, wie viel eine VM von der Gesamtleistung des Systems abbekommt. Dahinter steht eine einfache Formel, die den jeweils eingegebenen Prozentwert durch die Anzahl aller im System vorhandenen virtuellen CPUs teilt.

    Priorität relativ zu anderen VMs wählen

    Wem eine statische Partitionierung der verfügbaren Rechenleistung zu unflexibel ist, kann die Vorgabewerte für die Ober- und Untergrenze bei 0 bzw. 100 Prozent belassen und die Relative Gewichtung nutzen, um die Prioritäten zwischen den VMs zu bestimmen. Eine VM mit einer relativen Gewichtung von 200 bekommt erwartungsgemäß doppelt so viele CPU-Zyklen wie eine mit 100.

    Der Vorteil der Verwendung relativer Werte besteht darin, dass die Leistung der Maschine weitgehend ausgeschöpft werden kann. Der Nachteil dieser flexiblen Zuteilung besteht jedoch darin, dass der Hyper-V-Manager keine Ansicht bietet, mit der man bei einer größeren Zahl an VMs den Überblick behalten kann. Daher wird es bei der zwanzigsten VM ziemlich schwierig, einen plausiblen Wert zu finden.

    Monitoring mit der Leistungsüberwachung

    Besonders wenn man die Rechenleistung über fest Mindest- und Höchstwerte für VMs eingrenzt, ist es interessant, die Gesamtauslastung der Maschine zu beobachten, um zu erkennen, ob kritische Werte über- oder unterschritten werden. Bei der relativen Gewichtung kann die Server-Auslastung ab einer gewissen Zahl an VM nicht so leicht zu gering ausfallen, aber eine Überlastung ist natürlich ohne weiteres möglich.

    Wenn man für das Monitoring der CPU-Auslastung den Task-Manager der Parent Partition verwendet, dann erhält man mit Sicherheit zu geringe Werte, weil dieser keine Informationen über den Ressourcenverbrauch des Hypervisors und anderer virtueller Maschinen erhält.

    Leistungsüberwachung für Hyper-V Unter den Bordmitteln von Windows ist daher die Leistungsüberwachung (perfmon.exe) das Tool der Wahl. Hier wählt man unter Virtueller Prozessor von Hyper-V-Hypervisor die Indikatoren %Gesamtausführungszeit, %Gastausführungszeit und %Hypervisorausführungszeit aus. Damit bekommt man einen guten Überblick über die Gesamtauslastung des Systems, aber die Informationen zur Gastausführungszeit werden nicht nach VMs aufgeschlüsselt, so dass man nicht erkennen kann, welches Gastsystem wie viel Rechenzeit verbraucht.

    Die Leistungsüberwachung kann man auch remote ausführen und damit entfernte Server überwachen. Dies setzt allerdings voraus, dass zu diesem Zweck die Firewall richtig konfiguriert wurde. Ärgerlich ist bei der Auswahl zusätzlicher Leistungsindikatoren, dass der zuständige Dialog immer auf den lokalen Computer zurückgesetzt wird und daher jedesmal der entfernte Server neu eingestellt werden muss.

    Keine Kommentare