quinta-feira, 24 de novembro de 2011

Aumentando a duração da bateria no seu laptop (Linux)

Essa dica é para quem usa Linux no seu laptop, e seu kernel é o 2.6.38 ou um outro mais recente. Na mudança do kernel 2.6.37 para o 2.6.38, houve uma mudança no módulo que controla o ASPM - Active-State Power Management for PCI Express, uma tecnologia de gerenciamento ativo do consumo de energia pelo sistema operacional. A mudança foi que o kernel passou a verificar se BIOS da placa-mãe dava suporte ao ASPM, e em alguns casos, mesmo a placa-mãe dando suporte, o kernel erroneamente identificava como se não desse.

Isso ocorre porque os fabricantes de hardware em sua maioria, projetam seus sistemas para computadores que vão usar Windows, em arquiteturas fechadas. Há exceções, como a NVIDIA, que desenvolve seus drivers de placa de vídeo para Windows e para Linux ao mesmo tempo, mas geralmente, os drivers para Linux tem que ser feitos por engenharia reversa, num trabalho feito por uma comunidade de desenvolvedores que trabalham nas suas horas de lazer, apenas para contribuir para o Mundo Open Source.

Esse problema em relação ao ASPM tem causado um aumento no consumo de bateria de 10 a 30%, e afeta inclusive o kernel 3.0. Este problema não afeta quem usa Windows no seu laptop porque simplesmente não tem as linhas de código nesse sistema operacional, que simplesmente ignora se tem suporte ou não ao ASPM.

Nesta dica, vou mostrar como forçar a ativação do ASPM durante o boot do sistema operacional.

Para você saber como seu sistema operacional está agindo em relação  à tecnologia ASPM, abra um terminal e digite:

cat /sys/module/pcie_aspm/parameters/policy

O resultado desse comando será algo assim:

[default] performance powersave

Isto significa que o perfil default do ASPM (Active State Power Management) está ativo. O default a gente não quer, porque é ele que come bateria do seu laptop mais que devia. 

Para alterá-lo, você vai alterar o bootloader GRUB, para que ao carregar o kernel, seja forçado o uso do perfil de ASPM mais eficiente. Entretanto, em algumas configurações de máquina (placa-mãe, BIOS) pode ser que o uso do ASPM cause travamentos. Assim, antes de fazer uma mudança definitiva no seu kernel, digite alguns comandos para testar o ASPM:



sudo -i
echo powersave > /sys/module/pcie_aspm/parameters/policy
exit
 
 comando sudo -i funciona no Ubuntu e seus derivados, como Linux Mint, e
apenas muda o usuário no terminal para o superusuário.

No Fedora e no OpenSUSE, o comando su - funciona do mesmo jeito.

Se você ativou o ASPM e deu tudo certo, pode alterar o GRUB agora.

Usando o Gedit (para quem usa o Desktop Gnome):
gksudo gedit /etc/default/grub
 
Usuários de KDE podem usar o comando "gksudo kwrite /etc/default/grub" e qualquer
que seja o seu Desktop, você pode usar o editor Nano, digitando:
 
nano -w /etc/default/grub
 
Vá até a linha onde está escrito:
 
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
 
E adicione umas palavras, para ficar assim:
 
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash pcie_aspm=force"
 
Salve o arquivo (no nano digite Ctrl-O, confirme com enter e saia com Ctrl-X).
Digite um comando para atualizar o GRUB:
 
update-grub
Feito isso, o arquivo grub.cfg será atualizado e o terminal vai te informar isso. 

Digite exit para sair do terminal e reinicie seu laptop. Pronto! As alterações que você fez no

 carregamento do kernel foram passadas para as configurações do GRUB.

 Agora seu laptop vai ganhar alguns % de duração da bateria.

Nenhum comentário:

Postar um comentário