Eu costumo andar com meu laptop pra lá e pra cá o dia inteiro e nem sempre tenho a chance ligar ele em uma fonte de energia. A bateria dura mais ou menos 2 horas durante atividades normais, mas eu sempre estou tentando achar maneiras de diminuir o consumo e ganhar mais alguns minutinhos de bônus. Algumas coisas que se pode tentar é reduzir o brilho do monitor, desligar as conexões wireless e não “estressar” o disco.
Recentemente eu descobri que os processadores atuais já tem um suporte bem consolidado a mudar a frequência em que rodam enquanto rodam e o Linux consegue fazer ótimo uso desta capacidade. Eu tentei portanto dar uma futricada nisso para ver se arrancava um tempinho extra da bateria e vou relator os meus esforços aqui.
Pra quem não sabe, a frequência em que o processador roda é diretamente proporcional à velocidade dele, ao gasto de energia e à dissipação de calor. Logo o que estaremos fazendo aqui é trocando eficiência por bateria. Esta perda de eficiência não é de todo ruim, o meu Intel i3 roda com uns 40% da frequência máxima e não é possível notar a diferença. Isto porque na maioria do tempo o computador esta lidando com arquivos, com a rede ou desenhando coisas na tela e deixando o processador “de braços cruzados”. Obviamente vamos ver a diferença em atividades que exigem mais esforço do processador, como por exemplo jogos.
O jeito difícil: cpufreq + linha de comando
No ubuntu, instalando o pacote cpufreq-utils
você tem acesso a uma série de comandos que podem ser usados para manualmente configurar a frequência do processador. Ao todo os programas que vem no pacote são cpufreq-set
, cpufreq-aperf
, cpufreq-selector
, cpufreq-info
. Os mais importantes para a gente aqui são o cpufreq-set
e o cpufreq-info
e servem, respectivamente, para mudar a frequência dos núcleos da CPU e conseguir informações sobre eles.
Rode o cpufreq-info
e dê uma olhada. Para cada um dos núcleos da CPU serão impressos alguns dados importantes: a frequência em que ele está rodando, o tipo de “governor” sendo usado (mais sobre isso daqui a pouco), a frequência mínima e o máxima que pode ser designada, a lista de frequências que podem ser designadas. Para nossos fins vamos usar aquelas duas últimas informações. Este é um script que eu fiz para usar estas informações e configurar a velocidade de todos núcleos do meu processador.
#!/bin/bash
SUDO=gksudo
NPROC=3 #number of cores - 1
TYPE=$1
for x in $( seq 0 $NPROC )
do
$SUDO "cpufreq-set -c $x -d 933MHz -u 2.27GHz"
done
for x in $( seq 0 $NPROC )
do
$SUDO "cpufreq-set -c $x -g $TYPE"
done
Em suma para cada um dos núcleos (um número de 0 até N-1 dado na opção -c
) eu digo qual é a frequência mínima (opção -d
), a máxima (opção -u
). Depois para cada um dos núcleos eu designo um tipo de “governor” da CPU (opção -g
) este tipo vem diretamente do parâmetro que o usuário digita quando chama o script. Obviamente os valores de frequência variam para cada processador e você deve usar os que descobriu no passo anterior. Note que eu uso sudo
porque é preciso ser o administrador de uma máquina para modificar a frequência.
Exemplos de uso
Assumindo que o script se chama cpuconf
:
$ cpuconf powersave #roda todos núcleos na frequência mínima
$ cpuconf performance #roda todos núcleos na frequência máxima
$ cpuconf ondemand #muda a frequência baseado no uso da CPU
Mas o que são os “governors”?
São programas que monitoram o uso da CPU e definem políticas de modificação das frequências de acordo com os dados que coletam. Por padrão os núcleos rodam em ondemand e economizam energia quando não percebem um uso muito intenso. O governor que queremos é o powersave pois ele força sempre a frequência mínima configurada. Note que o performance pode ser útil também em casos que não queremos frescura apenas pura performance, como durante jogos ou quando estamos processando áudio.
É seguro brincar com estes parâmetros?
Aparentemente não existe muito perigo de configurar alguma coisa errado e destruir o computador porque o programa simplesmente ignora comandos que “não fazem sentido” como colocar a frequência da CPU maior do que ela é capaz.
O jeito fácil: CPU Frequency Monitor
Depois de brincar com tudo isto eu descobri este aplicativo simples que podemos deixar no painel do Gnome, o CPU Frequency Monitor. Ele dá uma indicação gráfica da frequência sendo usada e suporta a modificação da frequência e governor para cada um dos núcleos usando uma interface gráfica.
Provavelmente existem programas semelhantes a este para KDE e afins.
Conclusão
Ok, mas e os resultados do uso de energia usando frequências menores? Para falar a verdade não é nada muito impressionante, eu diria que talvez eu tenha ganho de 5 a 10 minutos de uso, o que só mostra que o governor padrão já é bastante bom ou que a CPU não é responsável por um grande uso da bateria, pelo menos em laptops.
Neste artigo existe uma comparação dos diferentes governors e seus respectivos usos de energia. De qualquer forma eu aprendi um bocado e espero que quem leu esta parede de texto até o final também tenha aprendido.
One Response to Frequência e Economia de Bateria