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