Hyper Threading y máquinas virtuales?

15

Ya miré este hilo: Hyper-V e Hyper-threading: ¿activado o desactivado? , pero la única respuesta es específica de Windows ...

Estoy construyendo un servidor VM (usando Proxmox VE si eso marca la diferencia) y me preguntaba cómo la hiperprocesamiento puede afectar a las máquinas virtuales ...

Específicamente, si maximizo el número de máquinas virtuales, ¿ayudaría Hyper Threading o dañaría el rendimiento?

Además, las máquinas virtuales más grandes serán un Terminal Server con ~ 30 clientes (4 núcleos / 8 GB de RAM) y un servidor de archivos si eso ayuda.

Actualización: El servidor es un Dell R410 con un RAID 10 de 1TB, 32 GB de RAM y doble Intel Xeon E5530 (no estoy seguro sobre el modelo exacto, pero era un E55xx con 2+ Ghz)

Actualización: la mayoría de las máquinas virtuales estarán en KVM.

Soviero
fuente
Proporcione las especificaciones del servidor que planea usar.
ewwhite
También curioso. ¿Por qué Promox VE versus ESXi?
ewwhite
Probablemente debido al límite ESXI de 16 GB de RAM en la licencia gratuita
Tacticus
3
Elijo Proxmox sobre ESXi porque Proxmox tiene algunas características adicionales, como la administración completa desde una interfaz gráfica de usuario web, la agrupación, las especificaciones del servidor no están limitadas artificialmente por las licencias y algunas otras que no puedo recordar. Además, 2.0 incluirá autenticación AD que es muy útil para nosotros, no estoy seguro si ESXi sí ...
Soviero
1
¿Has mirado en oVirt?
dyasny

Respuestas:

12

En general, dejo HyperThreading activado para los servidores host VM (VMWare ESXi, KVM, HyperV, etc.). Esto se aplica a las CPU Intel Nehalem y más nuevas (serie 5500 y superior). Subprocesos adicionales disponibles para programar varias máquinas virtuales.

También es posible que desee reevaluar el tamaño de sus sistemas invitados. Por lo general, es mejor comenzar poco a poco en la asignación de CPU con máquinas virtuales. Como estás hablando de un servidor de terminal, en realidad lo movería a 2 CPU virtuales en lugar de 4 vCPU. Es más fácil para el hipervisor programar el tiempo de CPU para máquinas virtuales con recuentos de núcleos más pequeños . Sin embargo, la RAM sigue siendo crítica, así que asegúrese de tener suficiente disponible.

Ver: http://omtconcepts.com/wp/?p=14

ewwhite
fuente
¿Cómo son exactamente dos hilos más rápido que cuatro?
Soviero
3
No más rápido ... Más fácil de programar. Mira mi edición. La máquina que menciona tendrá 8 núcleos totales (16, con HyperThreading). Tratar de encontrar los recursos para programar un invitado de 4 vCPU es más difícil que 2-vCPU. Tendrá más contención (y, por lo tanto, menor rendimiento). Si planea ejecutar otros invitados virtuales en este servidor, tiene sentido usar 1 y 2 invitados vCPU.
ewwhite
3
Su punto sobre la programación solo se aplica a los hipervisores que hacen "programación de pandillas" donde intentan ejecutar una aproximación de "todos o ninguno" de los procesadores virtuales al mismo tiempo. Para los hipervisores que hacen esto, agregar más procesadores virtuales hará que la VM sea más difícil de programar. Entiendo que Kevin actualizó su pregunta para estipular que quiere usar KVM, principalmente. Pero quiero señalar que Hyper-V no hace la programación de pandillas. Se basa en la paravirtualización del sistema operativo invitado para evitar la necesidad de programar pandillas.
Jake Oshins
No sabía eso sobre Hyper-V, pero esto se aplica a los otros hipervisores principales.
ewwhite
1
KVM no tiene horario de pandillas. De hecho, solo VMWare hace esto, e incluso han agregado algunos mecanismos para relajar la locura de programación de pandillas en v5
dyasny
4

Realmente depende Si, como está diciendo, va a "maximizar", lo que supongo significa sobreasignar CPU (asignar más núcleos de CPU virtuales de los que tiene disponibles, o exactamente tantos como tenga disponibles), entonces HT definitivamente debería ser en.

Si no está sobreasignando, entonces generalmente es mejor realizar una prueba bajo sus cargas específicas; a veces, el HT puede dañar el rendimiento.

dyasny
fuente
Planeo asignar exactamente tantos núcleos / hilos como estén disponibles, pero no planeo sobreasignar.
Soviero
¿Crees que el sistema operativo host no necesita tiempo de CPU? Y si asigna tantos núcleos en V como hilos con HT activado, en realidad está sobreasignando en al menos un 70-80%, porque incluso cuando HT aumenta el rendimiento, generalmente es un 20-30% máximo, no por 100%, como se podría suponer por el recuento de hilos
dyasny
Ok, ¿entonces no se asignaron más de 12 "núcleos" (75% de 16)?
Soviero
1
Supongo que no fui lo suficientemente claro. PUEDE sobreasignar, y dependiendo de las cargas en las máquinas virtuales, la CPU podría no convertirse en el cuello de botella. Además, nunca debe asignar más CPU a una VM de las que realmente necesita, porque cuantas más CPU tenga la VM, más difícil será programarla, por lo que muchos v-cpus pueden obstaculizar el rendimiento. En cuanto a la ganancia de rendimiento del 20% por hyperthreading, esto no es absoluto, el número puede ser ligeramente mayor, menor, cero o incluso negativo, dependiendo de las cargas de VM.
dyasny
Oh ok Gracias.
Soviero
3

Existen muchas variables que afectan el rendimiento de la VM. HT es solo una de las variables, pero también depende de cómo esté configurada la VM.

Una de las variables que afectan a HT depende del tipo de hipervisor utilizado.

Si está utilizando máquinas virtuales livianas como VZ, VServer, etc., entonces es bastante obvio que HT traerá beneficios adecuados ya que estas VM no están realmente muy aisladas y son más como ejecutar software de subprocesos múltiples.

Si está utilizando máquinas virtuales pesadas como KVM, Xen HVM, etc., entonces es posible que HT interfiera con cosas, por ejemplo, cuando a una VM se le asignan dos CPU pero termina usando una HT cada una en diferentes núcleos.

Por lo tanto, lo mejor que puede hacer es probar su configuración para ver qué le conviene.

sybreon
fuente