Limitações do processador Hyper-V

14

Recentemente, adquirimos um servidor executando o Hyper-V 2008 R2 bare metal. O servidor possui dois processadores Intel Xeon de quatro núcleos com hyperthreading; portanto, se estou entendendo corretamente, isso nos dá 16 núcleos. No Hyper-V, criamos uma máquina virtual executando o Windows Server 2008 R2 com 4 processadores virtuais. A tela de configurações do processador está me dizendo que isso representa 25% da capacidade total de processamento do sistema. Isso significa que os 75% restantes não podem ser acessados ​​pelo sistema operacional virtual? Estaremos executando algumas outras máquinas virtuais, mas esta é para o SQL Server e gostaríamos de colocar o máximo de potência possível.

Scott
fonte
5
Você deseja ser extremamente cuidadoso ao alocar vCPUs a uma máquina. Isso significa que a máquina virtual precisa aguardar até que haja 4 processadores físicos disponíveis ao mesmo tempo antes de poder ser executada. Veja aqui
Holocryptic
6
Tanto quanto Hyperthreading vai, dê uma olhada neste excelente manual: arstechnica.com/old/content/2002/10/hyperthreading.ars
Hyppy
4
Holocripticamente, sua afirmação se aplica aos sistemas VMWare mais antigos, mas nunca se aplica ao Hyper-V. O Hyper-V não "organiza em grupo" os processadores virtuais.
Jake Oshins

Respostas:

15

Uma vCPU pode ser mapeada apenas para uma única CPU física. Você não pode pegar 4 CPUs físicas e criar uma única vCPU 4x mais rápida; simplesmente não é assim que funciona.

O Hyper-V é limitado à atribuição de 4 vCPUs a uma VM (a última vez que verifiquei). Se você precisar de energia significativa da CPU, vá físico, não faz sentido adicionar sobrecarga de virtualização a algo que consome muita CPU e paralela em primeiro lugar.

Além disso, como observa a Holocript, se você atribuir 4 vCPUs a uma VM, essa VM não poderá ser executada até que o Hyper-V tenha adquirido 4 núcleos físicos de CPU para executá-los. Dependendo da sua configuração, isso pode ser um grande obstáculo (por exemplo, se você tiver uma máquina de 6 núcleos com várias VMs de vCPU, apenas uma será executada por vez, os outros dois núcleos sempre serão essencialmente não utilizados). Segundo Jake Oshins, isso não era verdade para nenhuma versão do Hyper-V. Ele afirma que o Hyper-V não usa agendamento de grupo para a CPU; como quase todos os outros hipervisores. Portanto, se um núcleo físico da CPU estiver disponível, o Hyper-V poderá usá-lo para executar uma VM com várias CPUs. (Também mencionado, o Hyper-V pode não usar todos os núcleos físicos disponíveis no momento devido ao particionamento NUMA)

Nota lateral: o SQL não usa necessariamente todos os núcleos que você pode usar em primeiro lugar. Ela realmente depende do que você está usando para isso e como paralelizável a carga é.

Chris S
fonte
Eu concordo, mas a sobrecarga nas CPUs virtuais é quase nada e raramente entra em jogo.
Nate
4
Chris, a nota de Holocryptic está simplesmente errada. O Hyper-V não espera até que haja quatro CPUs virtuais gratuitas antes de agendar um processador virtual a partir de uma VM de 4 VP. O Hyper-V agenda um processador virtual sempre que tiver um processador físico gratuito para executá-lo, com algumas ressalvas. Por exemplo, ele procura processadores físicos no mesmo nó NUMA físico que o restante da VM.
Jake Oshins
3

Sim, o que Chris disse. Se você precisar de mais de quatro CPUs em uma máquina virtual Hyper-V, crie dois servidores SQL em virtual e espalhe seus bancos de dados ou vá físico. Dependendo da sua licença do servidor SQL, você poderá adicionar mais servidores SQL no virtual (no mesmo host físico) sem que ocorram mais custos de licenciamento, mas leia o white paper de licenciamento virtual do SQL para obter mais informações.

Concordo também que, se o SQL estiver sem energia da CPU com 4 CPUs virtuais, você terá uma utilização séria do aplicativo ou os comandos SQL serão mal escritos.

Bret Fisher
fonte
1
Re: "... ou os comandos SQL estão mal escritos." Isso é quase garantido, sempre que o código fornecido pelo fornecedor estiver em execução.
Skyhawk
De fato, a maior parte do tráfego de banco de dados é material OLTP do nosso sistema ERP. Também temos um sistema de fluxo de trabalho do mesmo fornecedor. Material personalizado escrito internamente é uma pequena porcentagem.
18711 Scott
Nosso banco de dados antigo está sendo executado no máximo em 4 núcleos lógicos (duas CPUs de núcleo duplo), portanto, esperamos precisar mais do que isso.
18711 Scott
0

Cerca de 4 limites de núcleo da CPU:

Na seção do arquivo de configuração da VM:

[processadores] [tipo de contagem = ”número inteiro”] 16 [/ contagem]

Agora você tem 16 núcleos de CPU.

ATUALIZAÇÃO: parece necessária a captura de tela

insira a descrição da imagem aqui

Nime Cloud
fonte
0

siga este guia

http://surminski.eu/2012/04/17/hyper-v-how-to-add-more-than-4-cores-to-a-virtual-machine/

você pode localizar o arquivo de configuração vm xml no diretório "Máquinas Virtuais" do diretório VHD da VM, o arquivo de configuração será nomeado com o ID da VM. Abaixo o link é uma referência.

Referência: Arquivo de Configuração XML da VM

certifique-se de editar o arquivo de configuração xml da VM com o bloco de notas / bloco de notas ++ aberto sob privilégios de administrador

Shuliyey
fonte