La virtualización de CPU se enfoca en el rendimiento y se ejecuta directamente en el procesador siempre que sea posible. Los recursos físicos subyacentes se utilizan siempre que sea posible y la capa de virtualización ejecuta instrucciones solo según sea necesario para lograr que las máquinas virtuales funcionen como si se ejecutaran directamente en una máquina física.

La virtualización de CPU no es lo mismo que la emulación. ESXi no utiliza la emulación para ejecutar CPU virtuales. En la emulación, un emulador ejecuta todas las operaciones en el software. Con un emulador de software, los programas pueden ejecutarse en un sistema distinto al sistema para el cual se escribieron originalmente. Para esto, el emulador emula o reproduce el comportamiento del equipo original. Es decir, acepta los mismos datos o entradas y logra los mismos resultados. La emulación ofrece portabilidad y permite ejecutar el software diseñado para una plataforma en varias plataformas.

Cuando se sobrecomprometen los recursos de la CPU, el host ESXi divide en intervalos el tiempo de los procesadores físicos de todas las máquinas virtuales con el fin de que cada máquina virtual se ejecute como si tuviera la cantidad de procesadores virtuales especificada. Cuando un host ESXi ejecuta varias máquinas virtuales, asigna una porción de los recursos físicos a cada máquina virtual. Con la configuración predeterminada de asignación de recursos, todas las máquinas virtuales asociadas al mismo host reciben una porción equitativa de la CPU por cada CPU virtual. Esto significa que una máquina virtual con un solo procesador recibe solamente la mitad de los recursos de una máquina virtual con procesador dual.

Virtualización de CPU basada en software

Con la virtualización de CPU basada en software, el código de aplicación invitada se ejecuta directamente en el procesador, mientras que el código con privilegios de invitado se traduce y el código traducido se ejecuta en el procesador.

El código traducido es levemente más grande y, por lo general, se ejecuta de forma más lenta que la versión nativa. Por lo tanto, las aplicaciones invitadas, que tienen un pequeño componente de código con privilegios, se ejecutan con una velocidad muy parecida a la nativa. Las aplicaciones con un componente de código con privilegios significativo, como las llamadas del sistema, las capturas o las actualizaciones de tablas de las páginas, se ejecutan de forma más lenta en el entorno virtualizado.

Virtualización de CPU asistida por hardware

Ciertos procesadores ofrecen virtualización de CPU asistida por hardware.

Al utilizar esta asistencia, el invitado puede utilizar un modo individual de ejecución que se denomina modo de invitado. El código del invitado, se trate de código de aplicación o código con privilegios, ejecuta el modo de invitado. En ciertos casos, el procesador sale del modo de invitado e entra en modo raíz. El hipervisor se ejecuta en modo raíz, determina el motivo de la salida, toma las medidas requeridas y reinicia el invitado en modo de invitado.

Cuando se utiliza asistencia de hardware para virtualización, no hay necesidad de traducir el código. En consecuencia, las llamadas del sistema o las cargas de trabajo con utilización intensiva de capturas se ejecutan a una velocidad muy cercana a la nativa. Algunas cargas de trabajo, como las que incluyen actualizaciones en tablas de páginas, provocan una gran cantidad de salidas de modo de invitado a modo raíz. Según la cantidad de salidas y el tiempo total que se dedique a estas, la virtualización de CPU asistida por hardware puede acelerar la ejecución de manera significativa.

Virtualización y comportamiento específico del procesador

Aunque el software VMware virtualiza la CPU, la máquina virtual detecta el modelo específico del procesador en el cual se ejecuta.

Los modelos de procesador pueden ofrecer diferentes características de CPU, y las aplicaciones que se ejecutan en la máquina virtual pueden utilizar estas características. En consecuencia, no es posible utilizar vMotion® para migrar máquinas virtuales entre sistemas que se ejecutan en procesadores con diferentes conjuntos de características. En algunos casos, se puede evitar esta restricción utilizando Enhanced vMotion Compatibility (EVC) en procesadores que admiten esta característica. Para obtener más información, consulte la documentación sobre la administración de vCenter Server y hosts.

Consecuencias de rendimiento de la virtualización de CPU

La virtualización de CPU agrega distintas cantidades de sobrecarga, según la carga de trabajo y el tipo de virtualización utilizada.

Una aplicación está enlazada con CPU si dedica la mayor parte de su tiempo a ejecutar instrucciones en lugar de esperar eventos externos, como la interacción del usuario, el ingreso de dispositivos o la recopilación de datos. Para estas aplicaciones, la sobrecarga de virtualización de CPU incluye las instrucciones adicionales que deben ejecutarse. Esta sobrecarga ocupa tiempo de procesamiento de la CPU que la propia aplicación puede utilizar. Lo más frecuente es que la sobrecarga de virtualización de la CPU se traduzca en una reducción del rendimiento general.

Para aplicaciones no enlazadas con CPU, probablemente la virtualización de la CPU se traduzca en un aumento de la utilización de la CPU. Si hay capacidad de reserva de la CPU disponible para absorber la sobrecarga, puede lograrse un rendimiento comparable en términos de capacidad de proceso general.

ESXi admite un máximo de 128 procesadores virtuales (CPU) para cada máquina virtual.

Nota: Para optimizar el rendimiento y la utilización de recursos, implemente aplicaciones de un solo subproceso en máquinas virtuales de un solo procesador, no en máquinas virtuales SMP que tienen varias CPU.

Las aplicaciones de un solo subproceso pueden beneficiarse con una sola CPU. La implementación de estas aplicaciones en máquinas virtuales de dos procesadores no acelera la aplicación. En su lugar, provoca que la segunda CPU virtual utilice recursos físicos que otras máquinas virtuales podrían utilizar.