O gerenciamento de energia da CPU afeta o desempenho do servidor?

44

Eu estava fazendo alguns testes simples de mão no nosso servidor de banco de dados (ao vivo) fora do horário de pico, e notei que as consultas retornavam resultados de referência um tanto erráticos .

Eu havia habilitado o plano de economia de energia "Balanceado" em todos os nossos servidores há algum tempo, porque achei que eles não estavam nem perto da alta utilização e, dessa forma, poderíamos economizar energia.

Eu supus que isso não teria um impacto significativo e mensurável no desempenho. No entanto, se os recursos de economia de energia da CPU estão afetando o desempenho típico - particularmente no servidor de banco de dados compartilhado -, não tenho certeza se vale a pena!

Fiquei um pouco surpreso com o fato de nossa camada da web, mesmo com carga de 35 a 40%, reduzir a velocidade de 2,8 Ghz a 1,25V a 2,0 Ghz a 1,15V.

Espero totalmente que o relógio reduza a economia de energia, mas esse nível de carga parece alto o suficiente para mim e deve estar aumentando a velocidade máxima do relógio.

Nosso servidor de banco de dados com 8 cpu possui muito tráfego, mas uma utilização extremamente baixa da CPU (devido à natureza de nossas consultas SQL - muitas delas, mas consultas realmente simples). Geralmente fica em 10% ou menos. Então eu espero que ele tenha feito downclock ainda mais do que a captura de tela acima. De qualquer forma, quando mudei o gerenciamento de energia para o "alto desempenho", vi meu benchmark de consulta SQL simples melhorar em cerca de 20% e me tornar muito consistente de uma execução para outra .

Acho que estava pensando que o gerenciamento de energia em servidores pouco carregados era vantajoso para as duas partes - sem perda de desempenho e economia significativa de energia porque a CPU geralmente é o consumidor número 1 ou 2 na maioria dos servidores. Esse não parece ser o caso; você perderá algum desempenho com o gerenciamento de energia da CPU ativado, a menos que o servidor esteja sempre com tanta carga que o gerenciamento de energia tenha se desligado efetivamente. Esse resultado me surpreendeu.

Alguém tem alguma outra experiência ou recomendação para compartilhar no gerenciamento de energia da CPU para servidores? É algo que você liga ou desliga nos servidores? Você mediu muita energia que está economizando? Você comparou com ele dentro e fora?

Jeff Atwood
fonte
2
Detesto dizer isso, mas você forneceu sua própria resposta. Veja as três bolhas ao lado de "Desempenho" no modo Balanceado e seis no modo Alto Desempenho? Há a diferença :) A economia de energia é implementada principalmente pelo downclock da CPU. Você verá um desempenho atingido com isso, mesmo que ele possa ser carregado de volta.
Bill Weiss
sim, mas "equilibrado" está ativado por padrão no Windows Server 2008 R2. Isso implica, para mim, que não deve haver uma penalidade de desempenho significativa no uso típico, por exemplo, um servidor com pouca carga.
10139 Jeff Atwood
4
Três bolhas vs seis! Parece uma enorme diferença! :)
Bill Weiss
1
Windows: Abaixando os seres humanos desde 1985.
Michael Graff

Respostas:

16

Não tenho certeza sobre servidores, mas o pensamento atual em dispositivos embarcados não é incomodar-se com as etapas entre baixo consumo de energia e flat-out, porque o tempo extra envolvido consumirá sua economia de energia; portanto, basicamente eles consomem pouca energia até obter qualquer quantidade real de carga da CPU, no ponto em que eles mudam para o mais rápido possível, para que possam terminar o trabalho e voltar à marcha lenta com baixa potência.

pjz
fonte
1
Concordo que é assim que deve funcionar em um servidor.
Jeff Atwood
11

Sempre desativei qualquer tipo de gerenciamento de energia nos servidores. Estou curioso para saber o que os outros experimentaram, mas sempre presumi que, se o servidor estiver com pouca freqüência, sempre haverá algum atraso para 'acelerar' a CPU para 100%, e em um data center configurando qualquer atraso como esse é inaceitável.

Os dados que você forneceu parecem apoiar essa suposição. Portanto, não realizei nenhum teste específico, mas parece que você não deve usar nenhuma tecnologia de economia de energia no Windows ou no BIOS. Eu até desativo as configurações de 'desligar a rede' e da placa PCI para ser extremamente conservadora.

Dave Drager
fonte
8

Quanta energia isso realmente lhe poupará :
Se você decidir que esse recurso pode colocar em risco a estabilidade de seus servidores (eu tenho experiência nisso), você poderá procurar em outros lugares a economia de energia.

Eu tentaria descobrir quanta energia isso pode economizar para a quantidade de servidores que você possui (embora talvez você já tenha feito isso). Como o gráfico que você postou em sua resposta é percentual, para sua empresa, a economia pode realmente ser muito pouca energia real. Se você não possui muitos servidores, pode não ser tanto assim, e obter luzes ativadas por movimento ou algo parecido em seu escritório pode economizar mais energia (mesmo que isso não seja tão comercializável).

Lembro-me de ler alguns anos atrás sobre uma das principais empresas automobilísticas americanas (esqueça qual) tendo pressão para alterar as emissões do escapamento de seus carros. Em vez disso, a empresa mostrou que, se encerrasse algumas de suas fábricas, seria muito mais barato para elas, além de resultar em muito mais economia de emissões.

Não esqueça os discos:
Além disso, convém verificar se esses recursos de economia de energia não rodam o (s) disco (s) se eles não forem usados. Talvez por algum tempo todos os resultados da consulta SQL estejam na RAM, o disco será usado e entrará no modo de suspensão (não tem certeza se funciona assim)? Se isso puder acontecer, haverá uma grande penalidade de desempenho enquanto tudo gira novamente.

Kyle Brandt
fonte
4
ah, sim, a rotação do disco é bastante arriscada nos servidores. Tínhamos permitido isso em nosso NAS e Brent Ozar (nosso especialista em SQL / DBA) nos aconselhou que essa era uma péssima idéia .. todo spin-up é como uma loteria para ver se a unidade realmente voltará :)
Jeff Atwood
O modo "Balanceado" economiza 10 watts em modo inativo em comparação com o modo "Alta performance" (~ 15,5W vs ~ 25,5W em um Core i7 4790). Porém, o modo balanceado no Windows server 2012 não parece aumentar a velocidade máxima do clock da CPU, o que prejudica seriamente o desempenho da consulta ao banco de dados.
Ryan Anderson
8

você perderá algum desempenho com o gerenciamento de energia da CPU ativado, a menos que o servidor esteja sempre com tanta carga que o gerenciamento de energia tenha se desligado efetivamente. Esse resultado me surpreendeu.

Prefácio: Estou dando alguns saltos / generalizações sobre o Intel Xeons e seu desempenho de economia de energia com o SpeedStep. Ao ler sobre as CPUs Intel Xeon " Yorkfield " de 45nm, a Tecnologia Enhanced Intel SpeedStep (EIST) e o Enhanced Halt State (C1E) parecem ser o verdadeiro culpado da situação. Concordo com sua afirmação em acreditar que ativar esses recursos de gerenciamento de energia ajudaria a conservação de energia, mas quando as CPUs precisavam da energia sob carga, o sistema retornava às configurações normais de velocidade do relógio de tensão. Parece que o EIST e o C1E têm alguns efeitos colaterais que não são implicitamente intuitivos ao usar a opção / ou no BIOS. Depois de rastrear vários sites de overclock, parece que essas duas configurações no BIOS causam um pouco de frustração.

Em http://www.overclock.net/intel-cpus/376099-speedstep-guide-why-does-my-processor.html :

C1E (Enhanced Halt State) : C1E é o mais simples dos dois componentes. Ele pode ser ativado ou desativado no BIOS e é executado independentemente do sistema operacional. O C1E tem duas configurações - ocioso e carregado. Quando o uso da CPU é relativamente baixo, esse recurso reduz o multiplicador do processador para a configuração mais baixa (geralmente 6x) e diminui ligeiramente o vCore. Durante um aplicativo com uso intenso de CPU, aumentará o multiplicador para seu valor máximo e fornecerá um pequeno aumento no vCore para compensar. No nosso exemplo, o C1E fará com que seu processador seja executado em 6x ou 9x o FSB .

EIST (Tecnologia Intel SpeedStep aprimorada) : esse é um recurso muito robusto e possui uma ampla variedade de recursos de economia de energia. Como seu primo mais simples, o EIST pode afetar a tensão e o multiplicador da CPU - no entanto, possui muitos outros níveis de configuração. Em vez de uma configuração simples "lenta ou rápida", o SpeedStep pode utilizar todos os multiplicadores disponíveis. No nosso caso de exemplo, o EIST permitirá que seu processador seja executado com um multiplicador de 6, 7, 8 ou 9 e escolhe qual deles usar com base na demanda de sua CPU. O EIST é controlado pelo Windows e utiliza os diferentes "esquemas de energia" que você pode ter visto no seu painel de controle.

Embora o ajuste das configurações de desempenho para "alto desempenho" seja provavelmente a melhor configuração para um servidor de banco de dados, tenho certeza de que o EIST e / ou o C1E fizeram com que as CPUs apresentassem desempenho inferior , embora devessem ter retornado às configurações normais quando o carregamento aumentou substancialmente. A grande ressalva para mim parece ser "o que é uma carga substancial?" De acordo com o site overclockers.net, eles afirmam que o EIST usa essas configurações de "esquemas de energia" para manipular as configurações da CPU. Mas não há indicação de porcentagem de carga ou por quanto tempo saber quando retornar as CPUs à voltagem normal.

Mais uma vez, não sou especialista no assunto de CPUs Intel, mas aposto que o ajuste dessas duas configurações pode proporcionar a economia de energia desejada e o desempenho que você deve obter, mas mantendo a configuração de "desempenho máximo" é tão eficaz sem a necessidade de reiniciar.

osij2is
fonte
5

A resposta rápida é: é claro que a economia de energia afetará o desempenho.

A resposta mais longa não é divertida. Basicamente, tente uma configuração, teste o desempenho e decida com o que você pode viver.

As aplicações e os sistemas são tão complicados que não há resposta imediata, exceto "sim, o tempo de reação e outras velocidades do sistema serão afetados". Se for muito mais lento que o disco rígido ou a rede - bem, você entendeu. Teste na realidade.

Michael Graff
fonte
4

Eu sempre tento fazer a VM de tantos servidores quanto possível, mas onde eu tenho que 'bare-metal' um servidor é normalmente o que eu preciso ou quero um desempenho totalmente consistente. Portanto, para essas máquinas críticas para os negócios, EU NUNCA ligo qualquer coisa relacionada à economia de energia, exatamente pelas razões pelas quais você está enfrentando.

*** credenciais bang-goes-my-green *

Chopper3
fonte
3

Algumas coisas:

  1. Verifique o BIOS para garantir que o gerenciamento de energia esteja sob controle do SO. É possível que ele esteja configurado para ser gerenciado pelo firmware e, portanto, usando um gerenciamento de energia do processador estúpido e não ideal.

  2. Verifique se há algum hotfix relacionado ao gerenciamento de energia que possa estar faltando. Havia alguns notáveis ​​na época em que o Vista / Server 2008 foi lançado.

  3. Verifique a configuração detalhada do Balanced. É possível que outro recurso de economia de energia esteja causando o desempenho reduzido. Em teoria, o desempenho atingido pelo EIST deve ser insignificante, embora, novamente, um banco de dados SQL tenha uma pegada única e é possível que seja afetado desproporcionalmente pelo gerenciamento de energia do processador.

Bigbio2002
fonte
1
Oh menino, eu estou atrasado para a festa ...
Bigbio2002
2

Algumas informações da Microsoft (formato Word Doc, infelizmente)

Aprimore a eficiência energética e gerencie o consumo de energia com o Windows Server 2008 R2

O Windows Server 2008 é mais eficiente em termos energéticos do que o seu antecessor, o Windows Server 2003. Por padrão, o Windows Server 2008 executa o plano de economia de energia "Balanceado" , que visa manter o desempenho alto e economizar energia sempre que possível. Isso significa que o Windows Server 2008 usa menos energia do que uma instalação de linha de base do Windows Server 2003. Como o modo "Equilibrado" maximiza a eficiência de energia pronta para uso (OOB), a Microsoft recomenda deixar as configurações "Equilibradas" padrão selecionadas na maioria dos casos.

O Windows Server 2008 inclui dois modos padrão adicionais, "Economia de energia" e "Alto desempenho", que têm objetivos diferentes de energia e desempenho e podem ser apropriados em algumas situações. O modo "Alto desempenho" pode ser apropriado para servidores que são executados com uma utilização muito alta e precisam fornecer desempenho máximo, independentemente do custo de energia. O modo "Economia de energia" pode ser usado para servidores pouco utilizados que possuem mais capacidade de desempenho do que realmente precisam; o uso de “Economia de energia” nessa situação pode proporcionar economia de energia incremental.

Esses recursos específicos de economia de energia da CPU no nível do hardware são os mesmos em qualquer sistema operacional, é claro, é apenas uma questão de você ativá-los ou não.

O gráfico de economia de energia sem gerenciamento de energia da CPU, versus o gerenciamento de energia da CPU:

Fica claro que (e este gráfico mostra isso) em altos níveis de utilização, o gerenciamento de energia da CPU é desativado automaticamente. O que não estou claro, no entanto, é se, em níveis baixos de utilização, há impacto no desempenho geral do servidor, por exemplo, tempo de resposta em consultas simples do SQL Server.

Jeff Atwood
fonte
Parece um pouco ingênuo acreditar em um white paper escrito pela Microsoft sobre um de seus próprios produtos. Os objetivos do recurso podem estar corretos, mas os números reais podem e irão variar.
gekkz
1
não acredita no que? que "equilibrado" está ativado por padrão ? Isso é verdade. Instale o Windows Server 2008 R2 se você não acredita em mim.
10139 Jeff Atwood
@ Jeff Atwood: Eu acho que ele pode ter significado os resultados reais de economia de energia do gráfico. Pode ser do interesse deles mostrar as estatísticas de uma maneira que mostre a maior economia possível de energia por razões de marketing. Por exemplo, a porcentagem de potência máxima parece um pouco estranha, por que não apenas economizar watts reais? No entanto, como um aviso, pode haver uma boa razão para eles escolherem essa métrica (se essa é a palavra certa).
Kyle Brandt
a economia de energia (10% modestos no gráfico) de habilitar o gerenciamento de energia da CPU é indiscutível. Na verdade, é mais alto em um PC doméstico, pois eles tendem a ter menos unidades, memória, controladores de ataque, etc.
10139 Jeff Atwood
@KyleBrandt - Eu suspeito que a porcentagem de potência máxima foi usada para tornar as descobertas mais genéricas. Dessa forma, você aplica as descobertas à sua máquina (que consome 400 w no máximo, em comparação com um servidor de XXX watts no papel).
EricB
0

Você nunca deve nunca usar as configurações do Windows ou o Bios Speedstep que vem nos processadores Intel e também há um equivalente da AMD. Isso pode causar problemas, e eu já vi problemas em que, com o Speedstep, o relógio da CPU continuava saltando para cima e para baixo erraticamente, mesmo que o uso de recursos da CPU fosse consistente.

Se você quer ser mais verde e poupar energia, usar processadores de baixa potência, designados com o personagem L antes do nome do modelo, tais como L série 54xx e L 55xx série de Intel.

EDIT: Me desculpe se eu dei a impressão de que esse recurso sempre falha, eu acabei de ser queimado por ele e, em um sistema de missão crítica, não posso fazer esse tipo de coisa acontecer, então apenas tento ficar longe disso.

gekkz
fonte
Eu não acho que isso causa problemas, ou não estaria ativado por padrão em quase todos os SOs e CPUs modernos. Você pode estar pensando em variantes muito mais antigas das tecnologias de economia de energia da CPU, talvez alguns anos atrás?
10139 Jeff Atwood
Parece que você assume que tudo o que é um recurso funciona corretamente. Na verdade, estou falando de experiência em primeira mão com uma instalação dupla do E5520 que teve esse problema, em dois servidores diferentes.
gekkz
@gekkz Acho que ninguém está dizendo que é impossível causar problemas, mas sua resposta sugere que sempre, ou quase sempre, causa problemas, o que é simplesmente falso. Se assim fosse, milhares (milhões?) De servidores por aí estariam tendo problemas causados ​​por isso agora.
Phoebus
0

Quando você está falando sobre desempenho em um servidor, existem algumas maneiras diferentes de analisá-lo. Há o tempo de resposta aparente (semelhante à latência da rede) e a taxa de transferência (semelhante à largura de banda da rede).

Algumas versões do Windows Server são fornecidas com as configurações de energia balanceada ativadas por padrão. Como Jeff apontou. O Windows 2008 R2 é um deles. Atualmente, muito poucas CPUs são de núcleo único; portanto, essa explicação se aplica a quase todos os servidores Windows em que você se depara, com exceção das VMs de núcleo único. (mais sobre isso depois).

Quando o plano de energia equilibrada está ativo, a CPU tenta reduzir a quantidade de energia que está usando. A maneira como faz isso é desabilitando metade dos núcleos da CPU em um processo conhecido como "estacionamento". Apenas metade das CPUs estará disponível por vez, portanto, consome menos energia durante períodos de pouco tráfego. Isso não é um problema por si só.

O que é um problema é o fato de que quando as CPUs não estão estacionadas, você duplicou os ciclos de CPU disponíveis para o sistema e desequilibrou repentinamente a carga no sistema, passando de (por exemplo) 70% de utilização para 35% de utilização. O sistema analisa isso e, após o processamento da explosão do tráfego, ele pensa: "Ei, eu devo ligar um pouco para economizar energia". E assim é.

Aqui está a parte ruim. A fim de evitar uma distribuição desigual de calor e energia nos núcleos da CPU, ele tende a estacionar as CPUs que não foram estacionadas recentemente. E para que isso funcione corretamente, a CPU precisa liberar tudo, desde os registros da CPU (cache L1, L2 e L3) até algum outro local (provavelmente a memória principal).

Como um exemplo hipotético, digamos que você tenha uma CPU de 8 núcleos com C1-C8.

  • Ativo: C1, C3, C5, C7
  • Estacionado: C2, C4, C6, C8

Quando isso acontece, todos eles se tornam ativos por algum período de tempo e, em seguida, o sistema os estacionará da seguinte maneira:

  • Ativo: C2, C4, C6, C8
  • Estacionado: C1, C3, C5, C7

Mas, ao fazer isso, há uma boa sobrecarga associada à liberação de todos os dados do cache L1-L3 para que isso aconteça, para que erros estranhos não ocorram nos programas que foram liberados do pipeline da CPU.

Provavelmente, existe um nome oficial para isso, mas eu gosto de explicar isso como uma surra de CPU. Basicamente, os processadores estão gastando mais tempo fazendo trabalhos ocupados movendo dados internamente do que atendendo a solicitações de trabalho.

Se você tiver algum tipo de aplicativo que precise de baixa latência para suas solicitações, precisará desativar as configurações de Energia Balanceada. Se você não tiver certeza se isso é um problema, faça o seguinte:

  1. Abra o "Gerenciador de tarefas"
  2. Clique na aba "Performance".
  3. Clique em "Abrir Monitor de Recursos"
  4. Selecione a aba "CPU"
  5. Olhe para o lado direito da janela nas várias CPUs.

Se você vir algum deles estacionado, notará que metade deles está estacionado a qualquer momento, todos serão acionados e a outra metade será estacionada. Alterna para frente e para trás. Assim, as CPUs do sistema estão se debatendo.

Máquinas virtuais: esse problema é ainda pior quando você está executando uma máquina virtual, porque há uma sobrecarga adicional do hipervisor. De um modo geral, para que uma VM seja executada, o hardware precisa ter um slot no tempo disponível para cada um dos núcleos a cada intervalo de tempo.

Se você possui um hardware com 16 núcleos, é possível executar VMs com mais de 16 núcleos totais, mas para cada divisão do tempo, apenas 16 CPUs virtuais serão elegíveis para esse intervalo de tempo e o hypervisor deve ajustar todos os núcleos para uma VM nessa fatia do tempo. Não pode ser espalhado por várias fatias de tempo. (Uma divisão do tempo é essencialmente um conjunto de ciclos de CPU X. Pode ser 1000 ou pode ser 100k ciclos)

Ex: hardware de 16 núcleos com 8 VMs. 6 possuem 4 CPUs virtuais (4C) e 2 possuem 8 CPUs virtuais (8C).

Timeslice 1: 4x4C Timeslice 2: 2x8C Timeslice 3: 2x4C + 1x8C Timeslice 4: 1x8C + 2x4C

O que o hipervisor não pode fazer é dividir metade da atribuição de uma fatia de tempo nas 4 primeiras CPUs de uma VM de 8 vCPU e, em seguida, na próxima fatia de tempo, dê o restante para as outras 4 vCPU dessa VM. É tudo ou nada dentro de um tempo.

Se você estiver usando o Hyper-V da Microsoft, as configurações de controle de energia poderão ser ativadas no sistema operacional host, o que significa que elas serão propagadas para os sistemas clientes, afetando-os também.

Depois de ver como isso funciona, é fácil ver como o uso das configurações do Balanced Power Control causa problemas de desempenho e servidores lentos. Um dos problemas subjacentes é que a solicitação de entrada precisa aguardar a conclusão do processo de estacionamento / desparqueamento da CPU antes que o servidor possa responder à solicitação de entrada, seja uma consulta ao banco de dados, uma solicitação do servidor da Web ou qualquer outra coisa .

Às vezes, o sistema estaciona ou desarma a CPU no meio de uma solicitação. Nesses casos, a solicitação inicia no pipeline da CPU, é despejada e, em seguida, um núcleo de CPU diferente inicia o processo a partir daí. Se for uma solicitação pesada o suficiente, isso pode acontecer várias vezes ao longo da solicitação, alterando o que deveria ter sido uma consulta ao banco de dados de 5 segundos para uma consulta ao banco de dados de 15 segundos.

A maior coisa que você verá ao usar o Balanced Power é que os sistemas parecerão mais lentos para responder a quase todos os pedidos que você fizer.

Mike Taber
fonte