Abbiamo un cluster Heartbeat / DRBD / Pacemaker / KVM / Qemu / libvirt costituito da due nodi. Ogni nodo esegue Ubuntu 12.04 64 bit con i seguenti pacchetti / versioni:
- Kernel 3.2.0-32-generico # 51-Ubuntu SMP
- DRBD 8.3.11
- qemu-kvm 1.0 + noroms-0ubuntu14.3
- libvirt 0.9.13
- pacemaker 1.1.7
- battito cardiaco 3.0.5
I guest virtuali eseguono Ubuntu 10.04 64 Bit e Ubuntu 12.04 64 Bit. Utilizziamo una funzione libvirt per trasmettere le capacità delle CPU host agli ospiti virtuali al fine di ottenere le migliori prestazioni della CPU.
Ora ecco una configurazione comune su questo cluster:
- Il "monitoraggio" della macchina virtuale ha 4 vCPU
- Il "monitoraggio" della VM utilizza ide come interfaccia del disco (al momento stiamo passando a VirtIO per ovvie ragioni)
Di recente abbiamo eseguito alcuni semplici test. So che non sono professionali e non raggiungono standard elevati, ma mostrano già una forte tendenza:
Il nodo A esegue VM "bla" Il nodo B esegue VM "monitoraggio"
Quando risincronizziamo un file dalla "bla" della VM al "monitoraggio" della VM otteniamo solo 12 MB / s. Quando eseguiamo un semplice dd se = / dev / null di = / tmp / blubb all'interno del "monitoraggio" della VM otteniamo circa 30 MB / s.
Quindi abbiamo aggiunto altri 4 vCPU al "monitoraggio" della VM e lo abbiamo riavviato. Il "monitoraggio" della VM ora ha 8 vCPU. Abbiamo rieseguito i test con i seguenti risultati: Quando risincronizziamo un file dalla "bla" della VM al "monitoraggio" della VM, otteniamo ora 36 MB / s. Quando eseguiamo un semplice dd se = / dev / null di = / tmp / blubb all'interno del "monitoraggio" della VM, ora raggiungiamo circa 61 MB / s.
Per me questo effetto è abbastanza sorprendente. Come mai apparentemente l'aggiunta di più CPU virtuali per questo guest virtuale comporta automaticamente maggiori prestazioni del disco all'interno della VM?
Non ho una spiegazione per questo e apprezzerei molto il tuo contributo. Voglio capire quali sono le cause di questo aumento delle prestazioni poiché posso riprodurre questo comportamento al 100%.
kvm_trace
per vedere come IO_Exits
cambia il numero di modifiche quando si cambiano i numeri della CPU. Immagino sia perché stai usando IDE, che viene programmato con le CPU guest. Con virtio le prestazioni dovrebbero essere coerenti e quando il piano dati è in qemu, otterrà un notevole incremento. Un'altra ipotesi può essere il fatto che si stia utilizzando una distribuzione nota per uno stack di virtualizzazione con errori.