Prática recomendada para desativar o SpeedStep para hosts Hyper-V?

6

Estou analisando um problema em que o desempenho de cargas de trabalho limitadas pela CPU dentro de máquinas virtuais com frequência (nem sempre) está muito abaixo do que poderíamos esperar com base no hardware subjacente.

Estamos usando o Hyper-V no Windows Server 2012 R2. O servidor tem dois processadores Intel Xeon E5-2643 v2 a 3,50 GHz.

Aqui estão alguns números que parecem ser relevantes:

  • Processador lógico do hipervisor do Hyper-V,% de tempo total de execução, instância _Total: média de 20%
  • Processador virtual Hyper-V Hypervisor, Tempo de Espera de CPU por Despacho, Instância _Total: Média de 20000 (esse número parece estar totalmente do lado seguro, então não parece que o hypervisor precise "acionar" dos processadores virtuais programar o tempo para CPUs lógicas de outra VM; parece traduzir em uma sobrecarga de 2%)
  • Processador lógico do hipervisor do Hyper-V,% da frequência máxima, instância _Total: média 34%
  • A ferramenta CPU-Z mostra a maior parte do tempo em torno de 1200 MHz para o Core # 0 de ambos os processadores (praticamente corresponde à% de Max Frequency reportada pelo Performance Monitor)

Em uma área de trabalho com apenas alguns núcleos, a velocidade do núcleo aumenta imediatamente assim que uma atividade vinculada à CPU é iniciada.

Em nossos hosts Hyper-V, no entanto, a velocidade do núcleo parece aumentar apenas se a carga geral do sistema parecer alta por alguns segundos. Agora, por exemplo se você tiver uma VM com 4 CPUs virtuais de um total de 24 físicas (com Hyperthreading ativado), e essa VM precisar de energia da CPU e o Gerenciador de Tarefas dentro da VM mostrar quase 100% do uso da CPU, na maioria das vezes a velocidade do clock a CPU física não vai subir e o desempenho é ruim.

Obviamente, este é um comportamento indesejado. Pense em um servidor de banco de dados que precisa de três vezes o tempo para responder a uma consulta porque o servidor não tem carga "suficiente" para aumentar a frequência da CPU. Isso não faz qualquer sentido.

Eu encontrei uma postagem no blog descrevendo exatamente o mesmo comportamento para as lâminas VMWare e Cisco , a partir de 2011. Eu não encontrei informações sobre isso em nenhum outro lugar.

Na verdade, consegui me livrar desse comportamento alternando para o plano de energia "Alto desempenho" do Windows em powercfg.cpl , com um aumento de cerca de 30% no consumo de energia. Na verdade, obtenho um desempenho melhor e mais consistente, e o Monitor de desempenho mostra valores de carga menores.

(Em um servidor mais antigo, encontrei uma configuração adicional "Gerenciamento de energia de processamento | Estado mínimo do processador", que pode ser definido como 100% sem desabilitar todas as outras opções de economia de energia. As novas exibem apenas "diretiva de resfriamento do sistema" em "Ativo" mesmo para o plano "Equilibrado", então minha única opção foi escolher "Alto desempenho".)

Esta é realmente a melhor prática para hosts do Hyper-V ou há alguma outra solução alternativa? Se o SpeedStep é realmente um problema, pergunto-me por que eles ainda o constroem em CPUs de servidores e o habilitam por padrão e porque eu nunca li sobre essa configuração em um guia de configuração do Hyper-V?

    
por realMarkusSchmidt 21.01.2015 / 14:16

3 respostas

7

Após um pouco mais de pesquisa, parece que este é um problema geral com CPUs de servidores modernos, mesmo não relacionadas à virtualização, e grandes fornecedores de servidores, bem como fornecedores de software como Microsoft e VMWare. limite o desempenho da sua CPU . Eu ainda acho isso difícil de acreditar.

A solução para qualquer pessoa que se preocupa em ter instantaneamente o acesso a energia da CPU completa por núcleo , sem todos os núcleos a ser ocupado no início, é desativar a economia de energia (Intel SpeedStep / EIST ou AMD Cool'n 'Quieto). Dependendo da configuração da BIOS, isso pode ser controlado no nível do sistema operacional (como no Windows powercfg.cpl plano de "High-Performance"), ou através de BIOS, neste caso a configuração OS fica acinzentado.

Brent Ozar escreveu sobre isso ( "SQL Servidor em CPUs que economizam energia não são tão rápidos. ") em 2011:

In the last few weeks, I’ve seen several cases where server upgrades have resulted in worse performance, and one of the key factors has been throttled-down CPUs. In theory, the servers should crank up the juice according to demand, but in reality, that’s rarely the case. Server manufacturers are hiding power-saving settings in the BIOS, and Windows Server ships with a default power-saving option that throttles the CPU down way too often.

Microsoft diz em KB2207548 :

In some cases you may experience degraded overall performance on a Windows Server 2008 R2 machine when running with the default (Balanced) power plan. The issue may occur irrespective of platform and may be exhibited on both native and virtual environments. The degraded performance may increase the average response time for some tasks and cause performance issues with CPU-intensive applications. [...] This issue may occur if the Power Options settings are set to Balanced. By default, Windows Server 2008 R2 sets the Balanced (recommended) power plan

Há um hotfix disponível para Win2008R2, e uma atualização de BIOS é recomendado, mas desde que esta é uma questão ainda com Win2012R2 parece que não há nenhuma maneira em torno da segunda recomendação, "High performance" plano.

Um problema com sintomas semelhantes é descrito em KB2534356 , que também oferece um hotfix somente para Win2008R2. Então, para mim, apenas os applys de solução usual (plano de alto desempenho), mas parece que uma correção pode ser possível no futuro. (Funciona muito bem em CPUs de desktop, então não entendo porque não deveria ser possível no servidor.)

Eu atualizarei esta resposta caso eu encontre uma solução melhor (ou, claro, alterarei a resposta aceita se alguém estiver postando uma solução).

Ainda pensando se EC2 ou Azure pode ter a mesma questão (neste caso, você não seria capaz de fazer nada sobre isso, pois você precisa de controle sobre o exército, mudando a configuração no VM não terá quaisquer efeitos) .

Mais algumas referências:

por 22.01.2015 / 13:36
0

Eu só vi isso esporadicamente. Em teoria, o speedstep (que está se tornando cada vez mais uma opção não configurável), não deve afetar seu desempenho. No entanto, quando ele é desativado e, de repente, você fica ocupado em uma única VM, às vezes parece que o processador simplesmente não acha que é suficiente. Não tenho certeza se esse é um problema da Microsoft, já que você mencionou que a VMware e a Cisco têm o mesmo problema.

    
por 21.01.2015 / 20:51
-2

É um recurso da BIOS no servidor para remover o speedstep. No IBM blade, é uma opção padrão do BIOS: sem speedstep e, às vezes, sem turbo. verifique os detalhes técnicos do blog:

link

"Dependendo de suas descobertas e necessidades, você pode querer desativar o SpeedStep ou o Cool'n'Quiet no BIOS ou no Windows" Então, se você tiver problemas, basta desligá-lo.

E na verificação da BIOS para instrução virtual não desligada em bios ruins.

Não se esqueça de adicionar "hyperv tools" para melhorar o "virtual aware os" no sistema operacional antigo.

    
por 21.01.2015 / 16:23