A configuração de uma VM com mais de 1 CPU / núcleo realmente melhorará o desempenho?

11

Quando uso a estação de trabalho VMware, posso definir a VM com vários núcleos. Na verdade, estou usando-o em uma máquina com núcleo duplo e quatro núcleos lógicos. Então, eu realmente melhoraria o desempenho do VMS usando mais núcleos na VM?

Pete2k
fonte
3
Vale lembrar uma coisa ao dimensionar os convidados virtuais: se isso teria beneficiado a instalação em uma máquina real, será beneficiado como uma máquina virtual e vice-versa. E o mais importante de tudo: nada de mágico acontece com os requisitos de sistema ou aplicativo apenas porque você virtualizou alguma coisa .
precisa

Respostas:

8

depende do que a VM está executando, um convidado em uma máquina com n número de núcleos terá melhor desempenho em n-1 núcleos atribuídos, desde que o convidado seja capaz de utilizar várias CPUs de maneira eficaz. Infelizmente, a maneira mais simples de determinar isso é tentar e ver. Normalmente começo com 2 e paro quando o desempenho aumenta. Normalmente, 2 núcleos é onde vejo o "ponto ideal". Poucas combinações de aplicativos / sistemas operacionais que encontrei serão dimensionadas melhor que isso.

Jim B
fonte
6

Para esclarecer, você está dizendo que possui uma CPU de núcleo duplo e atribuiu 4 CPUs virtuais na VM?

Nesse caso, não; se você atribuir mais vCPUs do que os núcleos de execução física, verá uma ligeira redução no desempenho devido à sobrecarga de compartilhamento dos 2 núcleos físicos entre 4 núcleos virtuais (além de tudo em execução no host físico).

Você verá o melhor desempenho da VM atribuindo a ela 2 vCPUs.

Shane Madden
fonte
Não necessariamente - você realmente verá apenas um desempenho aprimorado se os aplicativos em execução na VM puderem tirar proveito dos sistemas com vários núcleos. Infelizmente, embora seja 2011, muitos aplicativos não.
EEAA
@ErikA Fair point - deixando de lado o aplicativo, estou apenas dizendo que, com apenas 2 núcleos físicos, 2 vCPUs em uma única VM é sempre melhor que 4 vCPUs.
Shane Madden
sim, 100% concordaram com esse ponto.
EEAA
5

Experimentamos há pouco tempo ( veja minha pergunta de um ano atrás ) a atribuição de vCPUs de núcleos físicos versus núcleos lógicos (threads) em CPUs de quatro núcleos com hyperthreading (8 vCPUs atribuíveis pareciam estar disponíveis). Como as respostas que recebi na época sugeriram - e nossa experiência se desenvolveu -, você deve alocar o número mínimo de núcleos possível a cada convidado para permitir que ele execute.

Ao atribuir mais vCPUs do que núcleos físicos disponíveis no host, se os convidados estavam sob carga simultânea, o hyperthreading nem sempre era rápido o suficiente para alternar o contexto da CPU entre os threads para simular efetivamente outra CPU. Isso pode levar a coisas muito desagradáveis ​​para todos os convidados, incluindo bloqueios e tempos limite que podem exigir reinicialização, fsck e pior na pilha. Mesmo que isso não aconteça, o desempenho geralmente será mais lento para os hóspedes, e não mais rápido.

Como @Chris S colocou em seu comentário na época, "sempre aloque o mínimo possível e evite grandes dores de cabeça".

nedm
fonte