- 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:
// 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:
// 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 (pastatools/). 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
turbostatpara 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.
