RAM ist eine der kritischsten Ressourcen in einer virtualisierten Umgebung. Anders als bei der CPU wo kurze Wartezeiten tolerierbar sind kann ein Mangel an Arbeitsspeicher eine VM komplett zum Stillstand bringen. Ein gutes Verständnis des Memory Managements ist deshalb für jeden Systemintegrator unverzichtbar.
Der Hypervisor muss den verfügbaren physischen RAM intelligent auf alle laufenden VMs verteilen – und dabei sowohl Performance als auch Effizienz im Blick behalten.
Begriff | Bedeutung | Beispiel |
|---|---|---|
Physischer RAM | Echter Arbeitsspeicher im Server | 128 GB RAM-Riegel im Host |
Virtueller RAM (vRAM) | Der einer VM zugewiesene Arbeitsspeicher | VM bekommt 16 GB zugewiesen |
Aktiver RAM | RAM der von der VM tatsächlich genutzt wird | VM nutzt nur 8 GB der 16 GB |
Overhead-RAM | RAM den der Hypervisor selbst für eine VM benötigt | Ca. 100-200 MB pro VM für Verwaltung |
Wie bei der CPU kann auch RAM überbucht werden – Memory Overcommitment bedeutet dass mehr vRAM vergeben wird als physisch vorhanden ist:
Physischer RAM: 128 GB
VM 1: 32 GB vRAM
VM 2: 32 GB vRAM
VM 3: 32 GB vRAM
VM 4: 32 GB vRAM
VM 5: 16 GB vRAM
──────────
Total: 144 GB vRAM auf 128 GB physisch → Overcommitment
Funktioniert weil VMs selten ihren gesamten RAM gleichzeitig nutzen.Memory Overcommitment ist aber riskanter als CPU-Overcommitment: Wenn mehrere VMs gleichzeitig viel RAM benötigen muss der Hypervisor aktiv eingreifen – mit verschiedenen Techniken.
Der Hypervisor sucht nach identischen Speicherseiten (4 KB Blöcke) in verschiedenen VMs und konsolidiert diese zu einer einzigen physischen Kopie:
VM 1: Windows Server 2022
VM 2: Windows Server 2022
Beide VMs haben identische Kernel-Seiten im RAM:
Ohne TPS: 2 × 512 MB Kernel = 1.024 MB physischer RAM belegt
Mit TPS: 1 × 512 MB Kernel = 512 MB physischer RAM belegt
→ 512 MB gespart!
Bei Schreibzugriff: Copy-on-Write
→ Die geteilte Seite wird kopiert bevor sie verändert wirdTPS funktioniert am besten wenn viele VMs mit demselben Betriebssystem laufen. Bei modernen Betriebssystemen mit ASLR (Address Space Layout Randomization) ist die Effizienz gesunken.
Ein spezieller Treiber (Balloon Driver) wird in jeder VM installiert. Wenn der Hypervisor RAM zurückgewinnen möchte "bläst er den Ballon auf" – der Treiber reserviert RAM innerhalb der VM sodass das Gast-OS anderen Prozessen weniger RAM zur Verfügung stellt:
Normaler Zustand:
VM hat 16 GB zugewiesen, nutzt 12 GB aktiv
Balloon Driver: inaktiv (0 GB reserviert)
Hypervisor braucht RAM zurück:
Balloon Driver bläst auf: reserviert 4 GB innerhalb der VM
→ VM-OS muss Prozesse auslagern (Swapping)
→ Hypervisor bekommt 4 GB physischen RAM zurück
Vorteile:
✓ VM-OS entscheidet selbst welche Seiten ausgelagert werden
✓ Effizienter als blindes Auslagern durch den Hypervisor
Voraussetzung:
✓ VMware Tools / Hyper-V Integration Services installiertAls letztes Mittel lagert der Hypervisor RAM-Seiten einer VM auf die Festplatte aus – in eine Swap-Datei:
VMware ESXi: .vswp-Datei pro VM
Hyper-V: Smart Paging File
Proxmox/KVM: Host-Swap
Performance-Auswirkung: ERHEBLICH
RAM-Zugriff: ~100 ns
SSD-Zugriff: ~100.000 ns (1.000× langsamer)
HDD-Zugriff: ~10.000.000 ns (100.000× langsamer)
→ Hypervisor-Swap sollte immer vermieden werden!Bevor der Hypervisor auf Festplatten-Swap zurückgreift versucht er RAM-Seiten zu komprimieren und in einem Komprimierungs-Cache zu halten:
Ablauf (VMware ESXi):
1. TPS – identische Seiten zusammenführen
2. Ballooning – RAM von VMs zurückfordern
3. Compression – Seiten komprimieren (Cache im RAM)
4. Swap – Seiten auf Disk auslagern (letzter Ausweg)
Kompression:
→ Typisch 2:1 Kompressionsrate
→ Zugriff viel schneller als Disk-Swap
→ Kostet CPU-Zeit für Komprimierung/DekomprimierungMicrosoft Hyper-V hat eine eigene Implementierung namens Dynamic Memory. Statt fester RAM-Zuweisung arbeitet Hyper-V mit Grenzen:
Parameter | Bedeutung | Beispiel |
|---|---|---|
Startup RAM | RAM beim Start der VM | 2 GB |
Minimum RAM | Untergrenze – weniger bekommt die VM nie | 512 MB |
Maximum RAM | Obergrenze – mehr bekommt die VM nie | 16 GB |
Memory Buffer | Puffer über aktuellem Bedarf in % | 20% |
Memory Weight | Priorität bei Engpässen | Hoch/Mittel/Niedrig |
Beispiel Dynamic Memory:
VM startet mit 2 GB
Anwendung benötigt mehr RAM:
→ Hyper-V gibt bis zu 16 GB (Maximum) dynamisch zu
Anwendung braucht weniger:
→ Hyper-V holt RAM zurück (Minimum: 512 MB)Bei Multi-Socket-Servern ist es wichtig dass VM-RAM aus dem gleichen NUMA-Knoten wie die vCPUs der VM stammt:
Optimale Konfiguration (NUMA-bewusst):
Socket 0: CPU 0-7 + RAM Bank 0 (64 GB)
└── VM 1: vCPUs von Socket 0, RAM von Bank 0 ✓
Schlechte Konfiguration (NUMA-übergreifend):
Socket 0: CPU 0-7
Socket 1: RAM Bank 1
└── VM 1: vCPUs von Socket 0, RAM von Bank 1 ✗
→ Remote-Speicherzugriffe = höhere LatenzStandardmäßig verwaltet ein System RAM in 4 KB großen Seiten. Huge Pages (Linux) bzw. Large Pages (Windows) verwenden 2 MB große Seiten:
Merkmal | Standard Pages | Huge Pages |
|---|---|---|
Seitengröße | 4 KB | 2 MB (512× größer) |
TLB-Einträge nötig | Viele | Wenige |
Performance | Standard | Besser bei großen Workloads |
TPS möglich | Ja | Nein |
Einsatz | Allgemein | Datenbanken, SAP, HPC |
Szenario | Empfehlung |
|---|---|
Produktions-VMs | Kein oder minimales Overcommitment – RAM-Bedarf genau planen |
Test/Dev VMs | Overcommitment bis 1,5:1 akzeptabel |
Balloon Driver | Immer VMware Tools / Integration Services installieren |
Hypervisor-Swap | Unbedingt vermeiden – deutet auf RAM-Mangel hin |
Monitoring | Balloon-Aktivität und Swap-Nutzung überwachen |
NUMA | VM-RAM immer aus lokalem NUMA-Knoten |
Memory Overcommitment vergibt mehr vRAM als physisch vorhanden – riskanter als CPU-Overcommitment
TPS (Transparent Page Sharing) konsolidiert identische Speicherseiten verschiedener VMs
Ballooning fordert RAM von VMs zurück über einen Treiber im Gast-OS
Memory Compression komprimiert Seiten bevor auf Disk-Swap zurückgegriffen wird
Hypervisor-Swap ist das letzte Mittel und erheblich langsamer als RAM
Hyper-V Dynamic Memory passt RAM-Zuweisung dynamisch zwischen Minimum und Maximum an
NUMA-bewusstes Memory Management verhindert langsame Remote-Speicherzugriffe
Huge Pages verbessern Performance bei großen Workloads wie Datenbanken