A CPU no sistema host Hyper-V está apenas inativa, apesar de as VMs estarem a todo vapor

5

Eu tenho um servidor que está executando o Windows 2008 64-bit Hyper-V, com 8 GB de RAM e Intel Xeon X3440 @ 2.53 Ghz, o que me dá 8 núcleos lógicos no monitor de desempenho no sistema host.

Eu configurei três máquinas virtuais, todas executando o Windows 2008 de 32 bits.

  1. Criar servidor, executando o Team City
  2. Servidor de armazenamento temporário
  3. SQL Server, executando o SQL Server 2005

Estas três máquinas estão rodando muito lentamente, elas estão em 100% cpu, mesmo que o sistema host mal esteja usando qualquer cpu, normalmente abaixo de 10% no total.

Alguém poderia dar algumas dicas sobre a melhor configuração para alocação de CPU? Devo ter configurado cada servidor para ter dois núcleos, ou devo aumentar esse número acima do número total de núcleos no host?

Qual é um bom número para definir na Reserva de Máquina Virtual e no Limite de Máquina Virtual?

8 gigs de RAM física são insuficientes para 3 VMs?

Obrigado pela leitura. :)

    
por Bjørn 16.04.2010 / 11:03

5 respostas

4

Bjørn, você está preocupado com algo que não é um problema. No seu caso, você tem um hipervisor e quatro máquinas virtuais. Uma dessas máquinas virtuais (o sistema operacional de gerenciamento) veio com o hipervisor. Você então instalou três máquinas virtuais.

Pergunte a si mesmo se você gostaria de ver o sistema operacional de gerenciamento usando o tempo da CPU. Idealmente, você quer que ele deixe o máximo tempo de CPU que puder para as três VMs que você configurou.

Isso é exatamente o que o Hyper-V faz, supondo que você tenha instalado os "Componentes de Integração de VM" em todas as suas VMs. Esses componentes tornam a E / S muito mais eficiente instalando drivers destinados a VMs. Então, a menos que suas VMs sejam particularmente pesadas em I / O, seu sistema operacional de gerenciamento ficará ali aguardando que você interaja com ele, tentando usar o mínimo de recursos possível. Isso é bom.

Se você quiser ver as métricas reais da CPU do hipervisor, não o sistema operacional de gerenciamento, use o Monitor de desempenho no sistema operacional de gerenciamento e procure os contadores do Hyper-V. Eles informarão sobre o uso da CPU física.

Doug Luxem (que parece saber muito sobre isso) respondeu bem em outro tópico hoje. Então eu vou roubar o texto dele:

First, you have to remember that in Hyper-V that the "host" is called a parent partition and it really just like a virtualized guest with special permissions and roles. Just like any other child/guest, when you open up Task Manager, you can not see the CPU usage of the other children on the server.

Ben Armstrong has a good explanation of this here: http://blogs.msdn.com/virtual_pc_guy/archive/2008/02/28/hyper-v-virtual-machine-cpu-usage-and-task-manager.aspx

Por fim, observe o uso de RAM em suas VMs. Veja o tamanho da fila de disco. Estes lhe dirão se você precisar de mais RAM. Parece, no entanto, que suas VMs precisam de mais CPU total do que o host precisa fornecer.

    
por 16.04.2010 / 18:35
2

Não consigo lembrar 100% como isso funcionou, mas observe o seguinte

Eu acredito que o sistema operacional Hyper-V (sistema operacional host, se você quiser) é apenas um shell e não exibe esses contadores corretamente, nem mesmo em perfmon. Também pode ser que ele exiba apenas o que o sistema operacional host está usando, e não as VMs.

Já faz um tempo que trabalhei com o Hyper-V, mas acho que essa foi a base do que você está vendo.

Boa sorte

    
por 16.04.2010 / 11:19
1

Ok, como alguém executando muitas VM's;)

  • A memória não é o problema, obviamente. Ou tem que assistir IO no lado do host (ou seja, todo totaly) E no lado da VM, mas se você conseguir alocar 100% cpu dentro de uma VM - é, obviamente, não traçar os discos e não usar os slots de CPU alocados. Não dizer mais memória não é útil, mas como um computador físico - uma VM que entra strongmente na memória virtual não seria capaz de utilizar todos os ciclos de CPU alocados.

  • Você diz que a CPU está em 100%, mas o host mal aumenta. Quantos núcleos de CPU o HOST tem? Iff que é um sistema de hyper-threading de 4 núcleos (expondo 8 núcleos - desculpe, eu sou totalmente um cara da AMD), uma VM usando 2 núcleos a 100% SÓ apareceria como - 25% para iniciar no host. Isso já pressupõe que você use a maneira correta de medir a utilização da CPU para iniciar (com contadores do Hyper-V ou com o gerenciador do Hyper-V para uma breve ideia). Um servidor ONE CORE em um host 8 CORE CAN - fisicamente - usa apenas 12,5% da energia da CPU disponível para começar. Se isso torna a VM lenta por dentro (o que poderia ser - depende da Priorização de CPU interna da VM), então - isso é como um computador normal sendo sobrecarregado, mas o host mal vê isso.

Assim, 3 VMs e uma CPU de 8 núcleos não fazem sentido usar 1 CPU virtual por host. Você basicamente deixa a maior parte do seu poder de processamento indisponível para as máquinas virtuais. Se você for dual core em todos os servidores - assumindo que o servidor e os processos ganham com isso -, isso fornecerá uma melhor atualização. Como você disse, você poderia ir mais alto - dependendo de como a carga é distribuída (o SQ LServer faz muito enquanto os outros servidores estão ocupados?).

Apenas como exemplo - uma das minhas máquinas é um sistema AMD Opteron de 32 gigabytes (que em breve será de 64 gbytes). Eu raramente fico com a CPU totalmente carregada (com apenas 4 núcleos) - simplesmente porque embora eu execute mais de uma dúzia de servidores nela, a maioria não está ocupada ao mesmo tempo, ou sistemas de carga leve (vários DNS, por exemplo). Eu tenho outro servidor onde TFS (Ms equivalente a TeamCity) é executado, e se eu tiver alguma ação lá - as coisas ficam desagradáveis. Construções, testes de unidade, testes de laboratório de máquina virtual programados, testes de unidade de banco de dados - todos usam toneladas de energia da CPU. Dependendo de quão ocupado isso é, isso pode exigir mais potência da CPU. Como comprar é principalmente um "quantos usuários" coisa - 2-3 desenvolvedores raramente mantêm o servidor ocupado a maior parte do tempo.

Portanto, mesmo se você alocar vários núcleos para, por exemplo, o TeamCity, você fará coisas como várias compilações ao mesmo tempo ou não? Se houver um desenvolvedor fazendo check-in, ele simplesmente nunca fará o check-in em dois projetos ao mesmo tempo;) Mas experimente;)

    
por 16.04.2010 / 11:51
1

Ok, o que eu fiz até agora:

Memória alocada para cada servidor: 2300, 2300 e 2000 megas. Isso deixa um pouco livre memória no host e em cada uma das VMs.

4 processadores virtuais em cada servidor. Em qualquer momento, seus dois servidores, em sua maioria, estão funcionando, o SQL Server ou junto com o servidor de compilação ou com o servidor de temporariedade. Então, isso significa que, provavelmente, a maior parte do tempo, 8 processadores virtuais estarão ocupados ao mesmo tempo, com os 4 últimos não fazendo tanto.

Reserva de máquina virtual definida como 0 em todas as VMs. Limite de Máquina Virtual definido para 100% em todas as VMs.

Em uma tentativa desesperada de deixar a CPU ocupada, defini os processos de trabalho da VM como Prioridade em Tempo Real no Host.

As leituras da CPU ainda são muito baixas no host, mas agora elas não são tão intensas nas VMs, e elas parecem mais responsivas.

    
por 16.04.2010 / 14:25
0

Esta é um post curto e bom sobre o uso de Hyper-V e CPU. Vou deixar a explicação para o artigo.

Além disso, a melhor prática para obter o melhor desempenho das VMs é garantir que você tenha um mapeamento 1: 1 de núcleos lógicos para físicos. Portanto, se você tiver 3 VMs e 8 núcleos, poderá fazer 2 CPUs lógicas em todas as VMs, deixando duas para o hipervisor / host.

Geralmente, é uma má ideia aumentar o número lógico acima do número físico.

Outra maneira de acelerar o desempenho é configurar os VHDs estáticos ou passar pelos discos.

8 GB de RAM devem ser mais do que suficiente para três da maioria das VMs, mas tudo depende dos aplicativos em execução e do quanto eles gostariam de trabalhar de maneira ideal. Verifique a documentação em cada um.

Espero que isso ajude.

    
por 16.04.2010 / 11:27