Turbostat recalibrado: correção restaura leitura de energia em CPUs AMD

Energia sob controle: correção no kernel linux restaura monitoramento em CPUs AMD!

Escrito por
Emanuel Negromonte
Emanuel Negromonte é Jornalista, Mestre em Tecnologia da Informação e atualmente cursa a segunda graduação em Engenharia de Software. Com 14 anos de experiência escrevendo sobre...
  • Diagnóstico preciso: A atualização é essencial para administradores de sistemas que dependem de métricas exatas de consumo e eficiência em servidores EPYC e desktops Ryzen.
  • Fim do apagão: A ferramenta turbostat volta a ler corretamente os sensores de energia (RAPL) em processadores AMD após uma correção urgente integrada por Linus Torvalds.
  • Endereço errado: O bug fazia o software buscar dados usando o índice lógico do sistema operacional em vez do ID físico do núcleo, resultando em leituras falhas.
  • Limpeza perigosa: A regressão foi causada por uma tentativa anterior de "limpar o código", provando que simplificações de software nem sempre funcionam bem com a complexidade do hardware real.
  • Ferramenta nativa: O patch afeta diretamente o código fonte do turbostat dentro da árvore do kernel, garantindo sincronia com as definições de arquitetura x86 mais recentes.

Linus Torvalds acabou de integrar uma correção urgente para o turbostat, a ferramenta oficial do kernel Linux para monitoramento de frequência, temperatura e consumo de energia do processador. O patch, enviado por Len Brown, resolve uma regressão recente que quebrou a leitura dos sensores de energia (RAPL) especificamente em processadores AMD.

O problema foi causado por uma “limpeza de código” anterior que, inadvertidamente, alterou a lógica de como o software identifica os núcleos do processador, resultando em dados incorretos ou ausentes para usuários da plataforma AMD.

Para o iniciante: o carteiro entregou no endereço errado?

Para entender esse bug, imagine que o processador é um prédio de apartamentos (o “Pacote”).

  • O Kernel (S.O.): Tem uma lista sequencial de moradores na sua prancheta: morador 1, morador 2, morador 3… (Isso é o cpu index).
  • O Hardware (AMD): Tem os números reais nas portas dos apartamentos: apto 101, apto 102, apto 205… (Isso é o core_id).

O turbostat precisa ler o relógio de luz (RAPL) de cada apartamento. O bug fazia o turbostat olhar para a prancheta do Kernel (índice 3) e tentar achar uma porta com o número “3”. Mas no prédio da AMD, não existe porta 3, existe a porta 102.

Como resultado, o inspetor (turbostat) tentava ler um relógio que não existia ou lia o relógio errado. A correção ensina o inspetor a olhar novamente para o número real na porta (core_id) em vez da ordem na prancheta.

Detalhes técnicos da correção

A falha residia na função get_rapl_domain_id dentro do código fonte do turbostat (tools/power/x86/turbostat/turbostat.c).

Em arquiteturas que suportam RAPL (Running Average Power Limit) por núcleo, é necessário gerar um ID único global para cada núcleo para rastrear seu consumo. O código incorreto fazia o seguinte:

C
// Antes (Bug)
return GLOBAL_CORE_ID(cpu, cpus[cpu].package_id);

Aqui, cpu é apenas o índice lógico do Linux. A correção substitui isso pelo ID físico do núcleo, que é o que o hardware espera para mapear a topologia corretamente:

C
// Depois (Correção)
return GLOBAL_CORE_ID(cpus[cpu].core_id, cpus[cpu].package_id);

Além disso, o patch removeu um cálculo redundante de topo.num_cores, que estava sendo calculado de forma simplista (max_core_id + 1) e poderia gerar valores errados em topologias complexas com “buracos” na numeração dos núcleos.

Curiosidades e bastidores da discussão

A análise deste commit revela um cenário clássico de desenvolvimento de software:

  • A “maldição” da limpeza: O commit de Len Brown menciona explicitamente que o erro foi causado por uma “errant code cleanup” (limpeza de código errada). Muitas vezes, desenvolvedores tentam simplificar o código para torná-lo mais bonito, mas acabam removendo nuances vitais que faziam o sistema funcionar em hardwares específicos.
  • Ferramentas no Kernel: É interessante notar que, embora estejamos falando do repositório do kernel Linux, o turbostat é uma ferramenta de espaço de usuário (userspace) que vive dentro da árvore do kernel (pasta tools/). Isso garante que a ferramenta de diagnóstico esteja sempre sincronizada com as definições mais recentes da arquitetura x86.

Status de lançamento

O patch 7ad54bb foi mesclado por Linus Torvalds em 18 de fevereiro de 2026.

  • Status atual: Integrado ao branch master.
  • Impacto: Usuários de processadores AMD (Ryzen/EPYC) que utilizam o turbostat para monitorar eficiência energética devem atualizar a ferramenta assim que a nova versão estiver disponível nas distribuições, ou compilar manualmente a partir da árvore do kernel.
Compartilhe este artigo
Emanuel Negromonte é Jornalista, Mestre em Tecnologia da Informação e atualmente cursa a segunda graduação em Engenharia de Software. Com 14 anos de experiência escrevendo sobre GNU/Linux, Software Livre e Código Aberto, dedica-se a descomplicar o universo tecnológico para entusiastas e profissionais. Seu foco é em notícias, tutoriais e análises aprofundadas, promovendo o conhecimento e a liberdade digital no Brasil.