¿Cuál es la diferencia de rendimiento de una máquina virtual frente al host físico?

15

Donde trabajo estamos ejecutando PC relativamente potentes con la distribución Debian Linux. Sin embargo, para ciertos programas que necesitamos instalar, sería mejor tener CentOS y estas serían nuestras principales herramientas de trabajo. Es posible cambiar el sistema operativo para todas las computadoras en nuestro lugar de trabajo, pero estamos tratando de decidir si usar VirtualBox es una mejor opción por simplicidad.

Todo esto depende del siguiente punto. Los programas que necesitamos ejecutar son simuladores que son tareas muy intensivas del procesador que pueden ejecutarse fácilmente hasta una hora o más cada vez que se inicia una simulación. Necesitamos decidir si la degradación del rendimiento cuando se usa Virtual Box es lo suficientemente grande como para merecer nuestro cambio de sistema operativo.

Entonces, mi pregunta es si alguien puede decirme de manera verificable cuál es el impacto en el rendimiento al ejecutar una tarea intensiva del procesador en una caja virtual en lugar de ejecutarla en la PC nativa.

Gracias.

aarelovich
fuente

Respuestas:

15

Para los programas de cálculo de números (muy vinculados a la CPU), la máquina virtual debería tener un impacto de rendimiento casi nulo. Las instrucciones se ejecutan directamente en la CPU, que es lo mismo para el host y la VM.

Incluso para tareas de compilación serias, la diferencia de rendimiento apenas se nota. Ejecutamos máquinas virtuales CentOS en VMware en Windows.

Como está ejecutando Linux en el host, también puede considerar KVM (Kernel Virtual Machine) en lugar de VirtualBox. Es una serie de módulos de kernel que proporciona servicios de virtualización en Linux, utilizando las extensiones de virtualización Intel VT-x disponibles en la mayoría de las CPU modernas. QEMU usa KVM como acelerador para ejecutar código x86 directamente en la CPU del host.

Simplemente instale el virt-managerpara probarlo.

Jonathon Reinhart
fuente
Okay. Le daré una oportunidad. Gracias por la respuesta.
aarelovich
¿Cómo, en términos de rendimiento, KVM se compara con VirtualBox (digamos que ejecuta Windows 10 en el sistema Linux)?
Royi
Deben ser casi idénticos si VirtualBox está aprovechando las extensiones de virtualización de la CPU (como lo hace KVM), y la carga de trabajo está principalmente vinculada a la CPU. Si las tareas son pesadas de E / S, el rendimiento variará según el hardware seleccionado. KVM tiene controladores paravirtualizados (virtio) que pueden superar en gran medida los de los dispositivos emulados (por ejemplo, el controlador de disco E1000 NIC y LSI SCSI). En general, aunque deberían estar razonablemente cerca.
Jonathon Reinhart
6

No hay una sola respuesta buena a esto. Depende mucho de cómo use una máquina virtual y de qué programas.

Por ejemplo, el uso de VMWare (un hipervisor tipo 2) y un programa puramente vinculado a la CPU produjo una velocidad de CPU casi completa. Si usara el mismo hipervisor y un programa con muchas llamadas al sistema, obtendría una desaceleración grave.

Y las cosas también cambian cuando usa un sistema operativo hipervisor tipo 1 (sin invitado). E incluso entre los que tienes muchas variaciones. Por ejemplo, Xen con 5 (IIRC de los últimos fines de semana FOSDEM talk en Xen) modos que admite. Desde HW usando para para virtualizado.

Para recapitular: como se le preguntó, puede variar de casi ninguna desaceleración a ser más lento.


Ahora, si me concentro en VirtualBox, ese es un hipervisor de tipo 2. Los programas puramente vinculados a la CPU deberían estar bien.

Hennes
fuente
La mayoría de estos programas transforman esencialmente un lenguaje en C Code y lo compilan. Cuando ejecutamos una simulación, esta compilación es lo que se ejecuta. Según usted, ¿entonces debería estar bien?
aarelovich
Sospecho que el rendimiento estará bien. Mi experiencia de caja virtual es limitada (usé principalmente la estación de trabajo VMware), pero no veo razones técnicas por las que debería ser lenta.
Hennes
¿Cómo, en términos de rendimiento, KVM se compara con VirtualBox (digamos que ejecuta Windows 10 en el sistema Linux)?
Royi
5

En realidad, parece que Docker podría ser una opción aún mejor para lo que estás haciendo. Docker proporciona contenedores, que son cajas de arena aisladas que se ejecutan sobre el mismo núcleo. La sobrecarga de llamadas / E / S del sistema es cero, ya que sus procesos en el contenedor no son diferentes a los del host.

Como ya está ejecutando Linux, Docker sería una excelente manera de proporcionar un entorno CentOS sin tener que reinstalar todas sus máquinas.

Además, echa un vistazo a mi utilidad, Scuba , que hace que sea fácil ejecutar cosas como compilaciones dentro de un contenedor Docker. En lugar de correr make, correrás scuba make. ¡Eso es todo!

Jonathon Reinhart
fuente
Avíseme si desea probar esto y necesita ayuda para comenzar.
Jonathon Reinhart
Gracias, pero esto fue hace mucho tiempo y se tomó la decisión de hacer el movimiento. Pero lo tendré en cuenta cuando tenga que ejecutar un programa que tenga problemas para ejecutar con CentOS.
aarelovich