it-swarm-es.com

¿Existe una configuración óptima para la cantidad de núcleos de CPU expuestos a una VM?

VirtualBox, y posiblemente otro software VM, permite al usuario especificar la cantidad de CPU expuestas a la VM. En mi caso particular, tengo una CPU de doble núcleo, con Windows 7 de 64 bits ejecutándose de forma nativa, y Ubuntu 9.04 de 64 bits como VM.

El archivo de ayuda sugiere no establecer esto por encima del número de núcleos físicos disponibles. Esto tiene sentido. Entonces, ¿es mejor asignar 1 o 2 núcleos de CPU? ¿Depende esto completamente de la carga de CPU nativa?

23
sblair

Depende completamente de lo que esté haciendo el SO huésped. En mi experiencia personal, un VM está ejecutando un solo programa (servidor de compilación, servidor de trac, SVN, etc.) por lo que no hay razón para establecerlo por encima de uno.

Un posible caso puede ser si es un usuario final, por ejemplo, una universidad que está utilizando el sistema operativo invitado como un desecho (es decir, TA) y luego puede establecerlo en más de uno.

6
Nate

La información en esta respuesta ya no es correcta. Fue correcto en los días de la estricta programación conjunta, pero ya no es el caso.

Mantengo la respuesta a continuación por razones de prosperidad, pero no confíe en que sea precisa para los hipervisores modernos.


Debería nunca asignar todos sus núcleos como vCPU en una máquina virtual.

Si a VM solicita cualquier tiempo de CPU, VMWare tiene para asignar todos las vCPU, o ninguno de las vCPU.

Lo que esto significa es que, en un sistema de 4 núcleos, si asigna los 4 núcleos, solo se puede asignar tiempo de procesador al Host o al invitado, no a ambos al mismo tiempo.

Esto arruinará absolutamente el rendimiento en ambos entornos.

Siéntase libre de asignar un número impar de núcleos (por ejemplo, 3). Se siente extraño, pero es una opción totalmente legítima.

En general, nunca asigno más de (n/2) vCPU (en su caso, 2), pero normalmente estoy asignando núcleos en servidores con entre 12 y 32 núcleos donde puede asignar grandes cantidades de vCPU sin un gran impacto.

18
Mark Henderson

La cantidad de núcleos expuestos a las CPU invitadas no afecta el rendimiento tanto como usted quisiera. Simplemente ajusta la cantidad de núcleos que la CPU invitada "ve".

Dependiendo de cómo esté configurado el emulador, podría literalmente reducir a la mitad el rendimiento de la máquina virtual, no hacer nada o solo afectar la forma en que el sistema operativo/aplicaciones invitados dividen su programación de subprocesos.

Es mejor dejarlo por defecto. Si encuentra problemas de rendimiento en la PC host, simplemente puede ajustar la prioridad del proceso con el Administrador de tareas de Windows.

3
Breakthrough

Como mencionó Nate, siempre que su VM sirva principalmente para ejecutar un proceso de subproceso único), hay pocas razones para asignar más de un núcleo.

Sin embargo, si planea usarlo de una manera que pueda beneficiarse de más núcleos (programa multiproceso, muchos programas paralelos, ...), la historia es más complicada. Anteriormente supuse que usar la mitad de su CPU para su VM era una buena idea. Resulta que esto no siempre es óptimo.

La única forma de asegurarme es ejecutar puntos de referencia ... No sé por qué, pero en mi sistema Core2 Quad (que tiene soporte VT-x, paginación anidada, ...), usar 1 de los 4 núcleos funciona mejor que usar 2 o más núcleos! Veo esto simplemente en los tiempos de inicio de la VM, pero también durante los puntos de referencia de compilación.

Con otros resultados de hardware son diferentes. También tengo un i7 con 8 núcleos, y el rendimiento parece escalar mucho mejor con la cantidad de núcleos allí (usando 4 allí felizmente).

Mi consejo: compara un nuevo hardware primero.

3
Arnout

Esto depende de lo que desee hacer en la máquina virtual, así como en la máquina física. Si necesita usar la máquina virtual mientras se usa el sistema operativo Host para alguna otra actividad, puede ser mejor usar dos núcleos de procesador para VM para que el Host tenga dos restantes si el VM está bajo carga completa. Por otro lado, si está trabajando principalmente en la VM, puede usar todos los núcleos de procesador.

Sin embargo, a menos que se espere que el invitado use los cuatro núcleos a la vez, puede usarlos con seguridad mientras continúa trabajando en el sistema operativo host. Recuerde que siempre puede ajustar la prioridad del proceso VM mientras se ejecuta en el sistema operativo Host, y el sistema equilibrará las cargas en consecuencia.

1
bwDraco

Confiaría en el planificador del sistema operativo y solo establecería el VM en el # de núcleos físicos, a menos que sepa que siempre desea que el Host tenga un núcleo potencialmente inactivo mientras está ocupado en el VM.

1
Andrew Coleson

sí, también diría que depende. Pero diré lo que prefiero hacer. En el trabajo tengo una CPU de cuatro núcleos. Entonces, para mi imagen virtual (win7), he asignado dos CPU. De esa manera, puedo usar la máquina Host y la máquina virtual al mismo tiempo, y cada una tiene los mismos recursos de CPU.

0
Joel Martinez