Existe uma configuração ideal para o número de núcleos de CPU expostos a uma VM?

21

O VirtualBox, e possivelmente outro software da VM, permite que o usuário especifique o número de CPUs expostas à VM. No meu caso particular, eu tenho uma CPU dual core, com o Windows 7 de 64 bits rodando nativamente, e o Ubuntu 9.04 de 64 bits como a VM.

O arquivo de ajuda sugere não configurar 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?

    
por sblair 12.08.2009 / 22:30

7 respostas

4

Depende inteiramente do que o sistema operacional convidado está fazendo. Na minha experiência pessoal, uma VM está executando um único programa (servidor de compilação, servidor trac, SVN etc.), portanto, não há motivo para configurá-lo acima de um.

Um caso possível pode ser se for um usuário final em uma universidade que esteja usando o sistema operacional convidado como descartável (ou seja, TAs) e, em seguida, talvez configurá-lo como superior a um.

    
por 12.08.2009 / 22:41
16

As informações nesta resposta não estão mais corretas . Foi correto nos dias de co-programação rigorosa, mas não é mais o caso.

Estou mantendo a resposta abaixo por causa do bem-estar, mas, por favor, não confie nela para ser preciso para hipervisores modernos.

Você deve nunca atribuir todos os seus núcleos como vCPUs em uma máquina virtual.

Se uma VM solicitar qualquer tempo de CPU, o VMWare terá para alocar todas as vCPUs ou nenhuma das vCPUs.

O que isto significa é que, em um sistema de 4 núcleos, se você alocar todos os 4 núcleos, somente o host ou o convidado poderão ser alocados no tempo do processador, não ambos ao mesmo tempo.

Isso arruinará a performance em ambos os 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 eu nunca aloco mais que (n / 2) vCPUs (no seu caso, 2) - mas normalmente eu aloco núcleos em servidores com 12 a 32 núcleos onde você pode alocar grandes números de vCPUs sem grandes impactos.

    
por 21.04.2011 / 05:32
2

O número de núcleos expostos a CPUs guest não afeta o desempenho tanto quanto você gostaria. Ele apenas ajusta a quantidade de núcleos que a CPU convidada "vê".

Dependendo de como o emulador é configurado, ele poderia literalmente metade do desempenho da máquina virtual, não afetaria ou afetaria apenas o modo como os sistemas operacionais / aplicativos convidados dividem o agendamento de threads.

É melhor deixar 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.

    
por 19.08.2009 / 19:29
2

Como Nate mencionou, desde que sua VM sirva principalmente executando um processo single-threaded, há poucas razões para alocar mais de um núcleo.

No entanto, se você planeja usá-lo de uma forma que possa se beneficiar de mais núcleos (programa multi-threaded, muitos programas paralelos, ..), a história é mais complicada. Eu presumi anteriormente que usar metade de sua CPU para sua VM era uma boa ideia. Acontece que isso nem sempre é ótimo.

A única maneira de ter certeza é executar benchmarks. Eu não sei porque, mas no meu sistema Core2 Quad (que tem suporte a VT-x, paginação aninhada, ..), na verdade usando 1 dos 4 os núcleos funcionam melhor do que usando 2 ou mais núcleos! Eu 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 felizmente).

Minha dica: faça um benchmark de um novo hardware primeiro.

    
por 28.11.2015 / 11:48
1

Eu confiaria no agendador do sistema operacional e configuraria a VM para o # de núcleos físicos, a menos que você saiba que sempre deseja que o host tenha um núcleo potencialmente ocioso enquanto você está ocupado na VM.

    
por 15.08.2009 / 18:02
1

Isso depende do que você deseja fazer na máquina virtual e na máquina física. Se você precisar usar a máquina virtual enquanto o sistema operacional do host estiver sendo usado para alguma outra atividade, talvez seja melhor usar dois núcleos de processador para a VM, de modo que o host tenha dois restantes, se a VM estiver sob 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 espere que o convidado use os quatro núcleos de uma só vez, você pode usar todos eles com segurança enquanto continua a trabalhar no sistema operacional host. Lembre-se de que você sempre pode ajustar a prioridade do processo da VM enquanto está em execução no sistema operacional do host, e o sistema equilibrará as cargas de acordo.

    
por 21.04.2011 / 05:21
0

sim, eu também diria que isso depende. Mas direi o que prefiro fazer. No trabalho eu tenho um processador quad core. Então, para minha imagem virtual (win7), aloquei duas CPUs. Dessa forma, posso usar a máquina host e a máquina virtual ao mesmo tempo e cada uma delas tem recursos de CPU iguais.

    
por 15.08.2009 / 17:48