KVM Performance Optimierungen auf Hypervisor / Linux Ebene UnFUG WS12/13 17. Januar 2013 1 / 32
Agenda Einleitung 1 Einleitung 2 3 4 5 2 / 32
Hintergrund / Motivation Seminararbeit für die WPV Cloud Computing bei Prof. Dr. Reich Jedoch mit Hintergrund: Implementierung in die Studicloud der HFU Bisher keine gezielten Optimierungen in der CloudIA durchgeführt 3 / 32
Untersuchter Hypervisor Kernel Virtual Machine (KVM) Full virtualization Mehr: Virtuelle Maschinen - mit Workshop Slides vom 13.12.2012 @ unfug.org 4 / 32
Definierte Szenarien Density Hoher Input/Output Hohe CPU-Anforderungen Hoher Netzwerkdurchsatz 5 / 32
Hostssysstem Einleitung Server / VMs Benchmarks Dell PowerEdge M610 Blade in PowerEdge M1000e Chassis CPU: 4x Intel(R) Xeon(R) CPU X5660 @ 2.80GHz RAM: 6x 8GB DDR3 RAM @ 1333MHz NIC: Broadcom M5709t (1GB Ethernet) Betriebssystem: CentOS 6.3, 64bit 6 / 32
VMs Einleitung Server / VMs Benchmarks Debian Squeeze AMD64 Desktop und Standard-Image http://people.debian.org/~aurel32/qemu/ 7 / 32
Verwendete Benchmarks Server / VMs Benchmarks Netperf Netzwerk-Benchmark Homepage: http://www.netperf.org/netperf/ Benchmark-Skript: http://www.monstr.eu/wiki/ doku.php?id=kernel:testing:net Bonnie++ Filesystem-Benchmark Homepage: http://www.coker.com.au/bonnie++/ Bonnie++ zu Gnuplot: http://pastebin.com/er42mufu 8 / 32
Tickless Kernel Einleitung Ohne Tickless: CPU wird mit fest vorgegebenen Frequenz durch Kernel aufgeweckt Mit Tickless: Keine periodische Abfrage, nur bei Bedarf Kernel-Option: CONFIG_NO_HZ=y Per Default unter CentOS 6.x und Debian 6.0 aktiviert 9 / 32
PVClock Einleitung Feature von KVM Guest kann Zeit mit Host synchronisieren ohne eigene Zeit synchron halten zu müssen. cat /sys/devices/system/clocksource/clocksource0/current_clocksource -> Output: kvm-clock Performanceunterschied nicht messabar Verursacht immer mal wieder Probleme, Notfalls Wechsel auf TSC 10 / 32
Huge Pages / Transparent Huge Pages Memory Management Unit (MMU) beinhaltet Liste (page table) aller 4KB Pages Bei Einsatz von Huge Pages mit 2 MB entfällt page table Performance-Zuwachs von 2% bis 10% [Rie10] Huge Pages müssen zur Bootzeit zugewiesen werden Automatisierte Verwaltung der Huge Pages durch Transparent Huge Pages Per Default unter CentOS 6.x aktiviert cat /sys/kernel/mm/(redhat_)transparent_hugepage/enabled 11 / 32
Abbildung : Huge Pages Quelle: http://publib.boulder.ibm.com/infocenter/ lnxinfo/v3r0m0/topic/liaat/liaattunhp.htm 12 / 32
Einleitung Kernel Samepage Merging Mehrfachvergabe von Arbeitsspeicher Seit 2.6.32 in Kernel integriert Zusätzlicher Service ksm und ksmtuned unter RHEL / CentOS 6.x verfügbar Bei zu Agressiven Einstellungen von erhöhter CPU Verbrauch möglich 13 / 32
Abbildung : page sharing in action Quelle: [Rie10] 14 / 32
I/O Scheduler Einleitung CFQ Scheduler ab Kernel 2.6.18 Default-Scheduler Ausgeglichene Performance und eine geringe Lese- Latenzzeit Alternative: Deadline Scheduler Erhöhter Durchsatz möglich Auslesen über: cat /sys/block/<device>/queue/scheduler 15 / 32
VhostNet Einleitung Benötigt qemu-kvm-0.13.0 oder höher Kernel-Modul: vhost_net Benutzung des Kernels anstatt Qemu zum versenden / empfangen von Paketen Erhöhter Netzwerkdurchsatz libvirt aktiviert dieses Feature bei geladenem Kerne-Modul automatisch 16 / 32
Benchmark Einleitung VHostNet I/O Scheduler Zusammenfassung Benchmark mit Netperf von Guest zu Host Beschreibung aller Werte unter: http://www.netperf.org/svn/netperf2/tags/ netperf-2.6.0/doc/netperf.html 17 / 32
VHostNet I/O Scheduler Zusammenfassung Abbildung : TCP_STREAM 18 / 32
VHostNet I/O Scheduler Zusammenfassung Abbildung : UDP_STREAM 19 / 32
VHostNet I/O Scheduler Zusammenfassung Abbildung : TCP_MAERTS 20 / 32
VHostNet I/O Scheduler Zusammenfassung Abbildung : TCP_RR 21 / 32
VHostNet I/O Scheduler Zusammenfassung Abbildung : TCP_CRR 22 / 32
VHostNet I/O Scheduler Zusammenfassung Abbildung : UDP_RR 23 / 32
Benchmark Einleitung VHostNet I/O Scheduler Zusammenfassung Benchmark mit Bonnie++ Beschreibung aller Werte unter: http: //www.coker.com.au/bonnie++/readme.html 24 / 32
VHostNet I/O Scheduler Zusammenfassung 25 / 32
VHostNet I/O Scheduler Zusammenfassung 26 / 32
VHostNet I/O Scheduler Zusammenfassung 27 / 32
Statistiken Einleitung VHostNet I/O Scheduler Zusammenfassung Messung durch Benchmarks nicht möglich, da nur Arbeitsspeicherverbrauch auf Host Auslesen von Statistiken möglich: grep "/sys/kernel/mm/ksm/* Beschreibung der Statistiken in: [IBM12] Zusätzlich Speicherverbrauch per: free -m 28 / 32
VHostNet I/O Scheduler Zusammenfassung Statistik Tabelle : Statistiken für Debian Standard-Image Wert pages_shared 16632 pages_sharing 93836 pages_unshared 27107 pages_volatile 583 Speicherverbrauch ohne 1396 MB Speicherverbrauch mit 1047 MB 29 / 32
VHostNet I/O Scheduler Zusammenfassung Statistik Tabelle : Statistiken für Debian Desktop-Image Wert pages_shared 31587 pages_sharing 142193 pages_unshared 109722 pages_volatile 4160 Speicherverbrauch ohne 2020 MB Speicherverbrauch mit 1493 MB 30 / 32
Zusamenfassung Einleitung VHostNet I/O Scheduler Zusammenfassung Aktivierung von VHostNet erhöhter Durchsatz, jedoch auch erhöhte RTT Arbeitsspeicher-Einsparungen von schon bei Default-Einstellungen sichtbar Kaum unterschied zwischen CFQ und Deadline-Scheduler sichtbar CFQ sogar mit höherer Transferrate Deadline erzielt höhere Anzahl von Operationen Benchmarks basierend auf synthetische Benchmarks -> Praxis meistens andere 31 / 32
IBM: Kernel Virtual Machine (KVM) - Best practices for KVM. http://publib.boulder.ibm.com/infocenter/ lnxinfo/v3r0m0/topic/liaat/ liaatbestpractices_pdf.pdf. Version: 2012. Abgerufen: 30.11.2012 RIEL, Rik van: Kernel Optimizations for KVM. Red Hat Summit / JBoss World. http://surriel.com/system/files/ summit2010-kvm-optimizations.pdf. Version: June 2010. Abgerufen: 24.11.2012 32 / 32