Para fazer com que sua CPU use menos bateria, você precisa dela para rodar mais devagar. A quantidade total de instruções de CPU necessárias para executar seu programa não depende da velocidade com que ele é executado, portanto, limitar a proporção de tempo de CPU usada por seu programa faria com que ele usasse mais CPU, não menos. Quando sua CPU não está fazendo nada em vez de executar seu programa, ela ainda está usando energia. Na melhor das hipóteses, as pausas durante as quais a CPU não está fazendo nada serão longas o suficiente para entrar em um estado de economia de energia; mas mesmo assim você pagará uma penalidade pelas transições de estado de energia extras.
Limitar a proporção do tempo de CPU usado pelo seu processo pode ter o efeito indireto de fazer com que o kernel mude para uma velocidade de clock da CPU menos rápida. Se isso acontece depende da escolha do governador de freqüência da CPU e dos números exatos envolvidos. Isso acontecerá com o governador padrão (ondemand), mas a taxa é difícil de controlar.
Se você quiser economizar energia, a melhor estratégia é permitir que seu programa use 100% da energia disponível da CPU (para que termine o mais rápido possível), mas mude sua CPU para funcionar o mais lentamente possível (porque o quantidade de energia gasta por instrução aumenta com a velocidade da CPU).
Você pode configurar a freqüência da CPU através de parâmetros em /sys/devices/system/cpu/cpu0/cpufreq
e seus primos, ou com várias interfaces de usuário. Os utilitários cpufreq fornecem duas ferramentas de linha de comando: cpufreq-info
, cpufreq-set
. Existe um conjunto de ferramentas mais avançado chamado cpupower que agora está incluído nos fontes do kernel. Se você usa o Gnome, você pode usar seu applet Cpufreq. Existem outras GUIs.
Para economizar o máximo de bateria possível, execute sua CPU na frequência mínima. Execute cpufreq-info
para exibir as freqüências disponíveis. Execute cpufreq-set -c 0 -g powersave
para sempre executar a CPU 0 em sua frequência mínima (repita com valores crescentes para -c
para as outras CPUs).