Hyper-V não escalonando o acesso ao processador para a VM do Windows Server 2000

1

Eu tenho um rack Dell R710 que hospeda várias VMs:

  • Windows Server 2008 R2 com Hyper-V
  • dual Xeon 5520 @ 2,26 GHz
  • 32 GB de mem
  • teamed nic (NICs de 4 gigabits)
  • todas as VMs estão em seu próprio conjunto de discos SAS espelhados

Meu problema é com um servidor virtual Windows 2000 em execução no sistema acima. Este servidor executa o IIS 6, alguns scripts cgi e algumas páginas asp. Todos amarram no back-end do Visual FoxPro DB.

Minha pergunta é como posso dar mais potência à minha VM do Windows 2000, ou isso é possível? As configurações do meu Hyper-V para a inicialização da VM foram:

  • 3GB mem alocada
  • núcleos virtuais padrão (1)
  • 10% (dez) de reserva de VM
  • 100% de limite de VM
  • peso relativo de 100 (há duas outras VMs hospedadas, todas inativas e em discos SAS separados)

Com essa configuração, se eu fizer login nos serviços da Web com 3 contas, eu posso bater a VM do Win2000 em 100%. Em seguida, ajustei as configurações do Hyper-V para o servidor e para cima e para cima até que eu estava em:

  • 4 núcleos virtuais
  • 100% de reserva de VM (ou 25% do total de recursos do sistema)
  • 100% de limite de VM
  • 1000 peso relativo

O kicker é que ao longo de todos os meus testes (configuração superior e inferior) o meu servidor de rack ficou em aprox. 5% de utilização total da CPU. Enquanto isso, minha VM Win2000 executou exatamente a mesma coisa toda vez (CPU fixada com 3 contas conectadas executando a mesma pesquisa ou 30% de utilização da CPU com uma única conta executando uma pesquisa).

Eu também tentei ajustar a configuração de compatibilidade do processador para "Executar um sistema operacional mais antigo, como o Windows NT". No entanto, não tentei a configuração "Migrar para um computador físico com uma versão de processador diferente".

Existe um problema inerente à virtualização do servidor Windows 2000? Existe algo mais que eu possa tentar capturar mais ciclos de CPU do servidor host? Idealmente, eu gostaria que o host passasse para 25-50% de utilização quando a VM Win2000 estiver sendo fixada.

Algumas informações básicas: estes são os nossos antigos serviços herdados que estão sendo reescritos no .Net. Provavelmente, há melhorias de desempenho a serem obtidas na refatoração do código-fonte legado, mas isso não é uma opção. Nossa loja não tem a experiência em FoxPro e a decisão de negócios foi tomada de que o esforço é melhor gasto em uma reescrita.

Existe a opção de comprar um servidor físico rápido para substituir a VM. Estou confiante de que isso teria uma melhora dramática. No entanto, eu preferiria que esse servidor fosse virtualizado, já que fui gravado antes por uma máquina que precisa de uma reinicialização ... uma tarefa executada facilmente no meu telefone para um servidor virtualizado.

Agradecemos antecipadamente por qualquer sugestão que você possa ter.

    
por JohnyD 07.07.2011 / 17:37

3 respostas

1

Ambas as outras respostas estão corretas. Chamar a Microsoft de suporte com o Hyper-V e o Windows 2000 resultará em ser informado de que a única configuração suportada envolve uma CPU virtual.

Com isso dito, suspeito que você tenha exatamente o mesmo desempenho a cada vez, porque o Windows 2000 não se reconfigurou automaticamente como uma instalação com vários processadores quando você adicionou CPUs virtuais. O Win2K estava usando apenas a CPU one , mesmo quando você atribuiu quatro.

Você precisa ir para o gerenciador de dispositivos e alterar o HAL do HAL de processador único para o HAL de multiprocessador. (Atualize o driver no tipo de computador.) Isso acionará a instalação do kernel multiprocessador, ntdll, HAL, etc. Minha memória diz que havia cerca de seis binários que foram alterados.

Note que esta é uma viagem só de ida. Seu Win2K VHD estará executando código multi-processador indefinidamente depois disso, mesmo se você voltar para uma única CPU virtual. Você pode querer fazer backup de seu VHD primeiro, pois esses binários de multiprocessador são menos eficientes que os de processador único ao executar uma única vCPU.

Por fim, entenda que a razão pela qual a Microsoft não suporta mais CPUs para o Win2K tem a ver com o fato de que o kernel Win2K não tem idéia de que não está sendo virtualizado e tem algumas suposições difíceis de que todas as CPUs executam A Hora. Quebrar essa suposição virtualizando mais processadores resultará em ganhos de desempenho inferiores a linear (tosse, tosse). Você pode obter um desempenho razoável com dois processadores. Mais provavelmente não ajudará.

    
por 08.07.2011 / 06:34
5

Primeiro, o Windows 2000 apenas suporta um único processador virtual no Hyper-V .

Segundo, medir o uso da CPU do servidor host não é tão simples quanto usar o Gerenciador de Tarefas, já que o próprio Gerenciador de Tarefas é executado em uma máquina virtual. Para obter mais informações sobre como medir o uso da CPU no Hyper-V, consulte este artigo .

    
por 07.07.2011 / 17:44
3

Seu primeiro problema em seu pequeno teste com 4 núcleos é que você está executando uma configuração não suportada. Quando você executa sem suporte, os resultados são difíceis de prever. Confira este documento da Microsoft . Você só pode executar uma única CPU ao usar o Windows Server 2000 no Hyper V.

Se você der à sua VM um único núcleo e atribuí-la a 100% desse núcleo, você maximizou o desempenho que pode desse sistema. Suas outras opções são implantar uma caixa física ou implantar um hipervisor que suporte o SMP no Windows 2000 (como o ESXi).

    
por 07.07.2011 / 17:51