Estamos usando Ubuntu 12.04 con los siguientes parámetros:
- Dell R910
- Kernel 3.2.0-25-genérico # 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 CPU Intel (R) Xeon (R) E7-4870 a 2.40 GHz (cada una con 10 núcleos físicos, HT e Intel VT habilitados)
- Los invitados de Windows actualmente no tienen VirtIO, pero eso cambiará pronto
Estamos ejecutando varios invitados de Windows en esta máquina, uno de ellos es Windows 2003 32 Bit, otro Windows 2008 (64 Bit). Actualmente estamos luchando con problemas de rendimiento y jugamos con los modelos de CPU.
Usualmente usamos "qemu-system-x86_64 para nuestro invitado de Windows 32 Bit, por ejemplo:
/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 [...]
El rendimiento de este invitado resultó ser un poco bajo. Todavía no ejecutamos ningún punto de referencia, pero digamos que copiar una gran cantidad de datos (archivos) dentro de la VM de un directorio a otro va mucho más rápido cuando cambiamos el modelo de CPU de "-cpu qemu32" a "-cpu Nehalem ". Los archivos que tomaron alrededor de 2: 40h para copiar ahora se copian en 40 minutos. Por supuesto, esta no es una prueba de alta calidad y hay mucho espacio para un intento más profesional. Pero este es un claro indicador de que elegir el modelo de CPU correcto podría afectar en gran medida el rendimiento del huésped.
Ahora tengo curiosidad y corrí:
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]
Y:
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
Con todas estas versiones diferentes, es un poco difícil de adivinar. "Nehalem" parece ser el más eficaz en esa lista. Ahora me pregunto, ¿cómo saber qué modelo de CPU es el mejor para mi invitado? Navegando por Internet, encontré los siguientes recursos:
- http://rwmj.wordpress.com/2010/10/08/32-or-64-bit-virtual-cpu-in-kvm/
- http://www.linux-kvm.org/page/Tuning_KVM
Cuando leo esos sitios correctamente, afirman que "-cpu host" podría ofrecer el mejor rendimiento. Todavía no me preocupa la migración, ya que ambos hosts KVM están equipados por igual (exactamente el mismo hardware).
Entonces, ¿qué recomiendan los administradores experimentados de KVM? ¿Existe una regla de oro o incluso una matriz, como "este modelo es el mejor para ese SO huésped"?
Mis disculpas si pudiera encontrar esta información por mi cuenta: realicé varias búsquedas en Google y navegué por muchos sitios web. No pude encontrar algo que responda a mi pregunta.
Respuestas:
Es bastante simple en realidad. Para clústeres homogéneos y configuraciones de host único, use la
host
opción Para clústeres mixtos, use la versión de CPU más baja disponible, por lo que si un host es Penryn y el otro Nehalem, use Penryn en ambos.Si está utilizando RHEV u oVirt, esto ya está integrado. VMWare tiene esto llamado "EVC" y lo posiciona como una gran característica.
Volviendo al rendimiento, definitivamente necesitas virtio donde sea que puedas ponerlo. Y si aún se encuentra con cuellos de botella en el rendimiento, estos generalmente se pueden abordar caso por caso, dependiendo de dónde ocurran.
[offtop] En su elección de distribución ya he comentado en otro hilo [/ offtop]
fuente
No pierdas más tiempo ajustando nada.
Instale los controladores virtIO y vuelva. La diferencia es tan grande que cualquier mejora que pueda encontrar ahora no tendrá sentido con virtIO.
Solo un ejemplo con uno de nuestros servidores:
- sin virtIO, un W2k3 puede manejar a unos 10 usuarios de Terminal Server
- con virtIO, la misma máquina con el mismo sistema operativo maneja actualmente de 120 a 125 usuarios con poca desaceleración. Y agregamos otra máquina virtual para ejecutar SQL Server uno en la misma computadora física
fuente
Qemu no funciona de la misma manera que lo hacen muchos otros hipervisores. Para empezar, puede proporcionar una emulación completa. Eso significa que puede ejecutar código x86 en un procesador ARM, por ejemplo. Cuando está en modo KVM, mientras lo usa, en realidad no hace eso ... el procesador está expuesto sin importar qué, pero lo que se informa al sistema operativo cambiará con el
-cpu
indicador.Si desea velocidades más rápidas, es un punto de partida para tratar de hacer coincidir las capacidades del procesador virtual con su procesador real de la mejor manera posible. Eso reducirá los casos en que se invoquen códigos de operación subóptimos para ejecutar tareas, y también reducirá los códigos de operación que no son posibles en su hardware que se traduce a otra cosa primero. Dado que su modelo de procesador Xeon se lanzó a principios de 2011, probablemente sea compatible principalmente con la serie Core i7. Por eso, diría que la arquitectura Nehalem es tu mejor emulación.
Citando uno de sus enlaces ( Tuning KVM ):
Por lo tanto, si siente que puede terminar moviendo las cosas lo suficiente como para crear un problema, puede encontrar todos los conjuntos de instrucciones compatibles que cree que cualquier procesador que tenga ahora o que pueda tener en el futuro admite y enumere esos.
La mayoría de las veces, sin embargo, desea seguir
-cpu host
. Especificar una CPU con menos indicadores disponibles significa que las aplicaciones evitarán el uso de funciones que podrían acelerarlas.fuente
Está confundiendo la opción '-cpu host'. Esta opción NO habilita solo todas las funciones de la CPU específicas de su sistema host, habilita TODAS las funciones que admite su CPU y todo lo que puede emularse incluso si su CPU no las admite.
-cpu host
es una buena opción, pero no la más eficiente, ya que podría habilitar opciones que pueden emularse y que su CPU no admite, el sistema invitado puede ralentizarse ligeramente cada vez que intente usar una de estas características que necesita ser emulada .
Fuente: http://wiki.qemu.org/Features/CPUModels
fuente
CentOS 6.7 me da el rendimiento adecuado de KVM + Spice en Dell R910. ¡Creo que una vez que lo pruebes no volverás a nada más (en serio)!
fuente