Wir haben einen Heartbeat / DRBD / Pacemaker / KVM / Qemu / libvirt-Cluster, der aus zwei Knoten besteht. Auf jedem Knoten wird Ubuntu 12.04 64 Bit mit den folgenden Paketen / Versionen ausgeführt:
- Kernel 3.2.0-32-generic # 51-Ubuntu SMP
- DRBD 8.3.11
- qemu-kvm 1.0 + noroms-0ubuntu14.3
- libvirt 0.9.13
- Schrittmacher 1.1.7
- Herzschlag 3.0.5
Die virtuellen Gäste führen Ubuntu 10.04 64 Bit und Ubuntu 12.04 64 Bit aus. Wir verwenden eine libvirt-Funktion, um die Funktionen der Host-CPUs an die virtuellen Gäste weiterzugeben, um die beste CPU-Leistung zu erzielen.
Hier ist ein allgemeines Setup für diesen Cluster:
- VM "Monitoring" hat 4 vCPUs
- VM "Monitoring" verwendet ide als Festplattenschnittstelle (wir wechseln derzeit aus offensichtlichen Gründen zu VirtIO).
Wir haben kürzlich einige einfache Tests durchgeführt. Ich weiß, dass sie nicht professionell sind und keine hohen Standards erreichen, aber sie zeigen bereits einen starken Trend:
Knoten A führt VM "bla" aus Knoten B führt VM "Überwachung" aus
Wenn wir eine Datei von VM "bla" zu VM "Monitoring" synchronisieren, erreichen wir nur 12 MB / s. Wenn wir ein einfaches dd if = / dev / null von = / tmp / blubb innerhalb der VM- "Überwachung" durchführen, erreichen wir ungefähr 30 MB / s.
Dann haben wir der VM- "Überwachung" 4 weitere vCPUs hinzugefügt und sie neu zusammengestellt. Die VM- "Überwachung" verfügt jetzt über 8 vCPUs. Wir haben die Tests mit den folgenden Ergebnissen erneut ausgeführt: Wenn wir eine Datei von VM "bla" zu VM "Monitoring" synchronisieren, erreichen wir jetzt 36 MB / s. Wenn wir ein einfaches dd if = / dev / null von = / tmp / blubb innerhalb der VM- "Überwachung" ausführen, erreichen wir jetzt ungefähr 61 MB / s.
Für mich ist dieser Effekt ziemlich überraschend. Wie kommt es, dass das Hinzufügen weiterer virtueller CPUs für diesen virtuellen Gast automatisch mehr Festplattenleistung innerhalb der VM bedeutet?
Ich habe keine Erklärung dafür und würde mich sehr über Ihre Beiträge freuen. Ich möchte verstehen, was diese Leistungssteigerung verursacht, da ich dieses Verhalten zu 100% reproduzieren kann.
kvm_trace
zu sehen, wie sich die Anzahl der IO_Exits
Änderungen ändert, wenn Sie die CPU-Nummern ändern. Ich würde vermuten, dass Sie IDE verwenden, die mit den Gast-CPUs geplant wird. Mit virtio sollte die Leistung konsistent sein, und wenn sich die Datenebene in Qemu befindet, wird sie drastisch gesteigert. Eine andere Vermutung kann die Tatsache sein, dass Sie eine Distribution verwenden, die für einen fehlerhaften Virtualisierungsstapel bekannt ist.