Quantos processadores ou núcleos virtuais devo atribuir ao meu SO convidado? [fechadas]

8

Acabei de receber uma máquina Host atualizada e estou procurando levar alguns desses avanços para o (s) SO (s) convidado (s) das estações de trabalho. Em particular, eu costumava ter um único processador, com 2 núcleos, portanto meu SO convidado tinha apenas 1/1.

Agora, eu tenho um único processador com 8 núcleos, então estou curioso sobre o que seria recomendado para o meu SO convidado agora?

  • 1 processador / 4 núcleos?
  • 2 processadores / 2 núcleos?
  • 4 processadores / 1 núcleo?

Meu instinto diz ficar com o número de processadores físicos (ou menos), mas isso é baseado na realidade? Passei um bom tempo procurando uma resposta para isso, mas talvez meu google-karma não esteja a meu favor hoje.

reidLinden
fonte
Seu convidado está usando os recursos de processamento que possui agora?
OldWolf
Esse link pode ser útil, sugerindo que você corresponda sua configuração à configuração NUMA do host.
Glenn

Respostas:

4

Em meus próprios testes, com o VMWare Workstation, usando os mais recentes testes GeekBench 3 de 64 bits, em uma máquina host com 1 CPU, 2 núcleos (com o HT ativado, com 4 núcleos):

Sistema Host:

  • 2866 Pontuação de núcleo único, 5939 Pontuação de múltiplos núcleos

Virtualizado:

  • 1 CPU, 1 núcleo: 2783 sc, 2705 mc
  • 1 CPU, 2 núcleos: 2758 sc, 4271 mc
  • 1 CPU, 3 núcleos: 2783 sc, 5234 mc
  • 1 CPU, 4 núcleos: 2769 sc, 5793 mc

Portanto, pelo menos nos meus testes, parece que há um benefício em definir o número virtual de núcleos para corresponder aos núcleos físicos. Talvez eu esteja errado. Eu adoraria discutir.

Nicholas
fonte
Excelente pesquisa! Obrigado. Você poderia estender esta pesquisa para cobrir algumas das outras opções que destaquei no post original? Como um sistema virtual 2/2 e 4/1 (já tendo identificado que um 1/4 out executa configurações de 1/4)? Essa é a verdadeira questão. Você deve usar 1/4, 2/2 ou 4/1 (assumindo que você usa 4 núcleos virtuais no geral). Além disso, admito que não entendo a diferença entre "pontuação de núcleo único" e "pontuação de núcleo múltiplo" em cada um dos seus exemplos. Como uma máquina 1cpu / 1core pode obter uma pontuação multi-core? O mesmo para a situação 1cpu / 4core, em sentido inverso ....
reidLinden
2

Não sei se essas informações ainda são válidas, mas no passado não muito tempo atrás, as CPUs hóspedes adicionais não eram tão boas quanto as CPUs do host. De fato, a melhor recomendação era permanecer com CPUs únicas em suas configurações de convidados, a menos que você estivesse testando / depurando especificamente software multithread em seus convidados e exigisse um ambiente SMP.

Editar: Esta resposta é específica para virtualização de desktop, não para virtualização de servidores.

afrazier
fonte
então, você está dizendo 1 processador, com um único núcleo?
ReidLinden
Sim. A estação de trabalho VMware permite definir esses valores de forma independente agora? Eu não o uso desde a versão 6, e era apenas um número de CPUs. Se você for fazer multi-core / multi-CPUs em seus convidados, duvido que seja muito importante a maneira como você escala as coisas, a menos que considerações de licenciamento (número de "soquetes" versus número de "núcleos") entrem em jogo. por exemplo, o XP Home permite apenas 1 soquete, mas até 4 núcleos, enquanto o XP Pro permite 2 soquetes.
111111
sim, parece que tenho a opção de escolher "# processadores" e "# núcleos" independentemente ... Minha máquina host possui 1 processador com 8 núcleos, em um windows7 Professional, e meu (principal) guestOS é um servidor Windows 2003. ..
reidLinden
0

No máximo, eu dou aos meus núcleos OS 2 convidados. Não importa se você faz 1 processador, 2 núcleos ou 2 processadores, 1 núcleo cada. A configuração do procesor é por motivos de compatibilidade. Processador / núcleos não escalam tão bem para o SO convidado devido ao agendamento do processo núcleo / processador. 2 núcleos parecem ser o ponto ideal.

Metril
fonte
Você deseja evitar ter um processador e um núcleo para uma VM, porque, se alguma operação que o sistema operacional host não espera bloquear inesperadamente, a VM inteira é bloqueada.
9788 David Schwartz #
0

Há pouca diferença neste momento. Em alguns casos, o licenciamento de software pode depender de núcleos ou CPUs.

Virtualizado: 1 CPU, 1 núcleo: 2783 sc, 2705 mc 1 CPU, 2 núcleos: 2758 sc, 4271 mc 1 cpu, 3 núcleos: 2783 sc, 5234 mc 1 cpu, 4 núcleos: 2769 sc, 5793 mc Então, pelo menos nos meus testes, parece que há um benefício em definir o número virtual de núcleos para corresponder aos núcleos físicos. Talvez eu esteja errado. Eu adoraria discutir.

Isso é apenas em uma referência que usa todos os núcleos. A maioria dos aplicativos não dimensiona o desempenho linearmente com a contagem de núcleos, pois simplesmente não usam os núcleos extras.

Há também algum nível de sobrecarga com a adição de mais núcleos. Em resumo, adicione apenas o número de núcleos que seu aplicativo precisa para executar nos níveis necessários. Só porque você tem 4 núcleos no host, não significa que toda VM deve receber 4 núcleos.

Em vários ambientes que eu gerencio, temos CPUs duplas de 10 núcleos com um total de 40 threads lógicos e meus controladores de domínio ainda obtêm apenas dois núcleos.

Curtis
fonte
-2

Estou bastante chocado que essas perguntas freqüentes não tenham sido totalmente respondidas até agora. A CPU do host deve suportar algumas tecnologias de virtualização, por exemplo, o Intel VTx. Isso permite que você "encaminhe" todo o poder da CPU para o seu sistema operacional convidado. Caso contrário, haverá uma enorme queda de velocidade devido à emulação de uma CPU. Se você estiver tendo uma CPU com hyperthreading, deverá ver 8 processadores para uma CPU quad-core no gerenciador de dispositivos da sua máquina host (o hyperthreading duplica o número de seus núcleos). Nesse caso, você pode atribuir 1 processador com 4 núcleos ao seu sistema operacional convidado. Desde que você não tenha nenhum outro processador físico em seu sistema, não atribua mais de 1 processador à sua máquina virtual. Você pode atribuir mais ou menos núcleos ao seu sistema operacional convidado, dependendo de suas necessidades, mas não deve t atribua um valor maior que seus núcleos de hyperthreading. Mas observe que seu host também precisa de energia da CPU. Normalmente, configuro o número médio dos meus núcleos hyperthreading e o número médio da minha memória, por exemplo, 8192 MB quando você tem 16 GB de RAM. Geralmente, essa é uma boa configuração, mas não se você quiser executar mais de uma máquina virtual por vez.

martinjohannes93
fonte