O VirtualBox, e possivelmente outro software de VM, permite ao usuário especificar o número de CPUs expostas à VM. No meu caso particular, eu tenho uma CPU de núcleo duplo, com o Windows 7 de 64 bits em execução nativamente e o Ubuntu 9.04 de 64 bits como a VM.
O arquivo de ajuda sugere não definir isso acima do número de núcleos físicos disponíveis. Isso faz sentido. Então, é melhor alocar 1 ou 2 núcleos de CPU? Isso depende inteiramente da carga da CPU nativa?
As informações nesta resposta não estão mais corretas . Estava correto nos dias de rigoroso co-agendamento, mas não é mais o caso.
Estou mantendo a resposta abaixo para garantir a prosperidade, mas não confie nela para ser precisa para os hipervisores modernos.
Você nunca deve atribuir todos os seus núcleos como vCPUs em uma máquina virtual.
Se uma VM solicita qualquer tempo de CPU, VMWare tem de alocar quer tudo o vCPUs, ou nenhum do vCPUs.
O que isso significa é que, em um sistema de quatro núcleos, se você alocar todos os quatro núcleos, somente o host ou o convidado poderá receber o tempo do processador, não os dois ao mesmo tempo.
Isso arruinará absolutamente o desempenho nos dois ambientes.
Sinta-se à vontade para alocar um número ímpar de núcleos (digamos, 3). Parece estranho, mas é uma opção totalmente legítima.
Geralmente, nunca aloco mais do que (n / 2) vCPUs (no seu caso, 2) - mas normalmente aloco núcleos em servidores com entre 12 e 32 núcleos, nos quais é possível alocar um grande número de vCPUs sem grande impacto.
fonte
O número de núcleos expostos às CPUs convidadas não afeta o desempenho tanto quanto você gostaria. Apenas ajusta a quantidade de núcleos que a CPU convidada "vê".
Dependendo de como o emulador estiver configurado, ele pode literalmente metade do desempenho da máquina virtual, não fazer nada ou afetar apenas a maneira como os SOs / aplicativos convidados dividem sua programação de encadeamentos.
É melhor deixá-lo para o padrão. Se você encontrar problemas de desempenho no PC host, poderá simplesmente ajustar a prioridade do processo com o Gerenciador de Tarefas do Windows.
fonte
Como Nate mencionou, desde que sua VM atenda principalmente à execução de um processo de thread único, há poucas razões para alocar mais de um núcleo.
No entanto, se você planeja usá-lo de uma maneira que possa se beneficiar de mais núcleos (programa multiencadeado, muitos programas paralelos, etc.), a história é mais complicada. Anteriormente, eu assumi que usar metade de sua CPU para sua VM era uma boa idéia. Acontece que isso nem sempre é o ideal.
A única maneira de garantir é executar benchmarks. Não sei por que, mas no meu sistema Core2 Quad (que tem suporte a VT-x, paginação aninhada, etc.), na verdade, usar 1 dos 4 núcleos tem melhor desempenho do que usar 2 ou mais núcleos! Vejo isso simplesmente nos tempos de inicialização da VM, mas também durante os benchmarks de compilação.
Com outros resultados de hardware são diferentes. Eu também tenho um i7 com 8 núcleos, e o desempenho parece escalar muito melhor com o número de núcleos lá (usando 4 lá alegremente).
Minha dica: compare primeiro um novo hardware.
fonte
Confio no agendador do sistema operacional e apenas defino a VM com o número de núcleos físicos, a menos que você saiba que sempre deseja que o host tenha um núcleo potencialmente ocioso enquanto estiver ocupado na VM.
fonte
Isso depende do que você deseja fazer na máquina virtual e também na máquina física. Se você precisar usar a máquina virtual enquanto o sistema operacional host estiver sendo usado para alguma outra atividade, talvez seja melhor usar dois núcleos de processador para a VM, para que o host tenha dois restantes se a VM estiver com carga total. Por outro lado, se você estiver trabalhando principalmente na VM, poderá usar todos os núcleos do processador.
No entanto, a menos que se possa esperar que o convidado use todos os quatro núcleos ao mesmo tempo, você poderá usá-los com segurança enquanto continua trabalhando no sistema operacional host. Lembre-se de que você sempre pode ajustar a prioridade do processo da VM enquanto estiver em execução no sistema operacional host, e o sistema equilibrará as cargas de acordo.
fonte
sim, eu também diria que depende. Mas vou dizer o que prefiro fazer. No trabalho, tenho uma CPU quad core. Então, para a minha imagem virtual (win7), aloquei duas CPUs. Dessa forma, eu posso usar a máquina host e a máquina virtual ao mesmo tempo, e cada uma delas possui recursos iguais de CPU.
fonte