VirtualBox, y posiblemente otro software de 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?
La información en esta respuesta ya no es correcta . Fue correcto en los días de 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.
Usted debe no asignar todos sus núcleos como vCPU en una máquina virtual.
Si una máquina virtual solicita ningún tiempo de CPU, VMware tiene asignar ya sea toda la CPU virtuales, o ninguno de la CPU virtuales.
Lo que esto significa es que, en un sistema de 4 núcleos, si asigna los 4 núcleos, solo al host o al invitado se le puede asignar tiempo de procesador, no 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.
fuente
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.
fuente
Como mencionó Nate, siempre y cuando 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 sus 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 primero un nuevo hardware.
fuente
Confiaría en el planificador del sistema operativo y solo establecería la VM en el número 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 la VM.
fuente
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 la VM para que el host tenga dos restantes si la 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 de VM mientras se ejecuta en el sistema operativo host, y el sistema equilibrará las cargas en consecuencia.
fuente
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 tanto la máquina host como la máquina virtual al mismo tiempo, y cada una tiene los mismos recursos de CPU.
fuente