VMware vSphere tiene una manera muy “peculiar” de balancear el uso de ciclos de CPU física en un servidor VMware ESX/ESXi y pensé, a raíz de una discusión muy interesante iniciada por un usuario en los foros de VMware, que también te interesaría saber, mi querido lector, lo siguiente:
El VMware VMkernel dinámicamente “migra” las máquinas virtuales de CPU cada 20 milisegundos.
Para máquinas virtuales con múltiples CPU virtuales (vCPUs), el VMkernel intentara por todos los medios no poner más de un ciclo de ejecución de una misma máquina virtual en un mismo core. Sin embargo, con la tecnología hyperthreading habilitada, el scheduler del VMkernel tiene más CPUs que verificar.
El uso de la tecnología hyperthreading, permite convertir un core físico en dos – uno físico y otro lógico -, aunque esta tecnología no garantiza el doble de potencia para las máquinas virtuales, es decir, el escaldo no es lineal. Intel estima una mejora en el rendimiento de un 20%, aunque hay excepciones.
Hyperthreading suele estar deshabilitado en la BIOS del servidor físico. Mas cosas, las tareas del Service Console siempre son ejecutadas en la CPU con el ID número 0. El VMkernel nunca migrara ninguna tarea relacionada con el Service Console a otro core diferente.
Recuerda que en vSphere, una máquina virtual puede tener hasta un máximo de 8 vCPUs y ahora, el número de vCPUs puede ser impar. Aunque la máquina virtual puede usar tanto los cores físicos como los lógicos, el scheduler en VMkernel siempre intentara usar los cores físicos versus los lógicos, y siempre que hyperthreading este activado, obviamente.
Moraleja: un servidor vSphere con hyperthrering activado tendrá la capacidad de ejecutar mas threads simultáneos en paralelo (cpu fisica y cpu logica), por consiguiente, la teoría dice que el rendimiento de la infraestructura virtual seria mayor.
![]() |
|
Los lectores que leyeron este post, también leyeron:
- VMware tips & tricks número 21: Opciones de Clustering en vSphere 4.0
- VMware tips & tricks número 25: Identificando las características de tu CPU
- VMware tips & tricks número 26: Algunos requerimientos de VMware VMotion
- VMware tips & tricks número 20: VMware High Availability(HA) y sus pre-requisitos
- VMware tips & tricks número 27: Resource Pools heredados






















Hay que tomar en cuenta que la mejoras de rendimiento dependen mucho del tipo de aplicación que se ejecuta en las VMs. Incluso ciertas aplicaciones pueden tener un rendimiento menor con HT activado porque muchos recursos del procesador físico se comparten entre los dos procesadores lógicos, entre ellos la memoria caché
Excelente post Jose Maria
Gracias Jorge a ti por tu aportación. Estoy totalmente de acuerdo contigo. Sobre todo si la maquina virtual usa funcionalidades del chip de unidad de coma flotante
Por cierto, tienes experiencia de algún SO+aplicacion estándar ( Exchange, SQL, Oracle, etc) que usen la unidad de coma flotante de manera excesiva como lo hacen apliaciones como fluent en cluster de alto rendimiento?
Muchas gracias,
rgds,
J.
Exactametne.
No me ha tocado ningun caso por el momento
.Como bien dices, el VMkernel siempre asignará cores fisicos que logicos, con lo cual si se diera el caso de tener estas VMs lo ideal sería que residan en ESX con recursos CPU disponibles o directamente configurar la VM para que no comparta cores con otras VMs (HT Core Sharing Mode = None)
Gracias a ti por fomentar este tipo de discusiones, así aprendemos todos.
Hola Jorge,
Lo malo que veo yo al crear afinidad a nivel de CPU en una maquina virtual es que pierdes montón de funcionalidades, destacando VMotion de entre las mas importantes.
rgds,
J.
Pero para que haga el motion correctamente tendrá que estar activado el hyperthreading en la Bios de todos los hypervisores no? alguna idea de que podria pasar si unicamente estuviera activo en el hypervisor que corre la máquina y esta cayera? aunque es invisible para el SO, tendría alguna implicación para la VM (algún problema en el motion por ejemplo)?
Muy buena pregunta Cristina,
La velocidad de reloj de la CPU, el tamaño de la cache, el numero de cores y el hyperthreading es “filtrado” por el VMkernel con lo que no necesitan ser iguales en los servidores ESX involucrados en la migracion con vMotion.
rgds,
J.
mmm chulo
gracias Jose Maria… tomo nota
Alguien me podria ayudar, tengo un servidor con dos (2) procesadores Intel Xeon 6C Modelo E7530, en total doce (12) cores fisicos, con 48GB de RAM.
Preguntas:
Cuantas maquinas virtuales con el SW vSphere Adv. puedo crear por cada Core fisico?
Cuanto es el numero maximo de maqinas virtuales con sistema operativo server soportado por core fisico?
Hola Daniel,
Te recomiendo la lectura del documento de los mínimos y los máximos en VMware.
En este enlace puedes encontrar dicho documento.
http://www.vmware.com/pdf/vsphere4/r41/vsp_41_config_max.pdf
rgds,
J.
Hola a todos.
Me he leido este post y algun articulo mas que hay por internet y la verdad es que no me queda claro si es mejor activar el HT o no.
En donde yo trabajo tenemos 2 host E5504 y uno algo mas antiguo 5120, todos ellos con 18 GB de RAM. En ninguno de ellos tenemos activado el HT y no sabemos si deberiamos tenerlo o no.
Que recomendais?
Un saludo y enhorabuena por la web.
Hola Jesus,
Es mejor tener HT activado que desactivado. Con HT activado tienes una cpu “lógica” mas por cada cpu física. Eso significa que puedes correr dos threads en paralelo, uno en la cpu física y otro en la cpu lógica para un servidor con una sola cpu y HT activado.
VMware recomienda activar HT en los servidores ESX/ESXi.
rgds,
J.
Gracias!! Pasaremos a la accion y activaremos el HT para los 3 hosts!
Un saludo desde Navarra.