Linux: Economizando energia em notebooks Centrino

Linux: Economizando energia em notebooks Centrino

A questão da economia de energia é um fator importante nos notebooks, pois está relacionada ao aquecimento e, principalmente, à autonomia das baterias.

No Windows, você simplesmente instala os drivers e os utilitários fornecidos pelo fabricante e pode ajustar as opções através do painel de controle ou através de algum utilitário específico. No Linux, entretanto, as coisas são um pouco menos claras, já que muitas das configurações são acessíveis apenas via linha de comando e muitas vezes não são ativadas por padrão pelas distribuições.

Este tutorial é uma compilação de dicas para economizar energia em notebooks baseados na plataforma Intel Centrino. Ele combina dicas disponibilizadas pela equipe da Intel no http://www.lesswatts.org/ com truques que fui descobrindo com o passar do tempo. A maioria das dicas se aplica também a notebooks baseados no Pentium-M ou Core Duo (mesmo que não tenham o selo Intel Centrino) e muitas são aplicáveis a notebooks em geral, independentemente do processador usado.

ACPI

A maioria das opções de economia de energia dependem de funções relacionadas ao ACPI para funcionar, por isso, o primeiro passo é justamente certificar-se de que ele está ativo. Para isso, verifique se o serviço “acpi” está ativado e, caso necessário, ative-o usando o comando:

# /etc/init.d/acpid restart

Ao ativar o serviço, ele carrega automaticamente módulos do Kernel relacionados ao gerenciamento de energia (disponíveis na pasta /lib/modules/2.6.*/kernel/drivers/acpi), por isso você não precisa se preocupar em carregá-los manualmente.

Três exceções importantes são os módulos “acer_acpi”, “asus_acpi” e “toshiba_acpi”, que ativam funções úteis em, respectivamente, notebooks da Acer, da Asus e da Toshiba. Eles muitas vezes não são carregados automaticamente, mas você pode carregá-los usando o comando “modprobe”, manualmente. Depois de carregar novos módulos relacionados ao ACPI, é sempre interessante reiniciar o serviço.

Naturalmente, para que o ACPI funcione, você não deve usar opções de boot como o “acpi=off”, que serve justamente para desativá-lo.

Monitorando o consumo

Ao mexer nas opções de gerenciamento, é importante medir o consumo, de forma que você possa ir acompanhando os resultados.

Desde que o ACPI esteja ativo, você pode acompanhar o consumo e a carga da bateria usando o comando:

$ cat /proc/acpi/battery/BAT0/state

Ele mostra algo como:

present: yes
capacity state: ok
charging state: discharging
present rate: 18711 mW
remaining capacity: 31922 mWh
present voltage: 11623 mV

Este comando deve ser executado com o note desligado da tomada, para que o sistema possa medir o consumo da bateria. O campo “present rate” indica o consumo atual (no caso 18.711 watts-hora) e o campo “remaining capacity” mostra a energia restante (31.922 watts-hora, suficientes para pouco mais de uma hora e meia de autonomia, se mantida esta média de consumo).

Naturalmente, a autonomia da bateria varia de acordo com o consumo, por isso, quanto mais conseguirmos reduzir o consumo do notebook, maior será a autonomia das baterias. Neste notebook do exemplo (um Asus M5200), o consumo com o notebook ocioso, com as opções de gerenciamento desativadas oscila entre 18 e 22 watts. Você vai ver que conforme formos ativando as opções, o consumo dele vai cair progressivamente, até ficar abaixo da marca dos 10 watts.

index_html_m722525fb

Outra observação é que em alguns modelos, como na maioria dos HP, o consumo é informado em micro-amperes e não em micro-watts, tornando o cálculo um pouco mais complicado, já que você precisa multiplicar pela tensão da bateria.

Se o comando “cat /proc/acpi/battery/BAT0/status” informa que o notebook está consumindo 2000 mili-amperes e ele utiliza uma bateria de 11.1V, significa que ele está consumindo 22220 mili-watts (2000 x 11.1), ou seja, 22.2 watts. Se ele utiliza uma bateria de 4400 mAh, significa que, mantendo esta média de consumo, a bateria duraria exatamente duas horas.

A saída do comando varia freqüentemente, de acordo com o uso. Você pode deixar o terminal monitorando o consumo continuamente usando o comando:

$ watch cat /proc/acpi/battery/BAT0/state

index_html_m3bf256a7

Clock do processador

A opção mais básica de gerenciamento (e a mais efetiva) é ativar o gerenciamento de energia do processador, fazendo com que o clock e a tensão sejam reduzidas quando ele está ocioso. Na maioria dos notebooks, o processador é justamente o componente que consome mais energia e o gerenciamento permite reduzir seu consumo em 50% ou mais.

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“. Na maioria das distribuições atuais ele já vem ativado por padrão.

No caso dos processadores Intel, é necessário carregar os módulos cpufreq_ondemand, cpufreq_powersave e acpi-cpufreq:

# modprobe cpufreq_ondemand
# modprobe cpufreq_powersave
# modprobe acpi-cpufreq

Depois de carregar os módulos, reinicie o serviço powernowd:

# /etc/init.d/powernowd restart

Ao ativar o gerenciamento, a freqüência do processador passa a oscilar rapidamente, acompanhando a carga do processador. O ajuste é feito em “degraus” (steps, daí o nome). Em um Pentium M de 1.73 GHz, com core Dothan, por exemplo, os “degraus” disponíveis são 1.73 GHz, 1.33 GHz, 1.06 GHz e 800 MHz (a freqüência mínima) e a tensão pode oscilar entre 0.988 e 1.356V.

Você pode acompanhar a freqüência do processador em tempo real usando o comando:

# watch cat /proc/cpuinfo

O cpufreq suporta o uso de perfis, onde você define qual é o comportamento padrão do sistema com relação ao gerenciamento do clock. Usando o perfil “ondemand”, o clock do processador oscila de acordo com o uso e usando o perfil “powersave” ele fica o tempo todo na freqüência mínima, reduzindo ao máximo o consumo.

Para alternar entre os perfis, use o aplicativo de gerenciamento da bateria. No KDE, você utilizaria o Klaptop. Clique com o botão direito sobre o ícone da bateria ao lado do relógio e acesse a opção “Configurar Klaptop”:

index_html_173e8f03

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”:

index_html_2f8a5851

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”:

index_html_481a54bc

É possível também alternar entre os perfis via linha de comando, usando os comandos:

# cpufreq-set -g ondemand
ou
# cpufreq-set -g powersave

Com a ativação do powernowd o consumo já cai bastante, oscilando agora entre 13 e 15 watts:

index_html_1d32d2b3

Essa mesma receita funciona também no caso dos notebooks com processadores AMD que suportam o PowerNow. A única mudança é que passa a ser usado o módulo “powernow-k8“. O Celeron-M não suporta o speedstep, por isso o gerenciamento do clock não funciona em notebooks equipados com ele. A falta do suporte ao speedstep é justamente a principal desvantagem do Celeron-M em relação aos Pentium-M, Core Solo, Core Duo e Core 2 Duo.

Outra observação é que ao usar versões antigas do Kernel, você pode precisar usar o módulo “speedstep-centrino” no lugar do “acpi-cpufreq”.

Tela

Depois de reduzir o clock do processador, o próximo passo é ajustar o brilho da tela, já que depois dele (processador), a tela é justamente o componente que consome mais energia. Em muitos notebooks, a diferença entre usar a tela com o brilho no máximo e no mínimo pode chegar a mais de 10 watts.

Você pode ir ajustando o brilho da tela usando as teclas de atalho e ir acompanhando a redução no consumo em cada nível de brilho, até chegar na melhor relação entre consumo e conforto.

Em casos onde o ajuste do brilho através das teclas de atalho não funciona, pode ser possível ajustar o brilho também através de algum arquivo dentro do diretório /proc. No caso dos notebooks da Asus, por exemplo, o ajuste pode ser feito através do arquivo “/proc/acpi/asus/brn” (é necessário que o módulo asus_acpi esteja carregado), que contém um número de 0 a 15, indicando o nível de brilho. É possível alterar a configuração alterando o arquivo com o valor desejado, como em:

# echo 4 > /proc/acpi/asus/brn
ou
# echo 10 > /proc/acpi/asus/brn

Não é muito prático ficar fazendo esses ajustes via linha de comando, mas você pode criar ícones no desktop com os comandos que usa mais corriqueiramente, de forma a facilitar o acesso a eles.

Reduzindo o brilho da tela, o consumo cai mais um pouco e passa a oscilar entre 11 e 13 watts:

index_html_m53e07316

Outra medida saudável é desativar o protetor de tela e no lugar configurar o monitor para desligar depois de um certo tempo de inatividade. Na maioria das distribuições, você pode ajustar isso através do Kcontrol (Periféricos > Tela) ou outra ferramenta de configuração. É possível também fazer o ajuste via linha de comando:

# xset +dpms
# xset dpms 0 0 120

O primeiro comando ativa o DPMS, necessário para poder desligar a tela via software, enquanto o segundo ajusta o tempo de inatividade, em segundos. o “120” que usei no exemplo faz com que a tela seja desligada depois de dois minutos de inatividade.

Wireless

A placa wireless é também uma consumidora de energia respeitável. Naturalmente, se você não usa o wireless, você pode simplesmente desativar o transmissor usando a tecla de atalho ou o botão correspondente. Mas, na maioria dos casos, o wireless é um recurso essencial, que você não pode se dar ao luxo de desativar.

Nas placas com chipset Intel, está disponível um sistema de gerenciamento de energia para a placa wireless, que, assim como no caso do gerenciamento do clock do processador, é capaz de reduzir o consumo sem prejudicar o funcionamento da placa.

Ele pode ser ativado usando o comando:

# iwpriv eth1 set_power 5

Note que o “eth1” indica o device da placa de rede e pode mudar de acordo com o notebook (use o comando “ifconfig” em caso de dúvidas) e o “5” indica o nível de gerenciamento, que vai do “0” (desativado) ao “5” (nível máximo de economia).

Ativando o gerenciamento para a placa wireless, o consumo cai mais um pouco, se aproximando da casa dos 10 watts:

index_html_54609fbf

Nos notebooks com placa de rede gigabit (com chipset Intel), você pode economizar mais um pouco de energia reduzindo a velocidade da interface para 100 megabits, o que é feito usando o comando:

# ethtool -s eth0 autoneg off speed 100

Para voltar à velocidade original, use:

# ethtool -s eth0 autoneg off speed 1000

HD

Embora não seja um consumidor de energia tão voraz quando o LCD, o HD consome de 3 a 4 watts (dependendo do modelo) quando ativado, o que corresponde a uma boa parcela do consumo do notebook. A idéia é mantê-lo no estado de baixo consumo na maior parte do tempo.

Uma das opções mais efetivas para economizar energia para o HD é usar a opção “noatime” como parâmetro de montagem. Ela evita que o sistema precise atualizar a informação de “último acesso” dos arquivos cada vez que eles são lidos. Com isso, o desempenho é melhor e o HD passa mais tempo nos estágios de economia de energia.

Para isso, edite o arquivo “/etc/fstab”, adicionando o parâmetro “noatime” para todas as partições (com exceção da partição swap), incluindo a partição raiz, como em:

/dev/sda2 / ext3 defaults,noatime 0 1

/dev/sda6 /mnt/sda6 reiserfs notail,noatime 0 2

Para que as alterações entrem em vigor sem precisar reiniciar o micro, você pode usar o comando “mount -o remount,noatime”, seguido do diretório referente à cada partição, como em:

# mount -o remount,noatime /
# mount -o remount,noatime /mnt/sda6

O próximo passo é configurar o hdparm, de forma a ativar o gerenciamento avançado de energia (-B 1) para o drive e fazer com que ele entre em estado de baixo consumo automaticamente (-S) após um certo período de inatividade.

Para fazer com que o drive entre em estágio de baixo consumo depois de dois minutos, use:

hdparm -B 1 -S 24 /dev/sda

Para que entre depois de 30 segundos (configuração bastante agressiva), use:

hdparm -B 1 -S 6 /dev/sda

O valor depois do “-S” indica o tempo em múltiplos de 5 segundos. Para usar outros valores, basta multiplicar o número em minutos por 6. Para 10 minutos, por exemplo, você usaria o valor “60”.
Ao usar qualquer distribuição com um Kernel recente, do 2.6.19 em diante, você pode ativar também o “laptop mode”, que faz com que o Kernel utilize diversas opções de gerenciamento de energia e uso dos barramentos de I/O adequadas a notebooks. Ativar o laptop mode resulta em mais uma pequena redução no consumo, sobretudo quando o notebook está executando tarefas leves. Você pode ativá-lo usando o comando:

# echo 5 > /proc/sys/vm/laptop_mode

Outra otimização é com relação ao buffer de escrita, usado para cachear as operações de escrita dos programas, reduzindo o número de vezes que o HD precisa ser ativado.
Por padrão, o Kernel realiza as gravações a cada 5 segundos, o que reduz a possibilidade de perda de dados em desligamentos incorretos, mas em troca faz com que o HD seja acordado de forma muito freqüente. Como em um notebook temos a bateria, que evita que o equipamento seja desligado ou reinicie por causa de variações na rede elétrica, é seguro usar intervalos maiores, desde que você não tenha o hábito de ficar desligando o notebook no botão.
A configuração vai no arquivo “/proc/sys/vm/dirty_writeback_centisecs”, onde o intervalo é especificado em centésimos de segundo. Para que o valor seja ajustado para dois minutos, por exemplo, use:

# echo 12000 > /proc/sys/vm/dirty_writeback_centisecs

Concluindo

Com mais esse conjunto de melhorias, o consumo do notebook cai abaixo da marca dos 10 watts, subindo apenas ao rodar aplicativos que disparem o aumento do clock do processador ou que ativem o HD: index_html_m7de997d4
Mantendo este perfil de consumo, a bateria (de 44 mili-amperes) dura mais do que 4 horas, o que é impressionante, considerando que com as opções de gerenciamento desativadas ela dura menos que duas horas.
Quando o notebook fica por mais de dois minutos sem uso e a tela é desligada, o consumo chega a cair abaixo dos 8 watts, mesmo com o transmissor da placa wireless ativado: index_html_md71a7f3
Para não precisar ficar executando os comandos novamente a cada boot, basta incluir os comandos desejados em algum arquivo de inicialização do sistema, como o “/etc/rc.local” ou o “/etc/init.d/rc.local“, de forma que lees sejam executados a cada boot. Um exemplo de linhas a incluir seria:

modprobe cpufreq_ondemand
modprobe cpufreq_powersave
modprobe acpi-cpufreq
modprobe asus_acpi
/etc/init.d/acpid restart
/etc/init.d/powernowd restart
cpufreq-set -g ondemand
xset +dpms
xset dpms 0 0 300
hdparm -B 1 -S 24 /dev/sda
echo 5 > /proc/sys/vm/laptop_mode

Você pode também criar “mini-scripts” com diferentes perfis de consumo e executá-los conforme desejado. Uma opção interessante nesse caso seria criar ícones no desktop, executando-os usando o “sudo”, de forma que os comandos sejam executados como root.

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X