Guido Vrola - Fotolia

Tipps zum Umgang mit dem vCPU-Overcommitment

Virtuellen Maschinen wird ein physischer Prozessor als vCPU zugewiesen. Beim Overcommitment der vCPU-Ressourcen sollte man es aber nicht übertreiben.

Obwohl Hypervisoren und die Virtualisierungs-Technologie ganz allgemein mittlerweile jahrelang in Enterprise-Umgebungen erprobt sind, gibt es doch immer noch einige Probleme, die manuell gelöst werden müssen.

Vor allem virtuelle CPUs (vCPU) für virtuelle Maschinen benötigen hin und wieder etwas Aufmerksamkeit.

Überbelegung zum CPU-Overcommitment

Probleme mit vCPUs und der Workload-Performance können zum Beispiel auftreten, wenn ein physischer CPU-Kern zu viele vCPUs bereitstellen muss. Typischerweise wird aus einer logischen CPU eine vCPU. Ein einzelner CPU-Kern zum Beispiel, der nicht mit Hyper-Threading läuft, würde eine vCPU bereitstellen, während eine einzelne CPU mit Hyper-Threading zwei virtuelle CPUs bereitstellen könnte.

Es gibt aber keine in Stein gemeißelte Regel, wonach dieses Verhältnis von 1:1 immer bestehen bleiben muss. So wäre es auch möglich, einer logischen CPU mehr als nur eine vCPU zuzuweisen. Durch dieses Overcommitment stehen dem System mehr CPU-Ressourcen zur Verfügung, als physisch tatsächlich vorhanden sind. Seit vSphere 5 gibt es in VMware-Umgebungen beispielsweise das Limit von ganzen 25 virtuellen CPUs pro physischer CPU. Damit wäre theoretisch sogar ein Verhältnis von 25:1 möglich.

Dieses vCPU-Overcommitment funktioniert wunderbar, wenn die virtuellen Maschinen und Workloads auf dem Host nur wenige CPU-Ressourcen benötigen. Wenn einer physischen CPU mehr als nur eine virtuelle CPU zugewiesen wird, teilt ein interner Scheduling-Mechanismus die Prozessorleistung der CPU zwischen den beteiligten vCPUs auf. Je mehr Rechenleistung eine virtuelle Maschine aber benötigt, umso größer ist das Risiko der Ressourcenknappheit, wenn virtuelle CPUs im Wettstreit miteinander um die Prozessorzeit der physischen CPU stehen. Dieses Risiko geht man bei jedem Overcommitment ein, gerade beim CPU-Overcommitment hilft hierbei ein Blick auf die CPU Ready Time.

Generell kann ein Verhältnis von 1:1 bis 3:1 als akzeptabel angesehen werden, bei einem Verhältnis von 3:1 bis 5:1 wird man langsam Performance-Probleme bemerken und bei jedem Overcommitment mit einem Verhältnis jenseits von 5:1 werden zwangsläufig Probleme zu erwarten sein.

Wenn Monitoring-Kennzahlen auf Performance-Probleme bei Host und virtuellen Maschinen hindeuten, dann sollte entsprechend das Overcommitment der CPU-Ressourcen auf ein kleineres Verhältnis reduziert werden. Neuere CPU-Modelle sind dabei meist besser dafür geeignet, ein größeres Overcommitment-Verhältnis ohne Performance-Verluste zu ermöglichen.

vCPU-Zuweisung durch Affinität und Anti-Affinität

Selbst wenn das Overprovisioning von CPU-Ressourcen unterbunden wird, kann auch durch eine suboptimale Auswahl und Zuweisung von CPUs an virtuelle Maschinen eine Ressourcenknappheit entstehen. Dabei darf man nicht vergessen, dass ein CPU-Kern auch durch Hyper-Threading nicht zu zwei Kernen wird. Dabei wird lediglich eine weitere Befehls-Pipeline etabliert, die sich aber die gleichen Prozessorressourcen teilt.

Wenn das Hyper-Threading im BIOS aktiviert wird, dann erscheint die CPU für das System wie zwei logische Prozessoren. Diese werden auch entsprechend als zwei vCPUs zur Verfügung gestellt. Probleme gibt es dann beispielsweise, wenn beide vCPUs einer logischen CPU zwei virtuellen Maschinen mit jeweils hohen Performance-Anforderungen zugewiesen werden. In dieser Situation kann es schnell zu Leistungsproblemen kommen.

Bei extrem hoher CPU-Auslastung sollten die vCPUs daher idealerweise von unterschiedlichen physischen Kernen bereitgestellt werden. Besitzt ein Server beispielsweise eine CPU mit zwei Kernen und Hyper-Threading, dann könnten ohne Overcommitment vier vCPUS (vCPU 0 und 1 auf dem ersten Kern, vCPU 2 und 3 auf dem zweiten) bereitgestellt werden. Wenn nun eine virtuelle Maschine mit hohem Ressourcenanspruch vCPU 0 nutzt und eine weitere vCPU 1, die beide vom gleichen physischen Prozessorkern bereitgestellt werden, könnte die Performance deutlich davon profitieren, einer der beiden VMs vCPU 2 oder 3 zuzuweisen, die auf dem zweiten CPU-Kern basieren. Stattdessen könnten weniger anspruchsvolle Workloads die verbleibenden vCPUs nutzen. Für die Zuweisung virtueller Prozessoren an virtuelle Maschinen werden Affinitäts- und Anti-Aaffinitätsregeln genutzt.

IT-Administratoren sollten sich immer im Klaren darüber sein, welche CPU-Ressourcen verfügbar sind und wie sie über den Hypervisor den einzelnen virtuellen Maschinen zur Verfügung gestellt werden. Das CPU-Overcommitment kann durchaus dabei helfen, die Anzahl möglicher virtueller Maschinen zu erhöhen, gerade anspruchsvolle Workloads werden dabei aber in Mitleidenschaft gezogen. Die VM-Performance leidet aber auch durch eine suboptimale Zuweisung der vCPUs. Ressourcenengpässe lassen sich also am besten durch eine Kombination aus eingeschränktem Overcommitment und Affinitätsregeln vermeiden.

Folgen Sie SearchDataCenter.de auch auf Twitter, Google+, Xing und Facebook!

Erfahren Sie mehr über Server- und Desktop-Virtualisierung