Tenemos un clúster Heartbeat / DRBD / Pacemaker / KVM / Qemu / libvirt que consta de dos nodos. Cada nodo ejecuta Ubuntu 12.04 64 Bit con los siguientes paquetes / versiones:
- Kernel 3.2.0-32-generic # 51-Ubuntu SMP
- DRBD 8.3.11
- qemu-kvm 1.0 + noroms-0ubuntu14.3
- libvirt 0.9.13
- marcapasos 1.1.7
- latido del corazón 3.0.5
Los invitados virtuales ejecutan Ubuntu 10.04 64 Bit y Ubuntu 12.04 64 Bit. Utilizamos una función libvirt para pasar las capacidades de las CPU host a los invitados virtuales para lograr el mejor rendimiento de la CPU.
Ahora aquí hay una configuración común en este clúster:
- La "supervisión" de VM tiene 4 vCPU
- La "supervisión" de VM utiliza ide como interfaz de disco (actualmente estamos cambiando a VirtIO por razones obvias)
Recientemente realizamos algunas pruebas simples. Sé que no son profesionales y no alcanzan altos estándares, pero ya muestran una fuerte tendencia:
El nodo A ejecuta VM "bla" El nodo B ejecuta VM "monitoreo"
Cuando sincronizamos un archivo de VM "bla" a VM "monitoreo", alcanzamos solo 12 MB / s. Cuando realizamos un simple dd if = / dev / null of = / tmp / blubb dentro de la "monitorización" de VM, alcanzamos alrededor de 30 MB / s.
Luego agregamos 4 vCPU más a la "supervisión" de la VM y la reiniciamos. La "supervisión" de VM ahora tiene 8 vCPU. Volvimos a ejecutar las pruebas con los siguientes resultados: cuando sincronizamos un archivo de VM "bla" a VM "monitoreo" ahora alcanzamos 36 MB / s. Cuando realizamos un simple dd if = / dev / null of = / tmp / blubb dentro de la "monitorización" de VM ahora alcanzamos alrededor de 61 MB / s.
Para mí, este efecto es bastante sorprendente. ¿Cómo es que aparentemente agregar más CPU virtuales para este invitado virtual automáticamente significa más rendimiento de disco dentro de la VM?
No tengo una explicación para esto y realmente agradecería su aporte. Quiero comprender qué causa este aumento del rendimiento, ya que puedo reproducir este comportamiento al 100%.
kvm_trace
para ver cómo IO_Exits
cambia el número de cambios cuando cambia los números de CPU. Supongo que es porque está utilizando IDE, que se programa con las CPU invitadas. Con virtio, el rendimiento debe ser consistente, y cuando el plano de datos está en qemu, obtendrá un impulso drástico. Otra suposición puede ser el hecho de que está utilizando una distribución conocida por una pila de virtualización defectuosa.