Previna o superaquecimento do seu sistema com thermald

O thermald é um serviço usado para prevenir o superaquecimento no seu PC. Ele pode rodar em Linux, OSX e, até mesmo, Android. O software monitora a temperatura do sistema e procura compensar a situação através dos métodos de resfriamento disponíveis.
O propósito do aplicativo é agir antes que o próprio hardware comece a corrigir agressivamente a situação.
thermald-feat300x200

Desenvolvido sob patrocínio da Intel e por desenvolvedores pagos pela empresa, a ferramenta só está disponível para quem usa processadores desta marca — da linha Core e Atom — pra ser mais específico, os que usam a tecnologia Sandy Bridge ou posterior.

O thermald daemon monitora os sensores presentes no sistema e modifica os controles para manter o hardware abaixo das temperaturas limite e evitar, com mais eficiência, os picos.
O thermald mantém o sistema frio através…

  • … de dispositivos de resfriamento ativos ou passivos, encontrados no sysfs;
  • … do RAPL (Running Average Power Limit);
    O RAPL é um driver, disponível para processadores Intel, que provê aos softwares da plataforma a possibilidade de monitorar, controlar e obter notificações sobre o consumo de energia.
  • … do driver Intel P-state CPU frequency;
  • … do driver CPU freq;
  • … e do driver Intel PowerClamp.

Opcionalmente, o daemon pode tomar o controle exclusivo do sistema e agir como um governor.

Como instalar o thermald

O aplicativo pode ser instalado diretamente dos repositórios. Se você usa o Fedora Linux, pode instalar com o yum:


yum install thermald

Usuários do Ubuntu e Debian, podem instalar o aplicativo com o apt:


sudo apt install thermald

Se preferir (e souber o que está fazendo), pode baixar, compilar e instalar a versão mais atual do aplicativo — não é complicado e eu recomendo.

Como usar o thermald

Se você usa o Fedora Linux, recomendo a leitura deste artigo, para ver as primeiras dicas pós-instalação, em que este aplicativo é mencionado.
Não esqueça de executar os comandos abaixo com privilégios administrativos.
No Ubuntu e no Debian, você pode verificar se o daemon está rodando com o seguinte comando:


systemctl status thermald

● thermald.service - Thermal Daemon Service
   Loaded: loaded (/lib/systemd/system/thermald.service; enabled; vendor preset:
   Active: active (running) since Wed 2017-08-30 15:05:19 -03; 17min ago
 Main PID: 18007 (thermald)
    Tasks: 2 (limit: 4915)
   CGroup: /system.slice/thermald.service
           └─18007 /usr/sbin/thermald --no-daemon --dbus-enable

ago 30 15:05:19 ultra-5 systemd[1]: Starting Thermal Daemon Service...
ago 30 15:05:19 ultra-5 thermald[18007]: 13 CPUID levels; family:model:stepping 
ago 30 15:05:19 ultra-5 thermald[18007]: Polling mode is enabled: 4
ago 30 15:05:19 ultra-5 thermald[18007]: sysfs write failed /sys/devices/virtual
ago 30 15:05:19 ultra-5 systemd[1]: Started Thermal Daemon Service.
ago 30 15:06:03 ultra-5 thermald[18007]: sysfs write failed /sys/devices/virtual
ago 30 15:06:03 ultra-5 thermald[18007]: sysfs write failed /sys/devices/virtual
lines 1-15/15 (END)

Se não estiver ativo, inicie o serviço assim:


systemctl start thermald

Para interromper, use o comando:


systemctl stop thermald

Como usar o thermald na linha de comando

O aplicativo foi concebido pra rodar como um serviço. Ou seja, é pra ser instalado e esquecido.
Não há necessidade de fazer absolutamente nada depois da instalação — deixe o cara trabalhar.
Contudo, se você ainda quiser aprender um pouco mais sobre ele, seguem alguns comandos de interação, que podem ser executados no console —. Se tiver algum tempo sobrando, experimente baixar e compilar o código fonte, para ter uma versão mais atual do thermald.
Para ver a versão atual do thermald, digite o seguinte comando no seu console:


thermald --version

Se quiser obter ajuda, pode recorrer ao manual do sistema man thermald ou à tradicional ajuda, no terminal:


thermald -h

A maioria das opções do aplicativo exigem privilégios administrativos para serem invocadas:


thermald

You must be root to run thermald!

Se quiser, desligue o daemon e rode o aplicativo “interativamente”:


systemctl thermald stop

thermald --no-daemon --poll-interval=1

Polling enabled: 1
13 CPUID levels; family:model:stepping 0x6:2a:7 (6:42:7)
Polling mode is enabled: 1

Para interromper a execução, tecle ‘Ctrl + C’.

Como criar e alterar o arquivo de configuração do thermald

A localização padrão do arquivo de configuração do thermald é /etc/thermald/thermal-conf.xml. Você não precisa se preocupar, caso não encontre o arquivo em seu sistema — o daemon não precisa dele para fazer o seu trabalho.
Contudo, se você tiver um bom nível de conhecimento técnico sobre o seu hardware, pode fazer alguns ajustes para otimizar o funcionamento do thermald.
A configuração é baseada modelo da ACPI, em que as regiões da plataforma são divididas em zonas térmicas — e estas contém dispositivos físicos, controles de resfriamento e sensores térmicos.
Controles de resfriamento modificam o comportamento das ventoinhas (coolers) e de interfaces de drivers que podem reduzir o clock da CPU, por exemplo.
O processo de resfriamento pode ser

  • ativo — quando o ventilador é acionado para diminuir o calor. A desvantagem deste método é que consome mais energia e pode ser ruidoso;
  • passivo — quando reduz o clock da CPU, fazendo com que ela produza menos calor. Neste caso, você perde em performance. Dependendo do tipo de atividade, esta perda pode sequer ser sentida.

Nota: A relação desempenho x temperatura x economia (de energia) é discutida também neste artigo.
Os dispositivos de resfriamento pode ser ativados toda vez que se alcança certos picos na temperatura.
As zonas térmicas, ou thermal zones, pode ter mais de um ponto de acionamento (trip points).

Teoricamente, o governor térmico da ACPI deveria ter informações corretas do sistema para se basear no controle da temperatura do sistema. Mas isto nem sempre é verdadeiro.
O arquivo de configuração do thermald pode ser usado para corrigir e otimizar o comportamento do sistema.

Abaixo, segue um exemplo do arquivo de configuração:

<?xml version="1.0"?>


        Example Laptop
        *
        QUIET
        
                
                        pkg-temp-0
                        /sys/class/thermal/thermal_zone1/
                        1
                
        
        
                
                        cpu package
                        
                                
                                        pkg-temp-0
                                        80000
                                        passive
                                        PARALLEL
                                        
                                                1
                                                rapl_controller
                                                 50 
                                                 10 
                                        
                                        
                                                2
                                                intel_pstate
                                                 40 
                                                 10 
                                        
                                        
                                                3
                                                intel_powerclamp
                                                 30 
                                                 10 
                                        
                                        
                                                4
                                                cpufreq
                                                 20 
                                                 8 
                                        
                                        
                                                5
                                                Processor
                                                 10 
                                                 5 
                                        
                                
                        
                
        



Se você não sabe o que está fazendo, recomendo não alterar as configurações do thermald. Como já disse antes, ele funciona muito bem sozinho.
Uma vez alteradas as configurações, é necessário parar o serviço e reiniciá-lo:


systemctl restart thermald

Se quiser, é possível observar interativamente o funcionamento do thermald:


sudo service thermald stop
sudo thermald --no-daemon --loglevel=debug

Divirta-se! 😉

Referências

Como controlar a temperatura do seu sistema com o Linux Thermal Daemon

O Thermald é uma resposta ao superaquecimento do sistema causado pela alta performance dos modernos processadores Intel — o que inclui a linha Atom e Core.
A demanda por mais desempenho em sistemas desktop ou portáteis resulta em um problema crescente de dissipação de energia.
Ao mesmo tempo, a necessidade de reduzir a escala dos dispositivos aumenta os desafios para incrementar a performance dos sistemas e gerenciar o problema do calor gerado.
Fire flames isolated on white background
O projeto Linux Thermal Daemon ou thermald tem forte apoio da Intel e o propósito de lidar proativamente com a temperatura do sistema sem impactar significativamente a sua performance — fazendo uso do P-states, T-states e do Intel power clamp driver.
Neste texto, vou mostrar como instalar o Linux Thermal Daemon no Ubuntu e no Fedora, além de ensinar como compilar e instalar o sistema (para quem deseja usar a versão mais nova).
A documentação oficial (veja o link ao final) cita os seguintes pré-requisitos:

  • Hardware com processador Intel da família Atom ou Core.
  • Kernel 3.13 ou superior (já presente no Ubuntu 14.04 LTS, no Fedora 21 ou superior).
  • Drivers Intel power capping, Intel P State e Intel Power Clamp.

Pra resumir, se sua máquina tem um processador Intel, com mais de 4 anos de idade e se você estiver usando uma versão atual do Linux — então você, provavelmente, tem tudo.

Como instalar thermald no Fedora

Se você não se importa de usar a versão padrão e já quiser mergulhar logo no sistema, pode usar o yum para instalar fácil o aplicativo:

yum install thermald

Se preferir, como eu, a versão compilada (dá pra ter as duas!), acompanhe o passo a passo, faça o download do código fonte, neste site.
O passo a passo para instalar no Fedora foi baseado na documentação oficial de instalação e não foi testado no meu sistema. Portanto, não sei se funciona — faça por sua própria conta e risco.


Depois de fazer o download do código fonte, instale os seguinte itens:

yum install automake
yum install gcc
yum install gcc-c++
yum install glib-devel
yum install dbus-glib-devel
yum install libxml2-devel

Entre no diretório em que você fez o download do pacote zip e extraia o código:

unzip thermal_daemon-master.zip

Entre no diretório criado e siga os passos:

cd thermal_daemon-master/
./autogen.sh
./configure prefix=/usr
make
sudo make install

Para iniciar o serviço, use o seguinte comando:

sudo systemctl start thermald.service

Para obter o status do serviço, enquanto ele estiver sendo executado:

sudo systemctl status thermald.service

Para interromper o serviço:

sudo systemctl stop thermald.service

Como instalar o Linux Thermal Daemon no Ubuntu

Tal como no Fedora, o Ubuntu 14.04 LTS tem uma versão estável do thermald em seus repositórios, que pode ser instalado com a ferramenta padrão apt-get.
Veja como:

sudo apt-get install thermald

Alternativamente, você pode baixar o código fonte e compilar o thermald — o procedimento não é difícil e ainda possibilita usar uma versão estável mais nova.

  • Se você tiver dúvidas sobre como compilar e instalar aplicativos no Linux, leia este curto tutorial.


Faça o download do código fonte do thermald, aqui. Ou use o comando wget, da seguinte forma:

wget https://github.com/01org/thermal_daemon/archive/master.zip

A seguir, instale os seguintes pacotes:

sudo apt-get install autoconf automake g++ libglib2.0-dev libdbus-1-dev libdbus-glib-1-dev libxml2-dev

Agora, descompacte o arquivo baixado via wget:

unzip master.zip

… e siga os seguintes passos:

./autogen.sh
./configure prefix=/usr
make
sudo make install

OBS.: a documentação adverte para ignorar algum erro referente ao systemd.



Após a instalação, copie o arquivo de configuração padrão do aplicativo pro init:

sudo cp data/thermald.conf /etc/init/

Para iniciar serviço use o seguinte comando:

sudo start thermald

Para interromper, faça o seguinte:

sudo stop thermald

Finalmente, sinta-se à vontade para comentar sobre como o thermald funcionou pra você.

Referências