Como calibrar a CPU no Linux

O utilitário Power-calibrate, disponível nos repositórios da maioria das distribuições GNU/Linux, pode ser usado para calibrar o consumo de energia de um dispositivo móvel — como o seu laptop.
Tudo o que o seu equipamento precisa é usar uma fonte de energia de bateria e um processador Intel recente.

Seu processador deve ter também suporte a RAPL (Running Average Power Limit) — sigla para “Limite de Potência Média em Execução”, em uma tradução livre.
Trata-se de um recurso de medição de performance desenvolvido pela Intel, para uso em seus processadores.

O power-calibrate vai tentar calcular o consumo energético relativo a 1% do uso do processador.
Se o perf (recursos de análise de performance do Linux) estiver disponível, o utilitário irá tentar estimar o consumo de 1 ciclo e 1 instrução da CPU.

Como funciona o power-calibrate

A ferramenta oferece estimativas de consumo e seus resultados variam entre as execuções.
Não é concebida para substituir outras ferramentas de medição de alta precisão.

O power-calibrate confia na interface da bateria do seu sistema, para levantar estatísticas de consumo de energia — que irão variar de uma máquina para outra.
O software ou o firmware do seu sistema pode ajustar as leituras da bateria a partir de seus próprios medidores e podem, ainda, reajustar seus próprios valores, durante a drenagem da bateria.
Outra característica comum às baterias de Li-Ion é a descarga não-linear — de forma que rodar o programa em um sistema com baixa carga da bateria não é recomendado.

Processadores com hyperthreading ou com performance de processamento não-uniforme poderão distorcer os cálculos de bogo-ops — uma vez que CPUs lógicas diferentes irão variar suas taxas de processamento.

Para obter um resultado médio mais preciso, procure realizar diversos testes.
Quanto mais amostras obtidas, melhor será a qualidade da média final.
Claro, que a calibração levará mais tempo para ser concluída.

Veja, a seguir algumas opções de uso do utilitário.

Possíveis erros ao executar o power-calibrate

A ferramenta precisa ter acesso a áreas restritas do kernel do sistema e, portanto, precisa ser executada com poderes de super usuário.
Use o sudo, para rodar o programa.
Além disto, desconecte o laptop da tomada, para que as medições sejam realizadas.
Caso contrário, o programa irá retornar a seguinte mensagem de erro:

sudo power-calibrate 

Machine is not discharging, cannot measure power usage.

Exemplos de uso do power-calibrate

Como método de execução básico, use a opção -R para ler (read) estatísticas de consumo do RAPL.
Esta opção se limita a medir a utilização por processador, de forma que a leitura não cobre toda máquina.


sudo power-calibrate -R

CPU load  User   Sys  Idle  Run  Ctxt/s  IRQ/s  Ops/s Cycl/s Inst/s Watts
    0% x 1   5.8   1.7  92.1  1.3  2346.6  420.1   0.0    1.3K   1.3M  4.215
    0% x 2   5.4   1.4  93.0  1.2  1978.6  353.9   0.0    3.6K 498.1   4.111
^C    0% x 3   4.4   1.4  94.1  2.4  1645.4  344.4   0.0    7.5K   2.4K  3.715

A leitura pode ser interrompida a qualquer momento com Ctrl + C.

Para determinar a duração de cada teste, use a opção -r.
O exemplo, abaixo, usa o tempo de 10 segundos:


sudo power-calibrate -r 10 -R

Se você não determinar um tempo específico, o programa usará o padrão de 120 segunos (2 minutos) para cada teste.
O menor valor de tempo aceito é 10 segundos.
O valor padrão é o ideal.

Acrescente -p para obter uma visualização da evolução do teste:


sudo power-calibrate -Rp

power-calibrate

A página do manual (man power-calibrate) tem uma relação de opções de uso do programa e alguns exemplos.

Para obter uma medida em Watts, por 1% de CPU, com 60 segundos de atraso para aquecimento a cada rodada de testes, com 5 testes no nível de carga da CPU (0%, 25%, 50%, 75%, 100%) nas unidades 0 e 1 com 200 segundos de tempo de execução por rodada de testes:


sudo power-calibrate -d 60 -s 5 -n 0,1 -r 200 -p

Melhore o rendimento da bateria no laptop Linux, com o TLP

O TLP é uma ferramenta avançada de gestão de energia e seu objetivo é melhorar o rendimento da bateria do seu notebook.
É fácil de instalar e começar a usar — até por que vem com uma configuração padrão, já otimizada para aumentar o rendimento.
Ao mesmo tempo, é altamente personalizável e permite ao usuário criar seus próprios ajustes.
O TLP oferece perfis de configuração separados para quando o laptop estiver conectado à tomada ou usando apenas a bateria. Pode ativar/desativar os dispositivos bluetooth, WiFi e o rádio WWAN, já na inicialização do sistema, de acordo com as suas necessidades.


A possibilidade de desligar recursos de conectividade é ótimo para usuários que usam o equipamento para estudar ou ler material que já se encontram no laptop, em locais que não tem acesso à Internet.

Você tem um Thinkpad? O TLP tem um modo unificado de configuração da carga e de calibragem da bateria para estes notebooks.

Para concluir a apresentação, trata-se de uma ferramenta CLI (de linha de comando) que executa suas tarefas em segundo plano e, até o momento não tem uma interface GUI (gráfica).

O TLP permite escalar os ajustes das CPUs, tanto nas mais antigas como nas mais atuais — com o uso do intel p_state.

Como instalar o TLP

A ferramenta está presente nos repositórios das principais distribuições — eu testei no Debian 9, Fedora 25 e OpenSUSE Tumbleweed.
No Debian e nas distribuições derivadas, use o apt:

sudo apt install tlp

No Fedora e nas distribuições derivadas, use o dnf:
dnf search install tlp

dnf install tlp

No openSUSE, use o zypper:
opensuse zypper search install tlp

zypper install tlp

Isto é o suficiente. Após a instalação, o TLP já começa a fazer seu trabalho.
É importante dizer que vai conflitar com outras ferramentas de gestão de energia que já estejam instaladas no seu sistema — como o cpufrequtils, por exemplo. Portanto, remova-as antes de instalar o TLP.

Configuração e uso do TLP

As configurações padrão irão satisfazer a maioria dos usuários de laptops com Linux.
Captura de tela tlp tools
Você pode invocar as ferramentas (com privilégios administrativos) que fazem parte do pacote TLP:

  • tlp-pcilist — exibe informações relativas aos dispositivos PCI do sistema
  • tlp-stat — exibe o estado (status) do TLP — a configuração, ajustes de gestão de energia do sistema e informações adicionais
  • tlp-usblist — exibe dados dos dispositivos USB

Todas as configurações estão em um único arquivo, situado em /etc/default.
O arquivo é bem organizado e autoexplicativo (em inglês).
Se for alterá-lo, faça backup antes, para pode voltar à configuração padrão sem precisar desinstalar (com o –purge).

Possíveis problemas com o TLP

Lentidão pode ser um dos efeitos colaterais esperados de qualquer sistema de gestão inteligente de energia.
Para melhorar a performance da bateria, o sistema irá sacrificar a do processador. Você não pode ter as duas coisas.
Neste caso, não experimentei nenhuma degradação “acima do aceitável” no desempenho do meu sistema e estou satisfeito com o ganho (por volta de 25% ou quase uma hora) da bateria do meu notebook.
Li relatos de problemas com drives flash SSD e eles podem ser contornados ao comentar as seguintes linhas (veja a figura) no arquivo de configuração /etc/default/tlp:
tlp disk settings
Comente as linhas com um “#”:

# DISK_DEVICES="sda sdb"

# DISK_APM_LEVEL_ON_AC="254 254"
# DISK_APM_LEVEL_ON_BAT="128 128"

Acompanhe o consumo de energia de cada programa no seu sistema com o aplicativo powertop

Cada aplicativo em execução no seu sistema, consome a carga da sua bateria.
Podem ser programas que já são parte do sistema operacional, tais como o Firefox, o LibreOffice etc.
O powertop permite saber qual software está consumindo mais energia no seu sistema.

Além disto, ajuda a fazer ajustes para otimizar o consumo e proporcionar um tempo maior de uso entre uma recarga e outra.

O aplicativo é estável e possui boa parte de sua documentação já traduzida para português, veja:

# para usuários Debian/Ubuntu
apt show powertop

A descrição (resumida) do aplicativo, segue abaixo:

Description: diagnóstico de problemas com gerenciamento e consumo de energia (power)
 PowerTOP é uma ferramenta do Linux para diagnóstico de problemas com
 gerênciamento e consumo de energia. Adicionalmente para ser uma ferramenta
 de diagnóstico, o PowerTOP também tem um modo interativo que você pode usar
 para experimentar com várias configurações de gerênciamento de energia para
 casos onde a distribuição Linux não habilitou estas configurações.
 .
 PowerTOP relata quais componentes no sistema estão mais sujeitos a consumir
 mais energia do que o necessário, variando entre os aplicativos de software
 para componentes ativos no sistema. Telas detalhadas estão disponíveis para
 o 'CPU C' e 'P states', atividade de dispositivos e atividade de software.

No OpenSUSE, resultado semelhante será obtido com o seguinte comando:

zypper show powertop

Como instalar o powertop no Linux

Se você usa o Debian, Ubuntu ou outra distro baseada nestas, use o apt, para instalar o powertop:

sudo apt update
sudo apt install powertop

Usuários do openSUSE, podem usar o zypper:

sudo zypper update
sudo zypper install powertop

É sugerido (opcional) instalar, ainda, o pacote cpufreq, para obter melhores estatísticas e mais capacidade de manuseio do sistema.

Como ajustar o powertop

Após a instalação, recomenda-se reiniciar o computador.
Depois, calibrar as leituras obtidas a partir da bateria, com o seguinte comando:

sudo powertop -c

O procedimento de calibragem leva, aproximadamente, 15 minutos.
O sistema irá desligar a tela algumas vezes e você ficará impedido de fazer qualquer atividade no seu laptop durante todo o processo .
Isto é normal. Pegue um café e espere.
Quando o processo tiver terminado, um relatório em HTML pode ser obtido com o seguinte comando:

sudo powertop --html=desempenho.html

Acima, usei o nome ‘desempenho.html’, mas use o que quiser.
Para abrir o arquivo dentro do seu navegador preferido, basta citar o nome dele:

firefox desempenho.html

powertop linux
As estatísticas do upower podem ser encontradas em ‘/var/lib/upower/’:

sudo ls -lah /var/lib/upower/history-*
-rw-r--r-- 1 root root 29K dez 14 18:09 /var/lib/upower/history-charge-DELL_7P3X953I-43-0948.dat
-rw-r--r-- 1 root root 14K dez 14 18:09 /var/lib/upower/history-rate-DELL_7P3X953I-43-0948.dat
-rw-r--r-- 1 root root 18K dez 14 18:09 /var/lib/upower/history-time-empty-DELL_7P3X953I-43-0948.dat
-rw-r--r-- 1 root root 19K dez 14 18:09 /var/lib/upower/history-time-full-DELL_7P3X953I-43-0948.dat

Se você quiser dar um reset nas estatísticas, remova estes arquivos:

sudo rm /var/lib/upower/*

Alguns fabricantes (System76) recomendam – caso o indicador do ciclo de carga da bateria esteja impreciso – remover as estatísticas (com o comando acima).
Depois deste procedimento, após alguns ciclos completos de cargas/descargas as informações voltarão a ser mais exatas.

Como testar se seu hardware tem suporte a hibernação, suspensão ou suspensão-híbrida

A hibernação é um recurso que pode causar perda de dados em sistemas de hardware que não estejam preparados para ele ou que não sigam padrões abertos.
Felizmente, o Ubuntu e o Debian dispõem de ferramentas para testar a compatibilidade do seu hardware com os utilitários que aplicam estes recursos.
Não esqueça de conferir, ao final do texto, alguns links para artigos sobre hibernação, suspensão e suspensão-híbrida — há coisas interessantes, lá! 😉
ubuntu desligar hibernar
Um dos utilitários que fazem o teste é o pm-is-supported e faz parte do pacote de ferramentas pm-utils.
Por exemplo, para testar se seu sistema tem suporte a hibernação, use o comando assim:

pm-is-supported --hibernate

Não se preocupe se não vir resultado algum.
O fato é que o utilitário foi feito para ser usado dentro de scripts.
Para montar um script bem simples de testes, abra um terminal e crie um arquivo com o nome hibteste.sh (claro que você pode usar outro nome… ).
A seguir cole o seguinte texto dentro dele:

#!/bin/bash

if pm-is-supported --hibernate;
        then
        echo 'sim';
        else
        echo 'não';
fi

Em seguida, torne o arquivo executável e rode-o:

chmod +x hibteste.sh
./hibteste.sh

Agora, sim. Você não vai ficar sem resposta.
script pm-is-supported
O utilitário pm-is-supported pode ser usado com outros parâmetros:

  1. --suspend — para verificar se há suporte a suspensão do sistema.
  2. --suspend-hybrid — para verificar se há suporte a suspensão-híbrida do sistema.

Ele vai retornar 0 (para recurso disponível) ou 1 (para recurso não disponível).
Este artigo é um spin-off do Como habilitar a opção de hibernação no Ubuntu, onde o teste é necessário.

Referências

  1. Quais as diferenças entre Suspender, Hibernar e Suspender-híbrido? — https://elias.praciano.com/2014/09/suspender-ou-hibernar/.
  2. Como configurar o laptop para hibernar ou suspender, quando fechar a tampa? — https://elias.praciano.com/2015/11/como-configurar-o-notebook-para-suspender-ou-hibernar-quando-fechar-a-tampa-no-debian-e-ubuntu/.
  3. Como ativar a opção Hibernar no menu do Ubuntu? — https://elias.praciano.com/2016/04/como-habilitar-a-opcao-de-hibernacao-no-ubuntu/.
  4. Como ativar a opção suspend-sedation? — https://elias.praciano.com/2015/11/como-configurar-o-sistema-para-o-estado-suspend-sedation/.

Como habilitar a opção de hibernação no Ubuntu

A opção de hibernação no menu principal do Ubuntu e no menu de desligamento é desativada para evitar incompatibilidades com alguns hardwares específicos.
Se o seu hardware segue padrões de mercado e é amigável com sistemas operacionais abertos, ele provavelmente suporta bem a função de hibernação e, portanto, nada mais justo do que você ter acesso a ela, a partir dos menus.
Ubuntu menu suspend
Se você quiser entender melhor as diferenças entre suspender, hibernar e suspender-híbrido, leia este artigo.
Este texto se baseia em uma máquina Ubuntu 16.04 LTS Xenial Xerus, as instruções foram testadas em uma máquina Ubuntu 14.04 LTS e também no Xubuntu 16.04 LTS — com sucesso.
Se você ainda tiver algum problema, relate-o nos comentários.
Como forma de complementar este post, sugiro a leitura de Como configurar o notebook para suspender ou hibernar quando fechar a tampa no Debian e Ubuntu.
Aqui, vou abordar apenas a ativação da opção “Hibernar” nos menus de desligamento do Ubuntu.
Antes de partir para a solução, sugiro que você verifique se não tem problemas com hibernação no seu hardware.
Isto é muito fácil de se fazer.
Abra um terminal (Ctrl + Alt + T) e digite o comando abaixo, seguido de Enter:

sudo pm-hibernate

Aguarde o processo de hibernação se completar e ligue novamente a máquina.
Se você preferir, o artigo Como checar o suporte a hibernação, suspensão e suspensão híbrida, pode ajudar a verificar sem necessidade de desligar nada.
Se você teve problemas durante o processo, deve buscar formas de resolvê-los, antes de prosseguir.
Problemas na hibernação podem estar sendo causados pelo tamanho inadequado da partição de swap, no seu sistema. Leia mais sobre isto aqui.


Screenshot from 2016-04-28 19-43-11
Se tudo correu bem durante o teste, volte ao terminal para aplicar a solução relativa ao menu.
Como administrador do sistema abra o arquivo “/etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla”.
Se você não conseguir encontrar este arquivo, tente achá-lo em “var/lib/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla”.
Cole o texto que segue, dentro dele:

[Re-enable hibernate by default in upower]
Identity=unix-user:*
Action=org.freedesktop.upower.hibernate
ResultActive=yes

[Re-enable hibernate by default in logind]
Identity=unix-user:*
Action=org.freedesktop.login1.hibernate
ResultActive=yes

Salve e feche o arquivo.
Se achar mais confortável, você pode reiniciar o seu computador — mas encerrar a sessão do Ubuntu e se autenticar de novo já é o suficiente.
Note que a opção Hibernar, agora está lá, no menu.
hibernate-in-menu-ubuntu
Ao pressionar o botão de desligar do laptop, a opção Hibernar também se fará presente.
ubuntu desligar hibernar
Referências:

https://help.ubuntu.com/16.04/ubuntu-help/power-hibernate.html.
http://ubuntuhandbook.org/index.php/2014/04/enable-hibernate-ubuntu-14-04/.