Die Linux Kernel Virtual Machine - Wo steht der Linux

Transcrição

Die Linux Kernel Virtual Machine - Wo steht der Linux
Die Linux Kernel Virtual Machine - Wo steht der
Linux Hypervisor?
2. März 2008
Jörg Rödel
Virtualization - Whats out there?
• Virtualisierung hat bereits längere Geschichte auf x86
• Startete mit VMware
• Setzte sich fort mit Emulationslösungen wie Bochs und QEmu
• Entwickelte sich hin zu Xen, VirtualBox und später auch KVM
Jörg Rödel
1
Virtualisierungsansätze
• Im Wesentlichen zwei Ansätze vorhanden
1. Vollständige Virtualisierung - KVM
2. Para-Virtualisierung - Xen
• Auch Mischformen vorhanden
• Optimale Performance erreicht man mit Para-Virtualisierung von HardwareKomponenten, die keine Unterstützung für Virtualisierung bieten
Jörg Rödel
2
Linux and KVM
• KVM ist direkt in den Linux-Kernel integriert
• Nutzt vorhandene Infrastruktur des Linux-Kernels wie Scheduler und Speicherverwaltung
• Ist dadurch nicht sehr komplex - kann von einer Person komplett verstanden
werden
• Nutzt (und benötigt) CPU Unterstützung für Virtualisierung wie AMD-SVM
oder Intel-VMX
• Verwendet QEMU um Devices zu emulieren
Jörg Rödel
3
Hardware Virtualization
• Seit 2005 sind x86-Prozessoren verfügbar, die spezielle Hardware Erweiterungen
für Virtualisierung bereit stellen
• Erweiterungen sind abhängig vom Hersteller - AMD-V und Intel VT-x
• Funktionsweise ist aber prinzipiell ähnlich
• Datenstruktur beschreibt den Prozessorzustand des Gastes und welche Ereignisse den Gast unterbrechen sollen
• Neue Instruktion versetzt den Prozessor in den Gast-Modus
Jörg Rödel
4
AMD Nested Paging
• Prozessorvirtualisierung schließt nicht die MMU mit ein
• MMU muß in Software emuliert werden - Shadow Paging
• Kostet sehr viel Performance
• Nested Paging in AMD Barcelona Chips virtualisiert die MMU und verbessert
Performance signifikant
Jörg Rödel
5
Vollständige Virtualisierung - KVM
• Wird von KVM als Standard verwendet
• Gast soll keinen Unterschied zu echter Hardware bemerken
• Erlaubt die Virtualisierung von unveränderten Betriebssystemen
• Derzeit einizge Möglichkeit Windows als Gast zu benutzen
• Zugriffe des Gastes auf Hardware werden abgefangen und emuliert
• Betriebssystem weiß meist nichts von der Virtualisierung
Jörg Rödel
6
Funktionsweise von KVM
Jörg Rödel
7
Para-Virtualisierung - Xen
• Xen benutzt diese Variante für Dom0 und DomU (nicht HVM)
• Betriebssystem und Hypervisor arbeiten Hand in Hand
• Gast arbeitet weitgehend selbstständig
• Für privilegierte Zugriffe auf die Hardware wird explizit der Hypervisor aufgerufen - Hypercall
• Vergleichbar mit Syscalls zwischen Anwendungsprogramm und Betriebssystem
Jörg Rödel
8
Funktionsweise von Xen
Jörg Rödel
9
Xen vs. KVM - Features
• KVM ist deutlich jünger als Xen
• Seit der Integration in den Mainline Linux-Kernel hat sich allerdings viel getan.
• Funktionsumfang von KVM ist heute allerding fast mit Xen vergleichbar
• Stabilität in KVM leidet allerdings unter schneller Entwicklung
• Im Folgenden einige Details zu Memory Ballooning und Fast Device Access
Jörg Rödel
10
Memory Balooning
• KVM beherrscht dieses Feature mit Kernel 2.6.25
• Idee: Gast kann dynamisch Speicher abgeben oder neu allokieren
• Hauptspeicher muss nicht statisch an die Gäste verteilt werden
• Benötigt einen Treiber im Gast-Betriebssystem
• In Xen bereits seit langer Zeit vorhanden
Jörg Rödel
11
Paravirtual Device Access - Motivation
Jörg Rödel
12
Paravirtual Device Access - Zustand
• Mit 2.6.25 sind Treiber für Paravirtualisierte Hardware im Linux-Kernel
• Bisher für Block und Network Devices
• Sind über einen neuen BUS implementiert: VirtIO
• Dadurch steigt der Datendurchsatz signifikant
• Performance reicht fast an echte Hardware heran
Jörg Rödel
13
Paravirtual Device Access - Xen vs. KVM
• In KVM ist diese Funktionalität noch sehr neu
• Dadurch laufen diese Treiber noch nicht entsprechend zuverlässig
• Xen bietet paravirtualisierte Geräte seit Anfang an
• In Xen auch für HVM-Gäste vorhanden
• Treiber für Windows in HVM-Xen
Jörg Rödel
14
SMP und Live Migration
• Mit diesem Feature lassen sich Gast-Betriebsysteme im laufenden Betrieb auf
einen anderen Rechner migrieren
• Unterstützung dafür sowohl in Xen als auch in KVM vorhanden
• KVM unterstützt die Migration von Gästen zwischen AMD und Intel CPUs
• Sogar Migration zwischen 32 und 64 bit Linux ist möglich (nur mit 32bit
Gästen)
• Support für Gast-SMP ist auch in Xen und KVM seit eingiger Zeit vorhanden
Jörg Rödel
15
Device Passthrough
• Xen bietet seit Version 3.2.0 Device Passthrough an
• Damit kann physische Hardware einem Gast exklusiv zugewiesen werden
• Benötigt IOMMU-Hardware von AMD oder Intel
• KVM hat dieses Feature bisher nicht
• Grund ist eingeschränkte Unterstützung für IOMMU im Linux-Kernel
• Es wird daran gearbeitet dies zu beheben
Jörg Rödel
16
Support für große Seiten
• X86 unterstützt neben 4kb großen auch 2/4MB Seiten
• Mit den großen Seiten lässt sich deutliche besser Abdeckung im TLB erreichen
• Ergebnis sind weniger TLB-Misses und damit höhere Performance bei Verwendung von großen Seiten
• KVM wird große Seiten mit KVM-63 unterstützen, Xen hat auch Unterstützung
dafür
Jörg Rödel
17
Fast TPR Access
• Einige Windows Versionen beschreiben sehr häufig das TPR
• Jeder Zugriff auf das TPR wird vom Hypervisor emuliert
• Das kostet in Windows sehr viel Performance
• KVM patcht diese Zugriffe und emuliert sie direkt im Gast
Jörg Rödel
18
Features - Zusammenfassung
• Xen und KVM haben vergleichbare Funktionalität
• KVM fehlt Device Passthrough
• Vorteil von Xen ist die ausgereifte Paravirtualisierung
• Para-Virtualisierung für KVM steht noch am Anfang
• Kernel 2.6.25 unternimmt erste Schritte in diese Richtung
Jörg Rödel
19
Performance
• Neben den Features ist gute Performance sehr wichtig für einen Hypervisor
• Hauptsächlich interessieren bei Performance 3 Bereiche:
1. CPU-Performance
2. Block Device Performance
3. Netzwerk Performance
• Bei CPU-Performance kommt es vor allem auf die Virtualisierung/Emulation
der MMU an
• Folgende Folien zeigen die Performance von KVM und Xen im Vergleich zu
nativer Hardware
Jörg Rödel
20
Kernbench (CPU) Performance ohne Nested Paging
Jörg Rödel
21
Kernbench (CPU) Performance mit Nested Paging
Jörg Rödel
22
Network Device Performance (100MBit)
Jörg Rödel
23
KVM vs. Xen - Stability
• Stabilität leidet bei KVM manchmal unter der schnellen Weiterentwicklung
• Ähnliches Problem bei Xen
• Bei xen gibt es allerdings als stabil markierte Releases
• Die Releases bei KVM sind nur Snapshots des Developer-Trees
• Die KVM-Version im Mainline-Kernel ist häufig recht stabil
• Aufgrund der schnellen Weiterentwicklung allerdings auch schnell veraltet
Jörg Rödel
24
KVM vs. Xen - The Business Side
• Xen wird momentan bei vielen Distributionen mitgeliefert
• Darunter sind vor allem auch Enterprise-Distributionen zu finden
• Deshalb ist für Xen relativ einfach kommerzieller Support zu finden
• KVM hat diesen Vorteil noch nicht
• Das ändert sich aber gerade - Ubuntu Server hat den Anfang gemacht
• Andere Distributionen werden wahrscheinlich folgen da KVM durch seine
einfache Struktur wesentlich einfacher zu pflegen ist
Jörg Rödel
25
Conclusions
• KVM hat sich im vergangenen Jahr bedeutlich weiterentwickelt
• Bietet heute vergleichbaren Funktionsumfang wie Xen
• KVM ist Xen in Sachen Performance überlegen
• Problem von KVM ist die Stailität
• Stabilität wird sich verbessern sobald Distributionen es verstärkt unterstützen
Jörg Rödel
26