Definition

Virtuelle CPU (vCPU)

Was ist eine virtuelle CPU (vCPU)?

Eine vCPU (virtuelle CPU) ist keine eigenständige physische CPU, sondern eine logische Recheneinheit, die von einem Hypervisor bereitgestellt wird. Sie repräsentiert eine virtuelle Instanz eines CPU-Kerns und ermöglicht es einer virtuellen Maschine (VM), einen Anteil der Rechenleistung einer physischen CPU zu nutzen, indem sie Ausführungs-Threads verarbeitet.

Wie funktionieren virtuelle CPUs?

Computer benötigen drei wichtige Ressourcen, um zu funktionieren: Storage (Festplattenspeicher, SSDs), Memory (RAM) und Rechenleistung (CPU). In einer VM verwaltet der Hypervisor die virtuellen Gastmaschinen (Gast-VMs) und teilt ihnen mit oder weist ihnen zu, auf wie viele virtuelle Ressourcen sie Zugriff haben. Der Hypervisor plant dann die Anforderungen der Gast-VM für die physische Hardware.

gleicher Hypervisor, dasselbe Host-Betriebssystem und dieselbe zugrunde liegende Host-Hardware (Storage, Memory und Rechenleistung)
Abbildung 1: Mehrere VMs, auf denen jeweils eigene Anwendungen und Gastbetriebssysteme ausgeführt werden, können denselben Hypervisor, dasselbe Host-Betriebssystem und dieselbe zugrunde liegende Host-Hardware (Storage, Memory und Rechenleistung) gemeinsam nutzen.

Jede vCPU steht für die Fähigkeit, einen Prozessor-Thread gleichzeitig auf der physischen CPU eines Systems auszuführen. Für jede vCPU läuft also ein Prozessor-Thread auf der physischen CPU. Wenn einer VM beispielsweise vier vCPUs zugewiesen sind, geht das Betriebssystem (OS) davon aus, dass es vier Threads gleichzeitig ausführen kann. Der Hypervisor ist dann dafür verantwortlich, die eingehenden Threads von der Gast-VM zur Ausführung auf die physische CPU zu verteilen.

Virtualisierte Systeme weisen einer einzelnen physischen CPU nicht dauerhaft eine einzige vCPU zu. Stattdessen nehmen sie die eingehenden Threads von den VMs entgegen und weisen sie nach Bedarf in einer Art Time-Slicing (Scheduling) den verfügbaren physischen CPU-Kernen zu. Dies ermöglicht eine bessere Auslastung der CPU-Ressourcen.

Erschwerend kommt hinzu, dass die meisten Server-CPUs mithilfe von simultanem Multithreading oder Hyperthreading zwei Threads pro CPU-Kern ausführen können. Jede vCPU entspricht etwa der Hälfte eines physischen Kerns der Verarbeitungsleistung oder einem CPU-Thread.

Hyper-Threading steigert die Auslastung der CPU, liefert aber nicht immer eine proportionale Leistungssteigerung. Besonders bei rechen- oder speicherintensiven Workloads kann das parallele Ausführen zweier Threads pro Kern zu Engpässen führen. In solchen Fällen ist es oft sinnvoll, SMT (Simultaneous Multithreading) zu deaktivieren oder bewusst weniger vCPUs zuzuweisen.

Überbelegung von vCPUs

Die Zuweisung von mehr vCPUs als verfügbaren physischen Kernen wird als Überbelegung bezeichnet. Eine moderate Überbelegung ist in der Regel akzeptabel, da die meisten VMs selten ihre gesamte verfügbare CPU-Leistung nutzen. Stattdessen sind sie oft über lange Zeiträume hinweg weitgehend untätig und verbrauchen dann für kurze Aktivitätsphasen viele Ressourcen.

Wenn in einem überbelegten System viele vCPUs gleichzeitig verwendet werden, kann es zu Ressourcenkonflikten kommen, wodurch die Leistung beeinträchtigt wird. Um diese Möglichkeit zu begrenzen, ist es am besten, die Anzahl der verwendeten vCPUs unter Berücksichtigung der gesamten physischen CPUs und der erwarteten Arbeitslast zu planen. Beispielsweise weist eine Endbenutzer-Client-VM je nach Benutzeraktivität unregelmäßige Leistungsschwankungen auf, während ein Server besser vorhersehbar ist. Einige VMs laufen möglicherweise immer mit hoher CPU-Auslastung und sollten nicht überbelegt werden.

Cloud-Anbieter können entscheiden, ob sie vCPUs je nach VM-Typ, Kosten und Nutzungsbedingungen überbelegen oder es vermeiden. Beispielsweise weisen die meisten High-End-AWS-Tiers einen vCPU pro physischem CPU-Thread zu. Einige kleinere AWS-T2-Instanzen werden stattdessen als Burstable Performance Instances klassifiziert, die darauf beschränkt sind, nicht ständig einen gesamten physischen CPU-Kern zu nutzen.

vCPUs sind in heutigen Cloud-Umgebungen nicht mehr starr an eine VM gebunden. Sie können dynamisch hinzugefügt oder entfernt werden, beispielsweise bei Autoscaling oder Live-Migrationen. Dadurch wird die Ressourcenverteilung flexibler und effizienter, insbesondere in elastischen Workloads.

Bei dedizierten VM-Hypervisoren können Administratoren Regeln festlegen, um zu bestimmen, wie sie mit Ressourcenkonflikten umgehen. Beispielsweise weist VMware ESXi standardmäßig allen VMs die gleiche Priorität zu. Wenn Administratoren sicherstellen möchten, dass eine VM immer über eine bestimmte Kapazität verfügt, können sie eine Reservierung festlegen, um ihr einen bestimmten Teil der physischen CPU-Leistung zuzuweisen. Es kann auch eine Aufteilung festgelegt werden, um einer VM im Falle von Ressourcenengpässen eine höhere oder niedrigere Priorität als anderen zuzuweisen.

Viele Virtualisierungsplattformen wie VMware ESXi oder Microsoft Hyper-V unterstützen mittlerweile das Hot-Add-Feature. Damit lassen sich vCPUs im laufenden Betrieb hinzufügen, ohne dass ein Neustart der VM erforderlich ist. Diese Funktion erleichtert die flexible Skalierung bei wechselnden Anforderungen erheblich.

Verwaltung von ESXi mit Anzeige von CPU-, Memory- und Storage-Statistiken
Abbildung 2: Das ist die Verwaltung von ESXi mit Anzeige von CPU-, Memory- und Storage-Statistiken sowie einer Vielzahl weiterer Einstellungen.

Wie viele vCPUs befinden sich in einer CPU?

Als Faustregel entspricht eine vCPU in etwa einem logischen CPU-Thread. Der Hypervisor kann jedoch mehr vCPUs zuweisen, als physische Threads vorhanden sind (Überbelegung). Dies ermöglicht eine bessere Auslastung, kann aber bei hoher Last zu Performanceeinbußen führen. Die meisten physischen Server-CPUs haben zwei Threads pro Kern, also zwei vCPUs pro CPU-Kern. Um die Anzahl der vCPUs für Intel-Xeon- und AMD-Prozessoren zu berechnen, multiplizieren Sie die Anzahl der physischen CPU-Kerne mit zwei.

Abbildung 3: Multicore-Prozessoren verfügen über mehrere Verarbeitungseinheiten (Kerne). Multiplizieren Sie jeden Kern mit zwei, um die Anzahl der verfügbaren vCPUs zu ermitteln.
Abbildung 3: Multicore-Prozessoren verfügen über mehrere Verarbeitungseinheiten (Kerne). Multiplizieren Sie jeden Kern mit zwei, um die Anzahl der verfügbaren vCPUs zu ermitteln.

Bei CPUs ohne Multithreading, wie beispielsweise Arm-Prozessoren, ist es eine vCPU pro physischem CPU-Kern.

In der Praxis können Administratoren so viele vCPUs pro physischem CPU-Kern zuweisen, wie es die Auslastung zulässt.

Virtuelle CPUs auf einen Blick

Eine vCPU (virtuelle CPU) ist ein vom Hypervisor bereitgestellter Ausführungs-Thread für virtuelle Maschinen. Sie entspricht in der Regel einem logischen CPU-Thread eines physischen Kerns, oft mit Hyper-Threading (zwei Threads pro Kern). vCPUs werden dynamisch per Time-Slicing zugewiesen und können überbelegt werden, um Ressourcen besser auszulasten. Moderate Überbelegung ist üblich, kann aber bei hoher Last zu Leistungseinbußen führen. Moderne Cloud-Plattformen unterstützen vCPU-Hot-Add und flexible Skalierung.

Erfahren Sie mehr über Containervirtualisierung