Como evitar que a GPU superaqueça e desligue automaticamente

2

Eu queria saber como o Linux poderia lidar com um Gamer Computer, então eu construí um, mas como a GeForce não gosta tanto do Linux quanto da AMD, é por isso que eu escolho o último.

Eu construí um computador com CPU AMD Ryzen 7 1800X e GPU Radeon RX 560D, já que o Vega é muito caro para mim, e o benchmarking disse que o 560 é a melhor relação custo-benefício atualmente.

Depois de algumas pesquisas, descobri que o sufixo D significa que tem um pouco menos de velocidade de clock para economizar algum consumo de energia em comparação com o RX560 sem D.

Depois de incontáveis travamentos durante jogos aleatórios, eu finalmente descobri que o problema é o superaquecimento da GPU, a velocidade do ventilador tende a seguir a velocidade do ventilador da CPU, mas é claro que a CPU é muito menos exigida que a GPU em alguns jogos. >

Eu resolvi parcialmente o problema personalizando a velocidade do ventilador com base na temperatura da GPU em vez da CPU, ela está crescendo gradualmente e atinge a velocidade máxima em 50 graus Celsius, mas o problema é: em alguns jogos ela é mantida na velocidade máxima o tempo todo e, eventualmente, ainda trava.

Descrevendo o travamento: a tela pisca e fica preta, o ventilador do GPU pára, o led do teclado pisca e desliga, o mouse continua, outro ventilador da CPU mantém, às vezes o sistema fica congelado para sempre, às vezes reinicialização automática do sistema. / p>

Como uma reinicialização é necessária Eu não encontrei nenhuma dica nos logs do sistema, inicialmente eu achei que era um kernel panic, mas mesmo usando kdump e duplicando o kernel o sistema ainda trava do jeito que eu pude não recuperá-lo.

Eu não sei se o Windows teria o mesmo problema, mas eu acredito strongmente que não, eu nunca vi alguém com o mesmo problema no Windows, então minha pergunta é: existe alguma maneira de dizer ao kernel para fazer GPU Acalme-se quando está prestes a superaquecer, talvez apenas reduzindo automaticamente a velocidade do clock da GPU?

    
por Tiago Pimenta 16.05.2018 / 18:44

1 resposta

2

Encontrei a solução, existem alguns arquivos em /sys/class/drm/card0/device , o arquivo pp_dpm_mclk indica o clock da memória da GPU, e o arquivo pp_dpm_sclk indica o clock do núcleo da GPU, meu:

$ egrep -H . /sys/class/drm/card0/device/pp_dpm_*
/sys/class/drm/card0/device/pp_dpm_mclk:0: 300Mhz 
/sys/class/drm/card0/device/pp_dpm_mclk:1: 1500Mhz *
/sys/class/drm/card0/device/pp_dpm_pcie:0: 2.5GB, x8 *
/sys/class/drm/card0/device/pp_dpm_pcie:1: 8.0GB, x16 
/sys/class/drm/card0/device/pp_dpm_sclk:0: 214Mhz *
/sys/class/drm/card0/device/pp_dpm_sclk:1: 481Mhz 
/sys/class/drm/card0/device/pp_dpm_sclk:2: 760Mhz 
/sys/class/drm/card0/device/pp_dpm_sclk:3: 1000Mhz 
/sys/class/drm/card0/device/pp_dpm_sclk:4: 1050Mhz 
/sys/class/drm/card0/device/pp_dpm_sclk:5: 1100Mhz 
/sys/class/drm/card0/device/pp_dpm_sclk:6: 1150Mhz 
/sys/class/drm/card0/device/pp_dpm_sclk:7: 1196Mhz 

E o arquivo power_dpm_force_performance_level indica o perfil, que pode ser low , auto ou manual , o padrão é auto , quando low é executado sempre no menor relógio, o que não é exatamente o que eu quero, então eu configurei para manual e fiz um script que continua mudando o relógio de acordo com a temperatura da GPU, voilà, deu certo!

Para alterar o relógio no perfil manual , basta escrever um número no arquivo pp_dpm_sclk que representa a linha, começando com 0 , no meu caso até 7 .

Se você está interessado no meu script aqui está .

    
por 17.05.2018 / 02:29