Gerenciamento de energia no Linux

Apesar dos processadores estarem cada vez mais poderosos, a maioria dos usuários passa o dia rodando aplicativos leves ou jogando paciência, utilizando apenas uma pequena parcela do poder de processamento do micro.

Prevendo isso, quase todos os processadores atuais oferecem recursos de economia de energia, que reduzem a freqüência, tensão usada ou desligam componentes do processador que não estão em uso, reduzindo o consumo enquanto o processador é sub-utilizado.

Naturalmente, estes recursos de gerenciamento também podem ser ativados no Linux. Vamos a um resumo das opções disponíveis. Esta configuração é feita automaticamente durante o boot no Kurumin 7, mas é interessante entender como funciona, para que você possa ativar o gerenciamento em outras distribuições, além de aprender a corrigir problemas.

O primeiro passo é instalar o pacote “powernowd“, o daemon responsável por monitorar o processador, ajustando a freqüência e recursos de acordo com a situação. Nas distribuições derivadas do Debian, instale-o via apt-get, como em:

# apt-get install powernowd

No Ubuntu e Kubuntu o comando é o mesmo, você deve apenas ter o cuidado de descomentar a linha referente ao repositório “Universe” dentro do arquivo “/etc/apt/sources.list”.

O powernowd trabalha em conjunto com um módulo de kernel, responsável pelo trabalho pesado. O módulo varia de acordo com o processador usado:

speedstep-centrino: Este é o módulo usado por todos os processadores Intel atuais, incluindo todos o Core Solo, Core Duo, Pentium M e Pentium 4 Mobile. A exceção fica por conta do Celeron M (veja mais detalhes abaixo), que tem o circuito de gerenciamento desativado.

powernow-k8: Este é o módulo usado pelos processadores AMD de 64 bits (tanto os Athlon 64, quanto os Turion), que oferecem suporte ao PowerNow!. O driver também oferece suporte aos Semprons, que oferecem uma opção mais limitada de gerenciamento.

powernow-k7: Antes do Athlon 64, a AMD produziu diversas versões do Athlon XP Mobile, uma versão de baixo consumo destinada a notebooks. Este módulo dá suporte a eles. No caso dos Athlons e Durons antigos, você pode usar o “athcool”, que apresento mais adiante.

longhaul: Este módulo dá suporte aos processadores Via C3, baseados no core Nehemiah. Ele é encontrado em placas mãe mini-ITX e em alguns notebooks.

Para ativar o powernowd, você começa carregando o módulo “acpi” (caso já não esteja carregado), seguido do módulo “freq_table” (que obtém a lista das freqüências suportadas pelo processador) e um dos 4 módulos que descrevi acima. A partir daí a base está pronta e o powernowd pode ser finalmente ativado. Se você usasse um Athlon 64, por exemplo, os comandos seriam:

# modprobe acpi
# modprobe freq_table
# modprobe powernow-k8
# /etc/init.d/powernowd restart

Para um Core 2 Duo, os comandos seriam os mesmos, mudando apenas o módulo referente ao processador. Ao invés do “powernow-k8”, seria usado o “speedstep-centrino”:

# modprobe acpi
# modprobe freq_table
# modprobe speedstep-centrino
# /etc/init.d/powernowd restart

Ao instalar o pacote do powernowd, ele ficará configurado para ser carregado durante o boot, mas ainda falta fazer com que o sistema carregue os módulos necessários. Para isso, adicione a lista dos módulos no final do arquivo “/etc/modules” (sem o “modprobe”), como em:

acpi
freq_table
powernow-k8

Você pode acompanhar a freqüência de operação do processador através do comando “cpufreq-info“. Caso ele não esteja disponível, procure pelo pacote “cpufrequtils” no gerenciador de pacotes.

$ cpufreq-info

cpufrequtils 002: cpufreq-info (C) Dominik Brodowski 2004-2006
Report errors and bugs to linux@brodo.de, please.
analyzing CPU 0:

driver: powernow-k8
CPUs which need to switch frequency at the same time: 0
hardware limits: 1000 MHz – 2.00 GHz
available frequency steps: 2.00 GHz, 1.80 GHz, 1000 MHz
available cpufreq governors: powersave, performance, userspace
current policy: frequency should be within 1000 MHz and 2.00 GHz.
The governor “userspace” may decide which speed to use
within this range.
current CPU frequency is 1000 MHz (asserted by call to hardware).

Neste exemplo, estou usando um Athlon 64 3000+, que opera nativamente a 2.0 GHz. Apesar disso, o processador suporta também 1.8 e 1.0 GHz (com variações na tensão usada). O chaveamento entre as três freqüências é feito de forma muito rápida, de acordo com a carga de processamento exigida. Na maior parte do tempo, o processador trabalha a apenas 1.0 GHz, consumindo menos de 10 watts.

O fato da freqüência de operação do processador nunca cair abaixo de 1.0 GHz e do chaveamento entre as freqüências ser muito rápido faz com que seja realmente difícil perceber qualquer diferença de desempenho com o gerenciamento ativado ou desativado.

Ao usar um notebook, você pode ativar também os perfis de performance do cpufreq. Eles permitem que você escolha o perfil de gerenciamento a utilizar, alternando entre eles conforme desejado. Para isso, carregue também os três módulos abaixo, usando o modprobe:

cpufreq_ondemand
cpufreq_performance
cpufreq_powersave

Adicione-os também no final do arquivo “/etc/modules”, de forma que sejam carregados durante o boot.

Originalmente, você alternaria entre eles usando o comando “cpufreq-set -g”, o que, convenhamos, não é uma opção muito prática.

Mas se você usa o KDE, pode configurar o Klaptop, de forma a alternar entre eles clicando no ícone da bateria. Para isso, clique com o botão direito sobre o ícone da bateria ao lado do relógio e acesse a opção “Configurar Klaptop”:

Dentro da janela, acesse a aba “Configurar ACPI” (a última) e clique no botão “Definir Aplicação Auxiliar”. Forneça a senha de root e, de volta à janela principal, marque todas as opções e clique no “Aplicar”:

Para alternar entre os perfis de performance, clique com o botão direito sobre o ícone da bateria e clique na opção desejada dentro do menu “Perfil de Performance”. No modo “powersave” o processador prioriza a autonomia da bateria, mantendo o processador na freqüência mínima e demorando mais tempo para subir a freqüência de operação, enquanto o modo “performance” é o oposto:

Uma observação é que em alguns casos o cpufreq pode ajustar incorretamente a freqüência máxima de operação do processador, fazendo com que ele opere um degrau abaixo da freqüência máxima. Em um HP NX6310, com um Core Duo T2300E (1.66 GHz) que testei, ele mantinha a freqüência do processador sempre a no máximo 1.33 GHz, ao invés de 1.66 GHz. Para corrigir o problema manualmente, usei o comando:

# cpufreq-set –max 1670000

O número indica a freqüência máxima do processador (em khz, por isso o monte de zeros), corrigindo o problema.

Finalmente, chegamos ao caso do Celeron M, que é a exceção à regra. Embora compartilhe do mesmo projeto do Pentium M, ele tem o circuito de gerenciamento desativado, de forma a não concorrer diretamente com os processadores mais caros. Trata-se de uma castração intencional, que não pode ser revertida via software.

Você até pode reduzir a freqüência de operação do processador usando o cpufreq-set (como em “cpufreq-set -f 175000”, que força o processador a trabalhar a 175 MHz). O comando é executado sem erros e usando o comando “cpufreq-info” ele realmente informa que o processador está trabalhando a 175 MHz. No entanto, esta informação é irreal. Na verdade o que acontece é que o processador continua funcionando na freqüência máxima, porém inclui ciclos de espera entre os ciclos usados para processar instruções. Ou seja, o que o comando faz no Celeron M é simplesmente limitar artificialmente o desempenho do processador, sem reduzir de forma substancial o consumo. Ao forçar uma freqüência baixa, o notebook vai ficar extremamente lento, mas vai continuar esquentando quase da mesma maneira e a carga da bateria durando praticamente o mesmo tempo.

No caso dos notebooks baseados no Celeron M, as únicas formas de realmente economizar energia de forma considerável são reduzir o brilho da tela e desativar o transmissor da placa wireless. A idéia da Intel é justamente que você leve para casa um Pentium-M ou Core Duo, que são seus processadores mais caros.

Uma última dica é com relação aos Athlons e Durons antigos, que não são compatíveis com o powernowd. No caso deles, você pode usar o athcool, que utiliza instruções HLT e outros recursos disponíveis para reduzir o consumo e aquecimento do processador. Usá-lo é bastante simples, basta instalar o pacote e rodar o comando:

# athcool on

Para desativar, use:

# athcool off

Na hora de instalar, procure pelo pacote “athcool”, que é encontrado em todas as principais distribuições. Se ele não estiver disponível, você pode também recorrer à opção de baixar o pacote com o código fonte, disponível no:
http://members.jcom.home.ne.jp/jacobi/linux/softwares.html

O athcool funciona perfeitamente em mais de 90% dos casos, mesmo em algumas das piores placas da PC-Chips. Entretanto, em algumas placas, o athcool pode causar irregularidades no som (deixando o áudio cortado) ou ao assistir vídeos. Algumas poucas placas travam quando ele é ativado e, embora muito raro, ele pode causar perda de arquivos se usado em algumas placas com o chipset SiS 640, como a Asus L3340M.

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X