Eine physische CPU kann nur eine Sache gleichzeitig tun – wie teilt man sie also fair auf mehrere VMs auf? Genau das ist die Aufgabe der CPU-Virtualisierung. Der Hypervisor verwaltet den Zugriff aller VMs auf die physischen CPU-Kerne und sorgt dafür dass jede VM das Gefühl hat eine eigene CPU zu besitzen – auch wenn sie sich diese in Wirklichkeit mit anderen teilt.
Begriff | Bedeutung | Beispiel |
|---|---|---|
Physischer Core | Echter CPU-Kern in der Hardware | Intel Xeon mit 16 Cores |
Thread | Logischer Kern durch Hyper-Threading | 16 Cores × 2 = 32 Threads |
vCPU | Virtueller CPU-Kern der einer VM zugewiesen wird | VM bekommt 4 vCPUs zugewiesen |
Eine vCPU (Virtual CPU) ist aus Sicht der VM ein vollwertiger CPU-Kern. In Wirklichkeit ist sie ein Zeitslot auf einem physischen Core – der Hypervisor verteilt die Rechenzeit des echten Kerns auf alle VMs die ihn nutzen.
Physischer Server: 1 CPU mit 8 Cores, Hyper-Threading → 16 Threads
Zuweisung:
VM 1 (Webserver): 2 vCPUs
VM 2 (Datenbank): 4 vCPUs
VM 3 (Mailserver): 2 vCPUs
VM 4 (Monitoring): 2 vCPUs
──────────
Gesamt: 10 vCPUs auf 16 verfügbaren Threads → kein OvercommitmentOvercommitment bedeutet dass mehr vCPUs vergeben werden als physische Threads vorhanden sind. Das klingt problematisch – funktioniert in der Praxis aber oft gut, weil VMs selten alle gleichzeitig 100% CPU-Last haben.
Beispiel Overcommitment:
Physische Threads: 16
VM 1: 4 vCPUs
VM 2: 4 vCPUs
VM 3: 4 vCPUs
VM 4: 4 vCPUs
VM 5: 4 vCPUs
──────────
Total: 20 vCPUs auf 16 Threads → Overcommitment-Ratio 1,25:1
Typische Richtwerte:
- Verhältnis bis 2:1 → unkritisch
- Verhältnis bis 4:1 → akzeptabel bei gemischten Lasten
- Verhältnis über 4:1 → Vorsicht – Performance-Probleme möglichWann wird Overcommitment problematisch? Wenn mehrere VMs gleichzeitig Spitzenlast haben konkurrieren sie um die physischen Cores. Der Hypervisor muss dann priorisieren – VMs warten auf CPU-Zeit was zu CPU Ready führt: die VM ist rechenbereit aber bekommt keinen Core zugeteilt.
Früher musste der Hypervisor jeden CPU-Befehl einer VM abfangen und übersetzen – das war langsam und aufwändig. Moderne CPUs haben deshalb spezielle Erweiterungen die Virtualisierung direkt in Hardware beschleunigen:
Erweiterung | Hersteller | Bedeutung |
|---|---|---|
Intel VT-x | Intel | Virtualization Technology for IA-32/64 |
AMD-V (SVM) | AMD | AMD Virtualization (Secure Virtual Machine) |
Intel VT-d | Intel | Virtualization Technology for Directed I/O (PCIe-Durchleitung) |
AMD-Vi (IOMMU) | AMD | I/O Memory Management Unit (PCIe-Durchleitung) |
VT-x / AMD-V sind die Grundvoraussetzung für jeden modernen Hypervisor. Ohne diese Erweiterungen ist keine hardwarebeschleunigte Virtualisierung möglich. Im BIOS/UEFI müssen sie aktiviert sein – bei manchen Systemen sind sie standardmäßig deaktiviert.
BIOS-Einstellung prüfen:
Intel: "Intel Virtualization Technology" → Enabled
AMD: "SVM Mode" oder "AMD-V" → Enabled
Linux – Prüfen ob VT-x/AMD-V aktiv ist:
grep -E 'vmx|svm' /proc/cpuinfo
vmx → Intel VT-x vorhanden
svm → AMD-V vorhandenModerne CPUs kennen verschiedene Privilegierungsebenen (Ringe) die bestimmen welcher Code was darf:
Ring 0 – Kernel Mode: Betriebssystem-Kernel (höchste Rechte)
Ring 1 – (selten genutzt)
Ring 2 – (selten genutzt)
Ring 3 – User Mode: Anwendungen (eingeschränkte Rechte)Das Problem bei der Virtualisierung: Der Guest-Kernel glaubt in Ring 0 zu laufen – darf es aber nicht wirklich, weil der Hypervisor Ring 0 belegt. Ohne Hardwareunterstützung musste der Hypervisor diese Befehle abfangen und emulieren (Binary Translation).
Mit VT-x/AMD-V gibt es einen neuen Ring-Modus (VMX Root / VMX Non-Root):
VMX Root Mode: Hypervisor läuft hier (voller Zugriff)
VMX Non-Root Mode: Alle VMs laufen hier (eingeschränkt aber effizient)
→ VMs können privilegierte Befehle direkt ausführen
→ Bei kritischen Befehlen: VM-Exit → Hypervisor übernimmt → VM-EntryMit VT-d / AMD-Vi (IOMMU) kann eine physische PCIe-Hardware direkt und exklusiv an eine VM durchgereicht werden – ohne Overhead durch den Hypervisor:
Anwendungsfall | Beschreibung |
|---|---|
GPU-Passthrough | Grafikkarte direkt an Gaming-VM – native Performance |
NIC-Passthrough | Netzwerkkarte direkt an VM für maximalen Durchsatz |
USB-Controller | USB-Geräte direkt an VM weiterleiten |
NVMe-Passthrough | SSD direkt an VM für maximale Storage-Performance |
Bei Servern mit mehreren CPUs (Multi-Socket) ist nicht jeder RAM-Riegel gleich weit von jeder CPU entfernt. Dieses Konzept heißt NUMA:
Socket 0 (CPU 0) Socket 1 (CPU 1)
├── Cores 0-7 ├── Cores 8-15
└── RAM Bank 0 (lokal) └── RAM Bank 1 (lokal)
↕ (langsamer Zugriff über QPI/UPI)
└── Zugriff auf fremden RAM möglich aber langsamerBei der VM-Konfiguration sollte darauf geachtet werden dass vCPUs und RAM einer VM aus dem gleichen NUMA-Knoten stammen – sonst entstehen Latenzen durch Remote-Speicherzugriffe.
Beispiel: Proxmox VM-Konfiguration
Sockets: 1 → Anzahl simulierter CPU-Sockets
Cores: 4 → Cores pro Socket
vCPUs: 1 × 4 = 4 → Gesamt-vCPUs
Empfehlungen:
✓ CPU-Typ auf "host" setzen → VM bekommt echte CPU-Features
✓ NUMA-Topologie der Hardware nachbilden
✓ Overcommitment im Blick behalten (max. 4:1)
✗ Nie mehr vCPUs als physische Threads bei Hochlast-VMsvCPUs sind virtuelle CPU-Kerne die der Hypervisor auf physische Threads verteilt
Overcommitment bedeutet mehr vCPUs vergeben als physische Threads vorhanden sind
Overcommitment bis 4:1 ist meist akzeptabel – bei gleichzeitiger Spitzenlast problematisch
Intel VT-x und AMD-V sind Hardware-Erweiterungen die Virtualisierung beschleunigen
Ohne VT-x/AMD-V ist keine moderne hardwarebeschleunigte Virtualisierung möglich
VT-d/AMD-Vi (IOMMU) ermöglicht PCIe-Passthrough für native Hardware-Performance
CPU Ready ist ein Zeichen für zu hohes Overcommitment
NUMA-Topologie bei Multi-Socket-Systemen bei der VM-Planung berücksichtigen