Reduza o consumo de energia do Linux, Parte 1: Subsistema CPUfreq

Satisfaça todos os componentes de ajuste de eficiência energética para o Linux no Sistema x

Esta série de três partes é o ponto de partida para ajustar a eficiência energética do seu sistema. Na Parte 1, serão discutidos os componentes e conceitos necessários para ajustar um sistema x servidor baseado em Linux para eficiência energética. Saiba como habilitar seu subsistema Linux CPUfreq, obtenha instruções sobre os estados C e P e determine qual dos cinco reguladores integrados no kernel você precisa para impulsionar a eficiência energética no seu sistema.

Compartilhe suas opiniões:  Qual a importância da economia de energia para sua empresa? Adicione 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.



26/Out/2009

Sobre esta série

Nesta série, saiba como ajustar seu servidor sistema x IBM baseado em Linux para obter eficiência energética. Você saberá sobre os reguladores integrados no kernel e suas configurações, além de como usá-los; você também verá os efeitos dos reguladores ajustados em uma carga de trabalho de desempenho energético e comércio eletrônico. Os exemplos são baseados em um servidor de Sistema x executando o Red Hat Enterprise Linux versão 5.2 (RHEL 5.2), mas as mesmas diretrizes se aplicam a qualquer um dos kernels 2.6.x, bem como a qualquer tipo de processador que suporte escala de frequência.

A Parte 1 apresenta os componentes e conceitos necessários para ajustar o sistema para eficiência energética, inclusive o Linux CPUfreq, estados C e P e os cinco reguladores integrados no kernel.

A Parte 2 fornece mais detalhes sobre as configurações gerais do subsistema Linux CPUfreq e os cinco reguladores integrados no kernel —performance, powersave, userspace, ondemand e conservative— e suas configurações.

A Parte 3 fará a comparação do desempenho dos cinco reguladores integrados no kernel em um estado ajustado e em um não ajustado para mostrar quais resultados é possível obter ajustando a energia do seu sistema.

A eficiência energética é uma consideração importante para qualquer pessoa que se preocupe com os custos dos negócios e com problemas ambientais. Neste artigo, vamos ver como usar o subsistema Linux CPUfreq e reguladores integrados no kernel para mudar a frequência operacional do processador para melhorar a eficiência energética do sistema sem causar um grande impacto no desempenho. Entretanto, o ajuste de eficiência energética tem seus limites baseados no hardware (falaremos mais sobre isso na segunda parte desta série.

Subsistema CPUfreq

Iniciando com o kernel Linux 2.6.0, você pode escalar dinamicamente as frequências do processador através do subsistema CPUfreq. Quando os processadores operam a uma velocidade mais baixa de clock, eles consomem proporcionalmente menos energia e geram menos calor. Essa escala dinâmica da velocidade do clock oferece algum controle regulando o sistema para consumir menos energia quando não estiver operando na capacidade total.

A estrutura CPUfreq utiliza reguladores e daemons para definir uma política de energia estática ou dinâmica para o sistema. Os reguladores dinâmicos, sobre os quais falarei mais adiante neste artigo, podem alternar entre as frequências da CPU com base na utilização da CPU para permitir economias de energia sem sacrificar o desempenho. Esses reguladores também permitem certo ajuste pelo usuário para que seja possível customizar e alterar facilmente a escala de frequência. Além disso, as configurações sched_mc_power_savings e sched_smt_power_savings utilizam encadeamentos de consolidação para economizar energia.


Estados C e estados P

Participe dos grupos ecológicos no My developerWorks

Discuta tópicos e compartilhe recursos sobre energia, eficiência e meio ambiente no espaço GReen IT Report e no Grupo de computação ecológica do My developerWorks.

Antes de começarmos com a discussão sobre o CPUfreq, vamos analisar os estados C e P.

Estados C: Quase todos inativos

Estados C, exceto o estado C0 onde o processador está em execução, são estados inativos nos quais o processador desbloqueará e encerrará os componentes para poupar energia. Quando mais profundo o estado C, mais ações para poupar energia são tomadas — ações como parar o clock do processador ou bloquear interrupções. Esses estados podem oferecer economias de energia quando o sistema está inativo.

Também há um modo chamado C1E (alternativamente conhecido como Enhanced C1 ou C1 Enhanced Mode) que pode ajudar a economizar energia quando inativo. O C1E tenta oferecer mais economia de energia do que o tradicional estado C1 (que só apoia o sinal do clock) também diminuindo a tensão e a frequência. Na verdade, C1E tem a capacidade de diminuir a tensão/frequência mais rápido do que qualquer um dos reguladores CPUfreq.

Nem todos os processadores têm todas essas opções, mas para utilizar os estados C e C1E, certifique-se de que as opções da BIOS CPU C State e C1E (ou algo do gênero) estão habilitadas para obter as maiores taxas de economia de energia no estado inativo. Alguns sistemas suportam um estado de hibernação profunda C3 e até C6.

Lembre-se, quanto mais profundo o estado C, maior a economia de energia.

Estados P: Em operação

Os estados P são operacionais e relacionados com a frequência e a tensão da CPU. Quanto mais elevado o estado P, menor frequência e a tensão de operação do processador. Os reguladores CPUfreq utilizam estados P para alterar as frequências e baixar o consumo de energia.

É necessário ter a opção Processor Performance States do BIOS (ou algo do gênero) habilitado no sistema para utilizar os estados P e os reguladores CPUfreq. A figura 1 é um diagrama simples dos estados C e P.

Figura 1. Estados C e P
C and P states

Pré-requisitos para o subsistema CPUfreq

Antes de utilizar o subsistema CPUfreq, são necessários os pré-requisitos descritos nesta seção. O CPUfreq é habilitado por padrão no RHEL 5.2 (normalmente habilitado também em outras distribuições). Uma forma rápida de verificar se o CPUfreq há está habilitado é olhar no sistema de arquivos /sys. Se o diretório cpufreq estiver listado sob /sys/devices/system/cpu/cpu*/cpufreq/, então o sistema está com o CPUfreq habilitado. Se o diretório não estiver listado, siga estas instruções para assegurar que tem as peças necessárias.

Primeiro, certifique-se de que seu processador pode suportar escala de frequência. Consulte a lista de hardware que suporta o subsistema CPUfreq em Recursos mais adiante neste artigo.

Depois, veja o arquivo de configuração de seu kernel. Todas as configurações necessárias são normalmente definidas por padrão para o kernel RHEL 5.2, mas você pode querer mudar algumas das configurações para alcançar o estado desejado de inicialização para seu sistema. As seguintes opções estão localizadas na seção escala de frequência da CPU do arquivo de configuração:

  CONFIG_CPU_FREQ

Essa opção deve ser definida para y para utilizar a escala de frequência da CPU do kernel.

  CONFIG_CPU_FREQ_GOV_PERFORMANCE, CONFIG_CPU_FREQ_GOV_POWERSAVE,
  CONFIG_CPU_FREQ_GOV_USERSPACE, CONFIG_CPU_FREQ_GOV_ONDEMAND,
  CONFIG_CPU_FREQ_GOV_CONSERVATIVE

Essas opções são para cada um dos reguladores CPUfreq disponíveis. Para utilizar um regulador, defina a opção de configuração para y ou m. Se você definir a opção para y, o módulo do regulador será integrado no kernel. Se definir a opção para m, terá que carregar o módulo em si para cada boot emitindo um ou todos os seguintes comandos:

  modprobe cpufreq_performance
  modprobe cpufreq_powersave
  modprobe cpufreq_userspace
  modprobe cpufreq_ondemand
  modprobe cpufreq_conservative

Como alternativa, se escolher m, é possível carregar o módulo no momento do boot adicionando módulos do regulador no /etc/rc.local. Observe também que é possível definir o regulador userspace ou performance para o padrão definindo CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE ou CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE para y.

Também, para utilizar sched_mc_power_savings e sched_smt_power_savings, que serão discutidos adiante, certifique-se de que as opções CONFIG_SCHED_MC e CONFIG_SCHED_SMT estejam definidas para y sob a seção tipo e recursos do processador do arquivo de configuração.

Para que quaisquer mudanças no arquivo de configuração tomem efeito, é necessário reconstruir e inicializar o kernel. Você provavelmente sabe como fazer, mas caso se perca em algum detalhe, verifique qualquer um dos vários recursos para instruções sobre a reconstrução de um kernel Linux (ver Recursos para sugestões).


Lá vêm os reguladores

Há cinco reguladores integrados no kernel disponíveis para uso com o subsistema CPUfreq. Esses reguladores definem a frequência do processador com base em certos critérios, alguns mudam dinamicamente a frequência à medida que as entradas são alteradas pelo sistema ou pelo usuário. Este artigo se concentra no RHEL 5.2, que é baseado no kernel 2.6.18, para que todos esses reguladores estejam disponíveis para uso. Vamos conhecê-los. (As partes 2 e 3 nesta oferecem mais detalhes sobre os reguladores.)

Regulador performance: A frequência mais elevada

O regulador performance configura estatisticamente o processador para mais alta frequência disponível. É possível ajustar a faixa de frequências disponível para este regulador. Como o próprio nome sugere, o objetivo deste regulador é obter o máximo desempenho de um sistema configurando a velocidade de clock do processador para o nível máximo e deixando-o nesse nível. Este regulador não tenta oferecer qualquer economia de energia por padrão, embora seja possível ajustar o regulador para mudar a frequência selecionada.

Regulador powersave: A frequência mais baixa

Por outro lado, o regulador powersave configura estatisticamente o processador para mais baixa frequência disponível. Novamente, é possível ajustar a faixa de frequências disponível para este regulador. A finalidade desse regulador é executar na menor velocidade possível todas as vezes. Obviamente, isso pode afetar o desempenho do sistema que nunca ultrapassará essa frequência, não importa quão ocupados os processadores estejam.

Na verdade, esse regulador normalmente não economiza energia pois as maiores economias de energia geralmente vêm das economias no estado inativo ao entrar nos estados C. A utilização do regulador powersave prolongará um processo de execução se essa estiver na frequência mais baixa; portanto, levará mais tempo para o sistema entrar no estado inativo e alcançara as economias do estado C.

Regulador userspace: Frequências manuais

Em seguida, está o regulador userspace, que permite selecionar e definir uma frequência manualmente. Esse regulador também funciona com daemons de frequência de processador em execução no espaço do usuário para controlar a frequência (falaremos mais sobre daemons e ofereceremos exemplos na Parte 2). Esse regulador é útil para configurar uma política exclusiva de potência que não esteja pré-ajustada ou disponível nos outros reguladores. Também é possível utilizá-lo para experimentar com políticas.

Observe que o regulador userspace em si não altera dinamicamente a frequência. Na verdade ele permite que você ou um programa de espaço de usuário selecione dinamicamente a frequência do processador.

Regulador ondemand: Alteração da frequência com base no uso do processador

Apresentado no kernel 2.6.10, o regulador ondemand foi o primeiro regulador integrado no kernel a alterar dinamicamente a frequência baseada na utilização do processador. O regulador ondemand verifica a utilização do processador e se ela exceder o limite, o regulador definirá a frequência para a mais elevada disponível. Se o regulador notar que a utilização está abaixo do limite, ele diminui a frequência para a próxima disponível. Se o sistema continuar a ser subutilizado, o regulador continuará a diminuir a frequência até definir a mais baixa disponível.

É possível controlar a faixa de frequências disponíveis, a taxa na qual o regulador verifica a utilização no sistema e o limite de utilização.

Regulador conservative: Um ondemand mais gradual

Baseado no regulador ondemand, o regulador conservative (que foi introduzido no kernel 2.6.12) é semelhante porque ajusta dinamicamente as frequências baseadas na utilização do processador; entretanto, o regulador conservative se comporta de forma um pouco diferente e permite um aumento mais gradual de energia. O regulador conservative verifica a utilização do processador e se estiver acima ou abaixo dos limites de utilização, ele aumenta ou diminui a frequência para a próxima disponível ao invés de simplesmente pular para a frequência mais elevada como faz o regulador ondemand.

É possível controlar a faixa de frequências disponíveis, a taxa na qual o regulador verifica a utilização no sistema, os limites de utilização e a taxa de graduação de frequência.


Da próxima vez

Na Parte 2, nos aprofundaremos na configuração e utilização do subsistema. Abordarei algumas definições gerais de configuração e utilização para o subsistema CPUfreq Linux e algumas opções diferentes de interface. Também falarei sobre definições específicas do regulador e programadores administrativos para ajudá-lo a identificar as ferramentas certas para seu uso.

Na Parte 3, discutirei os efeitos que cada um dos reguladores pode ter em diferentes cargas de trabalho utilizando duas cargas de trabalho de configuração populares.

Recursos

Aprender

Obter produtos e tecnologias

  • Com o software de teste IBM, disponível para download diretamente no developerWorks, faça seu próximo projeto de desenvolvimento em Linux.

Discutir

  • Participe da comunidade My developerWorks; com seu perfil pessoal e página inicial customizada, você pode adaptar o developerWorks aos seus interesses e interagir com outros usuários developerWorks.

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=431637
ArticleTitle=Reduza o consumo de energia do Linux, Parte 1: Subsistema CPUfreq
publish-date=10262009