Wir verwenden Ubuntu 12.04 mit folgenden Parametern:
- Dell R910
- Kernel 3.2.0-25-generisch # 40-Ubuntu SMP x86_64 x86_64 x86_64 GNU / Linux
- kvm 1: 84 + dfsg-0ubuntu16 + 1.0 + noroms + 0ubuntu13
- qemu-kvm 1.0 + noroms-0ubuntu13
- qemu-common 1.0 + noroms-0ubuntu13
- qemu-kvm 1.0 + noroms-0ubuntu13
- 4 x Intel (R) Xeon (R) -CPU E7-4870 bei 2,40 GHz (jeweils mit 10 physischen Kernen, HT und Intel VT aktiviert)
- Die Windows-Gäste haben derzeit kein VirtIO, aber das wird sich bald ändern
Auf diesem Computer werden mehrere Windows-Gäste ausgeführt, einer davon ist Windows 2003 32 Bit, ein anderer Windows 2008 (64 Bit). Wir haben derzeit mit Leistungsproblemen zu kämpfen und haben mit den CPU-Modellen herumgespielt.
Wir verwenden normalerweise "qemu-system-x86_64" für unseren Windows 32-Bit-Gast, zB:
/usr/bin/qemu-system-x86_64 -S -M pc-1.0 -cpu qemu32 -enable-kvm -m 4096 -smp 4,sockets=4,cores=1,threads=1 [...]
Die Leistung dieses Gastes fiel etwas gering aus. Wir haben noch keinen Benchmark durchgeführt, aber nehmen wir an, dass das Kopieren großer Datenmengen (Dateien) innerhalb der VM von einem Verzeichnis in das andere viel schneller geht, wenn wir das CPU-Modell von "-cpu qemu32" auf "-cpu Nehalem" umstellen ". Das Kopieren von Dateien dauerte ca. 2: 40h. Jetzt innerhalb von 40 Minuten kopieren. Natürlich ist dies kein qualitativ hochwertiger Test und es gibt viel Raum für einen professionelleren Versuch. Dies ist jedoch ein klarer Hinweis darauf, dass die Auswahl des richtigen CPU-Modells die Leistung des Gasts erheblich beeinträchtigen kann.
Jetzt wurde ich neugierig und lief:
qemu-x86_64 -cpu ?
x86 [n270]
x86 [athlon]
x86 [pentium3]
x86 [pentium2]
x86 [pentium]
x86 [486]
x86 [coreduo]
x86 [kvm32]
x86 [qemu32]
x86 [kvm64]
x86 [core2duo]
x86 [phenom]
x86 [qemu64]
Und:
kvm -cpu ?model
x86 Opteron_G3 AMD Opteron 23xx (Gen 3 Class Opteron)
x86 Opteron_G2 AMD Opteron 22xx (Gen 2 Class Opteron)
x86 Opteron_G1 AMD Opteron 240 (Gen 1 Class Opteron)
x86 Nehalem Intel Core i7 9xx (Nehalem Class Core i7)
x86 Penryn Intel Core 2 Duo P9xxx (Penryn Class Core 2)
x86 Conroe Intel Celeron_4x0 (Conroe/Merom Class Core 2)
x86 [n270] Intel(R) Atom(TM) CPU N270 @ 1.60GHz
x86 [athlon] QEMU Virtual CPU version 1.0
x86 [pentium3]
x86 [pentium2]
x86 [pentium]
x86 [486]
x86 [coreduo] Genuine Intel(R) CPU T2600 @ 2.16GHz
x86 [kvm32] Common 32-bit KVM processor
x86 [qemu32] QEMU Virtual CPU version 1.0
x86 [kvm64] Common KVM processor
x86 [core2duo] Intel(R) Core(TM)2 Duo CPU T7700 @ 2.40GHz
x86 [phenom] AMD Phenom(tm) 9550 Quad-Core Processor
x86 [qemu64] QEMU Virtual CPU version 1.0
Bei all diesen verschiedenen Versionen ist es ein bisschen schwer zu erraten. "Nehalem" scheint auf dieser Liste am performantesten zu sein. Nun frage ich mich, wie ich feststellen kann, welches CPU-Modell für meinen Gast am besten geeignet ist. Beim Surfen im Internet habe ich folgende Ressourcen gefunden:
- http://rwmj.wordpress.com/2010/10/08/32-or-64-bit-virtual-cpu-in-kvm/
- http://www.linux-kvm.org/page/Tuning_KVM
Wenn ich diese Sites richtig lese, behaupten sie, dass "-cpu host" die beste Leistung bringen könnte. Ich mache mir noch keine Sorgen um die Migration, da beide KVM-Hosts gleich ausgestattet sind (genau die gleiche Hardware).
Was empfehlen erfahrene KVM-Administratoren? Gibt es eine goldene Regel oder sogar eine Matrix wie "Dieses Modell ist das beste für dieses Gastbetriebssystem"?
Ich entschuldige mich dafür, dass ich diese Informationen selbst herausfinden konnte. Ich habe verschiedene Google-Suchanfragen durchgeführt und viele Websites durchsucht. Ich konnte nichts finden, was meine Frage beantwortet.
Antworten:
Es ist wirklich ganz einfach. Verwenden Sie diese
host
Option für homogene Cluster und Einzelhost-Setups . Verwenden Sie für gemischte Cluster die niedrigste verfügbare CPU-Version. Wenn also ein Host Penryn und der andere Nehalem ist, verwenden Sie Penryn auf beiden.Wenn Sie RHEV oder oVirt verwenden, ist dies bereits integriert. VMWare hat dies als "EVC" bezeichnet und positioniert es als großes Feature.
Wenn Sie wieder zur Leistung zurückkehren, brauchen Sie auf jeden Fall virtio, wo immer Sie es ausdrücken können. Und wenn Sie immer noch auf Leistungsengpässe stoßen, können diese in der Regel von Fall zu Fall behoben werden, je nachdem, wo sie auftreten.
[offtop] Zu deiner Wahl der Distribution habe ich bereits in einem anderen Thread einen Kommentar abgegeben. [/ offtop]
quelle
Verlieren Sie keine Zeit mehr, wenn Sie etwas optimieren.
Installieren Sie die virtIO-Treiber und kehren Sie zurück. Der Unterschied ist so groß, dass jede Verbesserung, die Sie jetzt finden können, mit virtIO keine Bedeutung mehr hat.
Nur ein Beispiel für einen unserer Server:
- Ohne virtIO kann ein W2k3 ungefähr 10 Terminal Server-Benutzer verwalten
- Mit virtIO kann derselbe Computer mit demselben Betriebssystem derzeit 120 bis 125 Benutzer mit geringer Verzögerung verwalten. Und wir haben eine weitere virtuelle Maschine hinzugefügt, um SQL Server auf demselben physischen Computer auszuführen
quelle
Qemu funktioniert nicht so wie viele andere Hypervisoren. Für den Anfang kann es eine vollständige Emulation bereitstellen. Das heißt, Sie können beispielsweise x86-Code auf einem ARM-Prozessor ausführen. Wenn Sie sich im KVM-Modus befinden, geschieht dies nicht. Der Prozessor ist auf jeden Fall exponiert, aber was dem Betriebssystem gemeldet wird, wird durch das
-cpu
Flag geändert .Wenn Sie schnellere Geschwindigkeiten wünschen, ist dies ein Ausgangspunkt, um zu versuchen, die Fähigkeiten des virtuellen Prozessors so gut wie möglich an Ihren realen Prozessor anzupassen. Dies reduziert Fälle, in denen nicht optimale Opcodes aufgerufen werden, um Aufgaben auszuführen, und reduziert auch Opcodes, die auf Ihrer Hardware nicht möglich sind und zuerst in etwas anderes übersetzt werden. Da Ihr Modell des Xeon-Prozessors Anfang 2011 veröffentlicht wurde, unterstützt es wahrscheinlich hauptsächlich die Core i7-Serie. Dafür würde ich sagen, dass die Nehalem-Architektur Ihre beste Emulation ist.
Zitieren von einem Ihrer Links ( Tuning KVM ):
Wenn Sie also das Gefühl haben, dass Sie die Dinge möglicherweise so weit verschieben, dass ein Problem auftritt, finden Sie möglicherweise alle unterstützten Befehlssätze, von denen Sie glauben, dass sie jetzt oder in Zukunft von einem Prozessor unterstützt werden, und listen diese auf.
Meistens möchten Sie sich jedoch daran halten
-cpu host
. Wenn Sie eine CPU mit weniger verfügbaren Flags angeben, vermeiden Anwendungen die Verwendung von Funktionen, die diese schneller machen könnten.quelle
Die Option '-cpu host' ist verwirrt. Diese Option aktiviert NICHT nur alle CPU-Funktionen, die für Ihr Hostsystem spezifisch sind. Sie aktiviert ALLE Funktionen, die Ihre CPU unterstützt, und alle Funktionen, die emuliert werden können, auch wenn Ihre CPU diese Funktionen nicht unterstützt.
-cpu host
ist eine gute Option, aber nicht die effizienteste, da sie möglicherweise Optionen aktiviert, die emuliert werden können und die Ihre CPU nicht unterstützt. Das Gastsystem kann bei jedem Versuch, eine dieser Funktionen zu verwenden, die emuliert werden müssen, leicht verlangsamt werden .
Quelle: http://wiki.qemu.org/Features/CPUModels
quelle
CentOS 6.7 bietet mir die richtige KVM + Spice-Leistung auf dem Dell R910. Ich denke, wenn Sie es einmal probiert haben, werden Sie (ernsthaft) zu nichts anderem zurückkehren!
quelle