Reduzir o consumo de energia do Linux, Parte 3: Ajustando os resultados

Essa série de três partes é seu ponto de partida para ajustar o seu sistema para eficiência de energia. Na Parte 3, o autor compara o desempenho dos cinco tutores in-kernel tanto no estado ajustado como não ajustado mostrando como otimizar um servidor System x baseado em Linux.

Compartilhe sua opinião:  A economia de energia vale as trocas de desempenho? Inclua seus comentários abaixo.

Jenifer Hopper, Software Engineer, IBM  

author photo - Jenifer HopperJenifer Hopper é engenheira de software do grupo de desempenho do IBM Linux em Austin, Texas. Seu enfoque atual engloba o High Performance Computing (HPC), cargas de trabalho de energia, gerenciadores de sistema e ferramentas de análise de dados.



11/Nov/2009

Sobre esta série

Nesta série, aprenda como ajustar seu servidor IBM System x com base em Linux para eficiência de energia. Você vai aprender sobre tutores in-kernel e suas configurações e como usá-los; também vai conhecer os efeitos dos tutores ajustados em desempenho de energia e carga de trabalho de comércio eletrônico. Os exemplos são baseados em um servidor System x executando o Red Hat Enterprise Linux versão 5.2 (RHEL 5.2), mas as mesmas orientações se aplicam a qualquer kernel 2.6.x, bem como qualquer tipo de processador que suporta escala de frequência.

Parte 1 apresenta os componentes e conceitos necessários para ajustar seu sistema para eficiência de energia, incluindo o subssistema Linux CPUfreq, estados C e P, e os cinco tutores in-kernel.

Parte 2 fornece mais detalhes sobre as configurações gerais do subsistema Linux CPUfreq e dos cinco tutores in-kernel —performance, powersave, userspace, ondemand, e conservative— e suas configurações.

A Parte 3 compara o desempenho dos cinco tutores in-kernel nos estados ajustado e não ajustado para mostrar quais resultados podem ser alcançados ao ajustar a energia do seu sistema.

Cargas de trabalho e efeitos do tutor

Eficiência de energia é uma consideração importante para qualquer um preocupado com os custos do negócio ou questões ambientais. Neste artigo final da série, vamos ver a diferença no rendimento de energia (em números reais e gráficos) que você obtém ajustando o subssistema Linux CPUfreq e os tutores in-kernel para alterar a frequência operacional do processador sem ter um impacto maior no desempenho.

A Parte 2 mostra como usar e usar e ajustar os tutores, então agora veremos alguns efeitos tutores. Eu uso duas cargas de trabalho populares para comparar o desempenho e o consumo de energia e mostrar como um tutor ajustado pode fornecer economia de energia sem sacrificar o desempenho:

  • Uma carga de trabalho do ponto de referência de SPECpower_ssj2008 que avalia tanto energia quanto desempenho
  • Uma carga de trabalho de uma aplicação de compra de comércio eletrônico que reune muitas estatísticas durante uma sessão simulada de compra on-line, incluindo períodos inativos e a quantidade de solicitações por segundo

Estas comparações foram feitas no IBM System x® 3650 executando o Red Hat Enterprise Linux 5.2.


Carga de trabalho SPECpower_ssj2008

Novamente os cinco tutores in-kernel

Performance tutor
Estatística | Ajusta o processador para a frequência mais alta | Faixa de frequência ajustável pelo usuário | Velocidade mais rápida; sem economia de energia

Powersave tutor
Estatística | Ajusta o processador para a frequência mais baixa | Faixa de frequência ajustável pelo usuário | Velocidade mais lenta; pouca economia de energia

Userspace tutor
Dinâmica | Permite que o usuário ajuste as frequências manualmente | Faixa de frequência ajustável pelo usuário | Útil para ajustar uma única política de energia

Ondemand tutor
Dinâmico | Altera a frequência com base no uso do processador | Faixa ajustável pelo usuário, taxa e limite de verificação de utilização | Gerencia a baixa utilização de energia do processador

Conservative tutor
Dinâmico | Altera a frequência com base no uso do processador | Faixa ajustável pelo usuário, verificação de utilização, limite e taxa de resolução de frequência | Gerencia a baixa e a alta utilização de energia do processador

Os resultados a seguir são a partir do ponto de referência de SPECpower_ssj2008 que avalia tanto energia quanto desempenho Para saber mais sobre esta referência ou ver os últimos resultados oficiais de referência, visite o Web site SPEC (pelo link Recursos). Note que estes resultados não são ajustados para um ótimo desempenho e não devem ser considerados como resultados oficiais de referência para o sistema, mas sim resultados obtidos para pesquisa.

O SPECpower_ssj2008 usa uma referência (benchmark) Java™ para obter uma pontuação de referência na unidade ssj_ops (operações ssj) e executa a referência em cargas de 100% baixo para ocioso. Quanto mais alta esta pontuação, mais o sistema pode computar.

SPECpower_ssj2008 também mede a energia em Watts e calcula uma proporção de desempenho-energia em cada uma das cargas. Quanto maior a proporção, melhor a eficácia do desempenho-energia do sistema.

Comparação de tutor padrão

Figura 1 compara os efeitos dos cinco tutores in-kernel, todos sendo executados com suas configurações padrões. Os sched_mc_power_savings e sched_smt_power_savings ajustáveis estavam desligados e a frequência daemon da CPU cpuspeed estava sendo executada juntamente com o tutor do espaço do usuário.

Figura 1. Pontuação e consumo de energia para padrão
Pontuação e consumo de energia para padrão

As linhas pontilhadas mostram a pontuação em ssj_ops, uma métrica de desempenho SPECpower_ssj2008. Como pode-se ver, o único tutor que causa uma queda maior no desempenho é o tutor powersave. Isto porque estatísticamente o tutor powersave ajusta a frequência do processador para a menor disponível, para economizar o máximo possível de energia.

As linhas sólidas mostram o consumo de energia. Novamente, o tutor powersave usa menos energia do que os outros, mas as custas do desempenho. Também, pode-se ver a diferença na energia ociosa entre os tutores. O tutor performance sempre é executado na frequência mais alta e portanto tem um aumento de cerca de 10 Watts no ocioso, comparado aos outros tutores. O tutor userspace, com o daemon cpuspeed, parece ser o melhor dos tutores padrões no fornecimento de economia de energia sem prejudicar o desempenho. Isto pode ser confirmado comparando as proporções de desempenho-energia para cada execução na Figura 2.

Figura 2. Proporção de desempenho-energia para padrão
Proporção de desempenho-energia para padrão

Faça parte de grupos "verdes" no My developerWorks

Discuta assuntos e compartilhe recursos sobre energia, eficiência e meio ambiente no GReen IT Report space e no Green computing group em My developerWorks.

A proporção de desempenho-energia é uma métrica calculada pelo SPECpower_ssj2008 que destaca qual é a eficácia da energia de um sistema em comparação com a pontuação recebida pela quantidade de energia usada para atingir tal pontuação, então, quanto mais alta, melhor a proporção.

Como pode-se ver, o tutor userspace, juntamente com daemon cpuspeed, possui uma proporção melhor de desempenho-energia do que os outros para a maioria das cargas quando os tutores estão sendo executados em suas configurações padrões para esta instalação; portanto, o tutor userspace é mais eficaz em relação a energia.

Ajuste

Como discutido anteriormente na Parte 2, há alguns parâmetros opcionais de ajustes para os tutores ondemand e conservative. Aqui, discutimos como alterar os limites de utilização pode afetar a eficiência de energia do tutor.

Lembre-se dos programadores ajustáveis

sched_mc_power_savings para planejar processos em núcleos.

sched_smt_power_savings para planejar processos em hyperthreads em um núcleo.

Ondemand
O up_threshold ondemand é ajustado no padrão de 80, o que significa que uma vez que a utilização da CPU passe de 80%, o tutor aumentará a frequência. Aqui mostrarei como ajustar o tutor para ser mais eficiente em energia simplesmente alterando o up_threshold para 98.

A Figura 3 compara a eficiência do tutor ondemand sendo executado com a configuração padrão, um up_threshold de 80 versus o tutor ondemand ajustado, sendo executado com um up_threshold de 98. Os sched_mc_power_savings e sched_smt_power_savings ajustáveis foram desligados durantes estas execuções.

Figura 3. Pontuação e consumo de energia para ondemand
Pontuação e consumo de energia para ondemand

Como pode ver pelas linhas pontilhadas, tanto o tutor padrão como o ondemand ajustado atingiram uma pontuação bem similar, então alterar o up_threshold não traz nenhum impacto ao desempenho. As linhas sólidas, que mostram o consumo de energia, mostram uma pequena diferença. Como pode ver, aumentar o up_threshold para 98 resulta em um consumo de energia um pouco mais baixo do que usar o limite padrão.

Na continuação, vamos dar uma olhada na proporção desempenho-energia na Figura 4.

Figura 4. Proporção de desempenho-energia para ondemand
Proporção de desempenho-energia para ondemand

Aqui, pode ver que para quase toda carga, o tutor ondemand ajustado com um limite de utilização mais alto do que 98 é um pouco mais eficaz do que o tutor ondemand padrão.

Conservative
O tutor conservative possui dois valores limites que podem ser ajustados:

  • Primeiro, o up_threshold é ajustado no padrão de 80, o que significa que uma vez que a utilização do processador passe de 80%, o tutor aumentará a frequência.
  • Também, há um down_threshold, que é ajustado no padrão de 20. Isto significa que uma vez que o tutor encontrar o processador utilizando menos de 20%, ele começará a baixar a frequência para economizar energia.

Vou demonstrar como ajustar o tutor conservative para ser mais eficiente simplesmente alterando o up_threshold para 98 e o down_threshold para 95. O que é um ajuste bem agressivo para o tutor, mas vou mostrar que o tutor conservative ajustado agressivamente é mais eficiente em termos de energia.

A Figura 5 compara a eficiência do tutor conservative sendo executado com a configuração padrão, um up_threshold de 80 e um down_threshold de 20, versus o tutor conservative ajustado sendo executado com um up_threshold de 98 e um down_threshold de 95. Os sched_mc_power_savings e sched_smt_power_savings ajustáveis foram desligados durante estas execuções.

Figura 5. Pontuação e consumo de energia para conservative
Pontuação e consumo de energia para conservative

Novamente, as linhas pontilhadas mostram que não há impacto de desempenho ao usar um tutor agressivamente ajustado. As linhas sólidas mostram a diferença no consumo de energia entre o tutor padrão e o ajustado; está bem claro que o tutor ajustado exige muito menos energia em cargas médias, até aproximadamente 40 watts menos em 50% das cargas. Isto é uma economia significativa de energia. Estas observações podem ser confirmadas ao comparar as proporções de desempenho-energia na Figura 6.

Figura 6. Proporção de desempenho-energia para conservative
Proporção de desempenho-energia para conservative

As proporções mostram que o tutor conservative ajustado aumenta sua eficiência de energia acima do padrão do tutor conservative para 30 através das cargas de 90%.

Comparação de tutores ajustados

Nesta seção, vou comparar os tutores conservative e ondemand ajustados com os outros três tutores. A Figura 7 compara todos os cinco tutores com os ajustes de limite conservative e ondemand. Os sched_mc_power_savings e sched_smt_power_savings sintonizáveis estavam desligados, e a cpuspeed daemon frequência da CPU estava funcionando juntamente com o tutor userspace.

Figura 7. Pontuação e consumo de energia para turores ajustados
Pontuação e consumo de energia para turores ajustados

Aqui, novamente, pode-se ver que um grande sucesso de desempenho do tutor powersave precisa desde que apenas é executado na frequência mais baixa possível, embora seu consumo de energia seja bem menor que dos outros. (Vamos dar uma olhada na eficiência de energia do tutor powersave comparado com os outros no próximo gráfico.) Os outros quatro tutores atingem uma pontuação semelhante independente de seus ajustes. Novamente, o tutor performance apenas é executado na mais alta frequência disponível, e que pode-se ver como é grande a diferença que isto faz no consumo de energia comparando com as linhas sólidas. O tutor userspace, sendo executado com o daemon cpuspeed, e o tutor conservative ajustado exije o mínimo de energia após o tutor powersave. O tutor userspace parece consumir um pouco menos de energia do que o tutor conservative ajustado para cerca de 30 a 50% das cargas, e o tutor conservative ajustado exije menos energia para as cargas acima de 50%. Podemos ver que um tem uma eficiência de energia melhor em comparação com suas proporções de desempenho-energia na Figura 8.

Figura 8. Proporção de desempenho-energia para tutores ajustados
Proporção de desempenho-energia para tutores ajustados

Deste gráfico pode-se ver que a eficiência de energia entre o tutor conservative ajustado e o tutor de espaço do usuário executando cpuspeed é muito similar. A pontuação SPECpower_ssj2008 final, não mostrada aqui, indica que o tutor conservative ajustado possui a melhor eficiência de energia no total, mas apenas por uma pequena margem.

Comparação sched_mc_power_savings

Como disse anteriormente, as tentativas ajustáveis de sched_mc_power_savings consolidam os processos para alguns núcleos possíveis para economizar energia. As Figuras 9 e 10 mostram uma comparação de utilização de CPU para uma execução com sched_mc_power_savings ativo (1) e inativo (0), sendo executado com o tutor conservative padrão. As comparações a seguir mostram a utilização para cada processador na carga de 10%, então o sistema é utilizado em média 10%.

Figura 9. sched_mc_power_savings inativo
sched_mc_power_savings inativo
Figura 10. sched_mc_power_savings ativo
sched_mc_power_savings ativo

Pode-se ver claramente a diferença nos dois gráficos. O primeiro gráfico (Figura 9) com sched_mc_power_savings inativo mostra que quatro dos processadores estão sendo executados em cerca de 15%, e os outro quatro sendo executados em cerca de 5% da utilização. O segundo gráfico (Figura 10) com sched_mc_power_savings ativo mostra que a carga foi consolidada em quatro dos processadores, agora em cerca de 20%, e os outros quatro estão ociosos. Usando este ajustável em conjunto com um tutor CPUfreq in-kernel, pode-se reduzir o consumo de energia desde que a consolidação permita que alguns dos processadores fiquem ociosos e portanto, capazes de executarem em baixa frequência.

Comparação sched_smt_power_savings

Como sched_mc_power_savings, as tentativas ajustáveis sched_smt_power_savings consolidam hyperthreads no menor número de CPUs para economizar energia. As Figuras 11 e 12 mostram uma comparação da utilização do processador para uma execução com sched_smt_power_savings ativo (1) e inativo (0), funcionando com o tutor conservative padrão em um sistema que suporta hyperthreading. As comparações a seguir mostram a utilização para cada processador na carga de 10%, então o sistema é utilizado em média de 10%.

Figura 11. sched_smt_power_savings inativo
sched_smt_power_savings inativo
Figura 12. sched_smt_power_savings ativo
sched_smt_power_savings ativo

Novamente, pode-se ver que a carga foi consolidada quando a configuração estava ativa. Se as CPUs que estão ociosas ou perto disso podem usar os tutores CPUfreq para reduzir a frequência e/ou estado ocioso C em conjunto com este tipo de programação, economia de energia pode ser possível.


Uma carga de trabalho de e-commerce

Nesta seção, compararei os efeitos do tutor em outro tipo de carga de trabalho. Os seguintes resultados de uma aplicação de compra de e-commerce que reúne muitas estatísticas durante uma sessão simulada de compra on-line, incluindo períodos inativos e várias solicitações por segundo. Esta aplicação usa um front-end para Apache, uma implementação PHP e uma base de dados MySQL para criar um site de compras aproveitável. Note que estes resultados não estão ajustados para um ótimo desempenho e não deve ser considerado como resultados oficiais para o sistema. Compararemos os efeitos na carga de trabalho em várias cargas de utilização.

Comparação de tutor padrão

Os gráficos a seguir comparam os efeitos de dois tutores in-kernel ajustáveis, conservative e ondemand, e o tutor performance como uma comparação de linha de base. Todos os tutores estão sendo executados com suas configurações padrões, e os sched_mc_power_savings e sched_smt_power_savings ajustáveis estavam desativados durante estas execuções.

A série da Figura 13 mostra as estatísticas para uma sessão de compra on-line com o total de 500 clientes. O sistema em teste é utilizado de 8 a 12% em média quando executando 500 clientes.

Figura 13a. Desempenho em solicitação por segundo
Desempenho em solicitação por segundo
Figura 13b. Período de inatividade em milisegundos
Período de inatividade em milisegundos
Figura 13c. Energia média em watts
Energia média em watts
Figura 13d. Desempenho por watt
Desempenho por watt

A Figura 13a mostra o desempenho da sessão de compra em solicitação por segundo. Pode-se ver que todos os três tutores têm quase exatamente a mesma quantidade de solicitações por segundo.

Há uma pequena diferença em média de período de inatividade como pode ser visto na Figura 13b. O tutor conservative tem um período de inatividade de quase 7ms a mais do que o tutor performance, mas para uma aplicativo tal como um carrinho de compras on-line, a maioria dos usuários não notarão alguns milisegundos extras, então esta diferença pode ser considerada insignificante.

A Figura 13c mostra um consumo médio de energia. Pode-se ver que o tutor conservative economiza cerca de 20W a mais do que o tutor performance; isto é, não há escala de frequência de processador e o tutor ondemand economiza cerca de 15W em média.

A Figura 13d mostra que o desempenho por watt tomando a quantidade de solicitações por segundo dividido pela média de energia consumida. O desempenho similar do tutor e a economia de energia dos dois tutores dinâmicos traduz em um desempenho mais alto por watt. O tutor conservative é o mais eficiente em termos de energia para uma carga de utilização de 8 a 12%, seguido de perto pelo tutor ondemand.

A seguir, compararemos o desempenho por watt para cada um dos três tutores padrões para algumas cargas maiores para ver se o tutor conservative padrão ainda tem a melhor eficiência de energia do que os outros dois tutores padrões. A Figura 14 mostra uma carga de 1.000 clientes, que resulta em uma utilização média de cerca de 20 a 25%.

Figura 14. Comparação do tutor padrão para 1.000 clientes
Comparação do tutor padrão para 1.000 clientes

A partir deste carrinho, pode-se ver que o tutor conservative é também o mais eficiente em termos de energia para esta carga. Para esta execução, o tutor conservative economizou cerca de 25W a mais do que o tutor performance enquanto ainda servia quase exatamente o mesmo número de solicitações por segundo. A média do tutor conservative de solicitação de período de inatividade foi cerca de 5ms mais lento do que os outros dois tutores para esta carga.

Por último, vamos dar uma olhada no desempenho por watt para uma carga de 2.000 clientes na Figura 15, o que empurra o sistema em teste para cerca de 45 a 60% de utilização em média.

Figura 15. Comparação do tutor padrão para 2.000 clientes
Comparação do tutor padrão para 2.000 clientes

Para esta carga, o tutor ondemand padrão tem um desempenho por watt um pouco melhor. Aqui, tanto o tutor ondemand como o conservative economizaram cerca de 15W, mas o tutor conservative padrão teve um sucesso de desempenho desde que completou cerca de 8 solicitações a menos por segundo do que os outros e teve um período de inatividade de cerca de 0,15 segundos a mais do que o tutor performance. Aqui, o tutor ondemand venceu desde que atingiu virtulamente a mesma quantidade de solicitações por segundo com um período de inatividade de apenas 50ms a mais do que o tutor performance, o que logicamente representa que o sistema atingiria sem qualquer escala de frequência do processador.

Comparação de tutores ajustados

Agora, compararemos como os tutores conservative e ondemand ajustados se comportam com esta carga de trabalho. Novamente, o ajuste dos tutores foram atingidos alterando o limite de utilização. O tutor conservative ajustado teve seu up_threshold configurado em 98 e o down_threshold configurado em 95. O tutor ondemand ajustado também foi executado com um up_threshold de 98. Daremos uma olhada nos efeitos do tutor ajustado em uma carga mais pesada de 2.000 clientes (45 a 60% de utilização em média) na série da Figura 16.

Cargas mais leves não mostram muita diferença, porque os tutores ajustados agem da mesma forma que os tutores padrões para todas as cargas com menos de 20% de utilização desde é o down_threshold padrão. Os sched_mc_power_savings e sched_smt_power_savings ajustáveis foram desligados nestas execuções.

Figura 16a. Desempenho em solicitação por segundo
Desempenho em solicitação por segundo
Figura 16b. Período de inatividade em milissegundos
Período de inatividade em milissegundos
Figura 16c. Energia média em watts
Energia média em watts
Figura 16d. Desempenho por watt
Desempenho por watt

As Figuras 16a e 16b mostram que o tutor conservative ajustado teve um sucesso de desempenho de cerca de 13 menos solicitações por segundo e um alto período de inatividade de cerca de 0,28 segundo a mais do que o tutor performance; entretanto, pode-se ver a partir da Figura 16c que o tutor conservative ajustado atingiu uma economia de energia importante de cerca de 55W a mais na escala do processador. Mesmo com baixa taxa de desempenho, o tutor conservative ajustado foi de longe o mais eficiente em energia.


Conclusão

Nesta série de três partes, mostrei que na maioria dos casos, um tutor conservative ajustado com um up_threshold de 98 e um down_threshold de 95 atinge a melhor eficiência de desempenho-energia. Em alguns casos, este tutor pode ter um leve efeito no desempenho.

Você pode decidir se vale a pena o possível efeito sobre o desempenho para alcançar a economia de energia potencialmente significante. Como eu falei, há muitos ajustáveis para os tutores dinâmicos in-kernel que pode-se ajustar para afetar o desempenho do tutor, que por sua vez pode afetar o desempenho da carga de trabalho que está sendo executada.

Como sempre, há uma compensação entre a economia de energia e desempenho, mas espero ter mostrado como reduzir os efeitos sobre o desempenho para um grau insignificante enquanto se obteem uma melhor eficiência de energia do sistema.

Recursos

Aprender

Obter produtos e tecnologias

  • Com o IBM trial software, disponível para download diretamente do developerWorks, construa seu próximo projeto de desenvolvimento em Linux.

Discutir

Comentários

developerWorks: Conecte-se

Los campos obligatorios están marcados con un asterisco (*).


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


A primeira vez que você entrar no developerWorks, um perfil é criado para você. Informações no seu perfil (seu nome, país / região, e nome da empresa) é apresentado ao público e vai acompanhar qualquer conteúdo que você postar, a menos que você opte por esconder o nome da empresa. Você pode atualizar sua conta IBM a qualquer momento.

Todas as informações enviadas são seguras.

Elija su nombre para mostrar



Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Los campos obligatorios están marcados con un asterisco (*).

(Escolha um nome de exibição de 3 - 31 caracteres.)

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


Todas as informações enviadas são seguras.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Linux
ArticleID=446259
ArticleTitle=Reduzir o consumo de energia do Linux, Parte 3: Ajustando os resultados
publish-date=11112009