Usando um Lenovo Legion Y520 com i7-7700HQ (relógio base 2.8Ghz) e GTX 1050.
Estou recebendo avisos de superaquecimento da CPU no linux e isso está afetando meu desempenho nos jogos (encontrado no Payday 2 e CS:GO). Nunca tive problemas no Windows.
Isto é o que eu encontrei ao tentar solucionar esse problema:
No Windows 10 (usando aida64)
O Windows fica em torno de 3,4 Ghz no modo inativo (porque minhas configurações de energia estão definidas para 'alto desempenho' em vez do padrão 'balanceado'), com uma temperatura em torno de 50C.
Ao estressar a CPU, a temperatura vai lentamente (em alguns segundos em vez de instantaneamente) de cerca de 50C para cerca de 75C e permanece lá confortavelmente. As velocidades do clock são de cerca de 2,9 GHz ao estressar. A utilização é sempre 100%. Aida64 não relata estrangulamento. A tensão no núcleo da CPU vai de cerca de 1,1 a 0,9 quando sob estresse.
No Arch Linux (usando s-tui)
O Linux fica em torno de 2.0Ghz em modo inativo, com uma temperatura em torno de 50C.
Aqui é onde fica estranho: ao estressar a CPU, a temperatura IMEDIATAMENTE passa de 50C para cerca de 93C. As velocidades do clock são exatamente 3.4Ghz ao estressar. A utilização é sempre 100%. Ao desligar o teste de estresse, a temperatura volta IMEDIATAMENTE para cerca de 50C, como se nada tivesse acontecido. O laptop certamente não parece aquecer até 90C + ao fazer isso, mesmo após um longo estresse.
Aqui está uma imagem que mostra como a temperatura, a potência e a frequência diminuem exatamente ao mesmo tempo. Observe o quanto a temperatura da CPU muda em tão pouco tempo.
Como faço para corrigir esse problema de limitação? Faço undervolt do meu processador no linux? Como é que ele lê temperaturas erradas no Linux, mas não no Windows?
Mudei o perfil usando cpupower de powersave para performance. Ainda vejo o mesmo estrangulamento em s-tui. Há um salto na frequência de CPU ociosa ao configurar para desempenho (em vez de cerca de 2000-2500Mhz para sempre em 3400Mhz), mas essa é a única coisa que mudou.
Controle do ventilador
Tentei controlar as ventoinhas usando fancontrol (lm_sensors) , mas o pwmconfig diz que não há módulos de sensores compatíveis com pwm instalados.
Eu tentei com NBFC , mas parece que não está fazendo nada, não importa o perfil que eu escolha. Eu nem sei se a NBFC consegue controlar meus fãs, mas ela não reporta nenhum erro na hora de escolher um perfil.
Eu também tentei thinkfan , mas não parece ajudar com a limitação. Também acha que a velocidade do meu ventilador está em 8 RPM, veja este tópico
Solução
Descobri que reduzir a frequência máxima de CPU permitida usando cpupower para algo como 3100MHz em vez do padrão 3800 corrige todos os problemas.
sudo cpupower frequency-set -u 3100MHz
Eu também mudei max_freq /etc/default/cpupower
para o mesmo valor, para torná-lo permanente. Descobri que isso resulta em uma leve queda de fps nos jogos, mas nada sério. Pelo menos meu fps está estável :)
Infelizmente, acho que isso pode resultar em diminuição do desempenho em tarefas que não são de jogos, como ao compilar algo.
Após 1,5 anos
Acabei de testar a estabilidade do Windows novamente (com AIDA64) e descobri que agora também os aceleradores térmicos. Como você pode ver na imagem abaixo, as temperaturas saltam rapidamente para os altos 90 e o AIDA64 relata o afogamento. A velocidade do clock fica ociosa em 3,4 GHz e alguns segundos após o início do teste cai para cerca de 800 MHz, antes de saltar para 3,4 GHz novamente um segundo depois. Ele não decide diminuir a velocidade do clock durante o teste de estresse para algo como 2,9 GHZ (como antes).
Como é que de repente parou de diminuir a frequência máxima no Windows?
A diferença é devido ao Windows e linux usando diferentes perfis de limitação de CPU.
Você tem algum controle sobre isso no linux. Por exemplo, o comando a seguir mostrará qual perfil está sendo usado no momento:
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
Existem maneiras de escolher quais perfis usar. O wiki do Arch Linux tem boas informações sobre isso, pode valer a pena ler:
Escala de Frequência da CPU - Arch Wiki
Há um problema adicional de controle do ventilador - você precisa ter certeza de ter os drivers adequados para controlar seus ventiladores e que eles estão configurados para uma velocidade alta o suficiente durante os jogos.
Linux em Laptops pode ser um recurso útil.
Acredito que o motivo da diferença seja porque sua instalação do Windows possui o driver Intel Dynamic Platform e Thermal Framework que ajusta as frequências para gerenciar a temperatura. Sua instalação do Linux não tem isso, então sua CPU funcionará apenas na frequência máxima, independentemente da temperatura, então ele saltará para o máximo de 100C até que o firmware da CPU minimize todas as frequências até que a temperatura caia, então ele retornará à frequência máxima e isso repete.
Infelizmente, o driver Intel DPTF não está disponível para linux AFAIK, portanto, a menos que você possa configurar algum software para fazer o equivalente a ele (térmico talvez?), acho que você pode simplesmente limitar a frequência máxima.
Eu não entendo como a temperatura muda tão instantaneamente (ela muda entre 60C e 100C em uma fração de segundo no Y520 do meu amigo que está sem o driver Intel DPTF; Eu nunca vi nenhuma mudança de temperatura da CPU tão rapidamente). Eu pensei que era causado por mau contato térmico entre a CPU e o dissipador de calor, mas talvez o chip seja projetado assim e deveria ser gerenciado pelo driver Intel DPTF para funcionar corretamente.