Melhor prática: vCPUs por núcleo físico

23

Estou tentando encontrar alguns guias de documentação ou práticas recomendadas para virtualização com relação ao provisionamento de vCPUs por núcleo físico (de uma CPU). Se isso importa, estou olhando para o vmWare para a implementação da virtualização. Por exemplo, uma CPU Intel Xeon pode ter 4, 8, etc. núcleos. Estou interessado em aprender mais sobre provisionamento além de apenas uma vCPU por um núcleo físico. O fornecedor com quem estou falando definitivamente acha que um único núcleo pode ser provisionado em várias vCPUs.

O que eu geralmente vejo em minha pesquisa até agora é: "Bem, isso depende do seu aplicativo." E, nesse caso, meu aplicativo está editando código, compilando / vinculando, testando e gerenciando configurações. É claro que nem todas as VMs precisam ser configuradas com várias vCPUs por núcleo, mas no caso geral.

    
por Dr. Watson 02.05.2013 / 23:59

4 respostas

20

Uma única CPU física pode ser utilizada como muitas vCPUs. Você raramente fica sem recursos de CPU em soluções de virtualização. RAM e armazenamento são sempre os fatores limitantes ...

Lembre-se, no VMware, a utilização da CPU é representada em MHz usada, não núcleos ... A menos que você esteja colocando todas as CPUs virtuais em 100% TODO O TEMPO , eu não pense que seu fornecedor está correto.

Vamos dar uma olhada no seguinte cluster de sistemas ...

  • 9 hosts ESXi.
  • 160 máquinas virtuais
  • 104 núcleos da CPU física no cluster.
  • O perfil médio da máquina virtual é: 4 vCPU e 4 GB a 18 GB de RAM.
  • A CPU
  • pode ser vendida em excesso ... mas lembre-se, ela também pode ser limitado, reservado e priorizado no nível da VM.

deoutroclusterativo-3hosts42máquinasvirtuais

    
por 03.05.2013 / 00:13
7

Para expandir o write-up do ewwhite, a menos que você tenha aplicativos que possam aproveitar explicitamente várias vCPUs ou vários núcleos por vCPU, não há absolutamente nenhum benefício na alocação de várias vCPUs / núcleos a uma VM. Na verdade, na maioria das vezes, você acabará tendo um desempenho inferior ao invés de rodar em uma única vCPU que tenha um núcleo atribuído a ela, em parte devido à sobrecarga de agendamento necessária para executar várias vCPUs.

FWIW, em uma configuração de VDI, o número geralmente citado é de 5 vCPUs por núcleo físico. É claro que isso leva em conta os desktops dos escritórios. Se as suas VMs estiverem realmente ocupadas com a compilação de código o tempo todo, talvez você não consiga ajustar 5 vCPUs por núcleo físico.

A razão pela qual tantas pessoas dizem que "depende" é porque realmente acontece. Observe os valores da CPU Pronto e, em seguida, decida se você pode colocar mais carga da CPU em um determinado sistema. CPU Ready é uma medida da vCPU estando pronta para executar um comando, mas ele tem que esperar que o tempo de CPU físico fique disponível.

No seu caso, se você estiver compilando programas grandes, é totalmente possível que suas VMs realmente precisem de muito tempo de CPU. Como ewwhite observou, normalmente a virtualização tende a ser limitada a E / S de disco e RAM, em vez de restringir a CPU.

    
por 03.05.2013 / 05:53
3

O problema subjacente é basicamente o mesmo que o agendamento de processos em um sistema físico. Contanto que a carga do sistema esteja abaixo do número de núcleos (ou mesmo processadores lógicos, no caso do HyperThreading) tudo está bem e os processadores podem manipular a carga.

Portanto, contanto que a carga simultânea em todas as vCPUs usadas não exceda a carga que pode ser manipulada pelos seus núcleos físicos, tudo estará bem.

Para suas demandas, apenas a compilação é um trabalho intenso da CPU, que é necessário apenas de tempos em tempos. Para as VMs do compilador, alocamos tantas CPUs quanto disponíveis. Portanto, se houver necessidade de compilar, isso será feito o mais rápido possível (se seu compilador suportar compilação paralela).

Isso pode não ser verdade para um compilador-VM que está sob carga constante (por exemplo, se você fornecer um serviço da Internet para fazer compilações e que está sendo constantemente usado).

    
por 03.05.2013 / 10:12
1

Uma regra prática que vi (possivelmente na documentação do VMware) não é alocar mais núcleos para uma VM do que existir fisicamente no host, porque isso faria com que vários vCores fossem emulados em um único núcleo, adicionando sobrecarga desnecessária .

    
por 08.05.2013 / 00:18