Host de cuatro núcleos con hiperprocesamiento, ¿cuántos procesadores configurar en VirtualBox?

10

Tengo un procesador i7 de cuatro núcleos con hyperthreading (8 núcleos lógicos), cuando configuré una máquina virtual para usar 8 procesadores, VirtualBox me dio una advertencia diciendo que solo tengo cuatro núcleos (lo cual es cierto) y que esto puede causar un problema de rendimiento. Pero el hyper-threading es una característica de hardware, por lo que el sistema operativo ve 8 núcleos y envía instrucciones a todos los 8. ¿Qué pasa si establecerlo en 4 hace que la VM use 2 núcleos (4 hilos) en lugar de 4 hilos simultáneos (en los 4 núcleos)? )? ¿La advertencia que recibí tiene en cuenta que mi máquina tiene hiperprocesamiento?

Antonio
fuente

Respuestas:

9

Según el punto de referencia realizado por Kristian Wedberg , diría que debe usar todos los núcleos lógicos que tenga.
También hice mi propio punto de referencia usando la misma CPU (i7, 4 CPU con HT) que confirmó el aumento del rendimiento para aplicaciones de subprocesos múltiples. Si la PC invitada (Win. 8.1 x64) usó los 8 núcleos, entonces la PC host (Ubuntu x64) también usó los 8 núcleos.

ingrese la descripción de la imagen aquí

También comparé el rendimiento en aplicaciones de un solo subproceso. En ambos casos, medí los mismos valores, por lo que no hay penalización por usar más que un número físico (pero hasta lógico) de CPU.
Aquí puede ver que 1 carga completa de CPU en la PC invitada dará como resultado 1 carga de CPU en la PC host.

ingrese la descripción de la imagen aquí

icl7126
fuente
Convenido. Estaba usando 4 núcleos y descubrí que solo toma alrededor del 50% del tiempo de CPU al construir mi proyecto. Luego, a pesar de la advertencia, cambié a 8, que es el número de núcleos lógicos, la compilación estaba tomando 100% de tiempo de CPU y creo que funcionó más rápido que antes.
Deqing
Esto es bastante interesante, recuerdo haber leído que Linux trata específicamente de enfocar la carga en 1 núcleo lógico de cada núcleo HT físico para aumentar la eficiencia. Me pregunto si el kernel invitado de Linux puede ver que la CPU está hiperprocesada y optimizar su programación para ese tipo de configuración.
Anthony
8

Descubrí que, aunque es posible (y posiblemente más rápido) en VirtualBox (mi experiencia fue con la versión 5.1.0) asignar vCPU a una VM basada en procesadores lógicos, uno puede tener problemas dentro del SO huésped cuando se ejecuta a alta carga . En mi caso, una máquina virtual Windows 2012 R2 con 12 vCPU en un host Ubuntu 16.04 de 8 núcleos (que informa 16 procesadores lógicos) se BSOD durante una carga de CPU alta con el mensaje de error DPC_WATCHDOG_VIOLATION. Un análisis de minivolcado con osronline.com mostró que e1g6032e.sys (el controlador de red Intel 100/1000 nativo de Windows) es la causa de la violación.

Esto me lleva a creer que el tiempo dentro del sistema operativo invitado se ve afectado negativamente al asignar vCPU en función de la capacidad del procesador lógico y ejecutar la VM a alta carga durante períodos prolongados. En mi caso, el 100% de la carga de la CPU dentro de la VM de Windows durante unos minutos daría como resultado el BSOD. Después de reducir el recuento de vCPU a 8 (que corresponde al recuento de núcleos físicos del host), la VM de Windows ya no BSOD en situaciones similares de alta carga. La documentación en línea de VirtualBox dice que uno debe hacer esto, pero no ofrece ninguna razón.

En mi entorno también había otras dos máquinas virtuales de Ubuntu ejecutándose, cada una con 8 vCPU propias. Sin embargo, la carga sobre ellos era mínima en el momento de los problemas BSOD de Windows VM.

Albert Gazendam
fuente
Impresionante respuesta (con fuentes), gracias! Un par de años tarde, pero ahora lo sé :)
Anthony
2

¿La advertencia que recibí tiene en cuenta que mi máquina tiene hiperprocesamiento?

Si. Si establece el número de núcleos en una máquina virtual a un número mayor que el que tiene físicamente, el proceso de programación de tareas en Virtual Box compromete los recursos de la CPU, lo que genera problemas de rendimiento importantes.

En cuanto a la distribución de la carga entre los núcleos, ese es el trabajo del sistema operativo del host y debe comportarse en la mansión correcta.

usuario195560
fuente
44
¿Tiene algún dato para respaldar sus declaraciones? Alguien hizo una investigación envobi.com/post/virtualbox-hyper-threading-benchmark-surprise y recomiendan configurar el recuento de CPU de Virtual Box en el número de CPU lógicas .
Maxim Egorushkin
0

¿Era esta una VM original para su máquina? A veces obtendrá errores peculiares si clona una VM y la mueve a otra máquina y / o cambia la configuración.
Recomiendo descargar e instalar la última versión de Virtual Box con las últimas extensiones.

He cometido los ocho núcleos y no recibo ese error con mi i7 ejecutando una VM con Ubuntu 13.10.

ClaireW
fuente