Alto consumo na GPU AMD com a tela desligada (série 7000)

O problema

Atualizei o computador do Debian 12 para 13 (trixie) e tudo ocorreu normal e sem problemas. Mas depois que deixei o computador parado um tempo e fui mexer, percebi que estavam as ventoinhas ligadas e vindo um calor do gabinete. Fui investigar.

Comecei a monitorar o uso da GPU via ssh por outro computador. Percebi algumas coisas estranhas:

  1. Fazendo qualquer atividade de baixo impacto fazia a GPU ir de 3w para mais de 60W, meio que “do nada”.2.
  2. Quando a tela apagava (para economia de energia), a GPU também entrava em modo de alto consumo, também acima de 60W.

Ou seja, com o Debian 12 (kernel 6.1) não havia esse problema. Mas com o Debian 13 (kernel 6.12) ele apareceu.

Tentativa: Iniciei o computador com o kernel anterior (6.1), mas o problema persistiu.
Resultado: O problema não estava especificamente no kernel, mas possivelmente no firmware.

Buscando pela net achei um bug oficial Making sure you're not a bot! até aberto pelo nobre colega @KairanD em agosto de 2024 de um problema que aflige as placas da AMD série 7000 (aqui é uma RX 7600 XT). Até hoje não houve solução oficial. Parece que o problema acontece porque a placa abaixa o clock da GPU, mas acaba em algum estado de loop e sobe descontroladamente a potência por alguns segundos (ou mesmo indefinidamente no caso da tela apagada). O jeito de evitar que isso aconteça é impedir que a placa abaixe muito o clock, mantendo no mínimo a 800 MHz. Por consequência a placa vai consumir pelo menos 4 W (quando poderia ficar em só 1 W com clocks mais baixos), mas pelo menos evita de ter esses rompantes de 120 W ou de ficar a 60 W constantes com a tela apagada.

Solução:

Adicionar o parâmetro de inicialização do módulo amdgpu a propriedade ppfeaturemask=0xFFFF7777

Como fazer:

Opção 1 - no GRUB

  1. Edite o arquivo /etc/default/grub com sudo nano /etc/default/grub
  2. Adicione amdgpu.ppfeaturemask=0xFFFF7777 na linha que começa por GRUB_CMDLINE_LINUX=" e dentro das aspas! Se houver # antes da linha, remova-o
    Aqui ficou assim:
    GRUB_CMDLINE_LINUX="amdgpu.ppfeaturemask=0xFFFF7777"
  3. Salve o arquivo com Ctrl+o e saia com Ctrl+x.
  4. Atualize o grub (no debian) com sudo update-grub

Opção 2 - opção de configuração do módulo

  1. Edite o arquivo /etc/modprobe.d/99-amdgpu-overdrive.conf com o comando sudo nano /etc/modprobe.d/99-amdgpu-overdrive.conf
  2. Adicione a linha options amdgpu ppfeaturemask=0xFFFF7777, salve o arquivo com Ctrl+o e saia com Ctrl+x.
  3. Atualize a initramfs (no Debian) com sudo update-initramfs -u

Após fazer uma dessas opções, reinicie o computador e deve estar resolvido.

2 curtidas