É possível definir uma frequência de CPU * constante * mais baixa sob o driver PSTATE moderno?

4

O novo driver pstate da Intel me irrita para sempre, porque eles removeram o bom e antigo powersave governor que me permitiu definir a menor frequência de CPU disponível e executar minhas simulações numéricas por horas ou dias em um modo silencioso laptop frio. Para piorar as coisas, o que eles chamam agora de powersave é essencialmente o antigo controlador ondemand , ou seja, um modo em que a frequência da CPU fica alta com a carga e, com isso, o maldito ruído da ventoinha:

Since these policies are implemented in the driver, they are not same as the cpufreq scaling governors implementation, even if they have the same name in the cpufreq sysfs (scaling_governors). For example the "performance" policy is similar to cpufreq(TM) "performance" governor, but "powersave" is completely different than the cpufreq "powersave" governor. The strategy here is similar to cpufreq "ondemand", where the requested P-State is related to the system load.

(Extraído de link )

Agora, por favor, existe alguma outra maneira de manter minha frequência de CPU no mínimo? É muito importante para mim. Eu prefiro simplesmente jogar o laptop pela janela se eu eventualmente não puder definir uma frequência de CPU constante e mais baixa. É assim que uso meu laptop e é para isso que quero um laptop, e já estou tentando conseguir isso há vários dias!

Estou tentando isso e não funciona:

echo 42 | sudo dd of=/sys/devices/system/cpu/intel_pstate/max_pref_pct

para definir a velocidade máxima em 42%, e não tem nenhum efeito, a CPU continua indo para 100% sempre que eu faço alguma coisa. O que estou fazendo de errado? (devo reiniciar algum serviço ou algo assim?)

Existe alguma maneira de conseguir isso? Além disso, uma CPU não-Intel permite que eu faça isso? Não me importo de comprar outro laptop que resolva o problema.

    
por Mephisto 16.02.2018 / 14:20

2 respostas

4

Bem, acontece que o novo driver pstate da Intel é incrível, mas primeiro é necessário praticar um pouco da antiga arte perdida de ler a documentação.

Vou deixar minha pergunta porque, a julgar por todo o pesar e frustração que vejo espalhados pela internet, eu não sou o primeiro a ter esses problemas.

O novo driver da CPU tem muitas opções, mas vou restringir minha explicação a algo simples e, para mim, mais do que suficiente e satisfatório. Primeiro de tudo:

sudo apt-get install linux-cpupower

(ou o equivalente em suas distribuições não baseadas no debian)

Existem agora dois comportamentos (governadores) com os nomes powersave e performance , mas esse é um esquema de nomenclatura bastante infeliz, porque esses governadores não têm nada a ver com aqueles que possuem os mesmos nomes no antigo driver:

  • powersave significa agora frequência variável que depende da carga , ou seja, este é essencialmente o antigo ondemand governor. Você pode definir a frequência mínima e máxima, e se essa freqüência máxima é ajustada para a freqüência máxima da sua CPU (o que eu acredito ser o padrão), então você não salva uma porcaria. Você pode até mesmo aumentar a freqüência mínima para o segundo maior valor, e o resultado será a CPU quase em plena aceleração 24/7 e o governador ainda será nomeado powersave . Eles deveriam ter nomeado este regulador VARIABLE ou algo similar, evitando muita confusão entre os usuários e poupando os desenvolvedores de muitos relatórios falsos de bugs do kernel.

  • performance significa aqui frequência constante, não importa a carga , e isso depende do que o usuário definiu como máximo. Quando este regulador é ajustado, a freqüência mínima é ignorada e a CPU é executada na freqüência que você ajustou como máximo. Se, como tal, você definiu uma frequência muito baixa, então você não verá nenhum desempenho especial ou qualquer coisa, você apenas terá uma CPU mais lenta em frequência constante. Então, é melhor eles nomearem esse governador CONSTANTE ou algo similar, poupando frustração para muitas pessoas como eu, acostumados com o antigo esquema.

Então, aqui estão alguns exemplos que funcionam como um charme, pelo menos com o kernel 4.14. Vou usar como frequência mínima e máxima os valores para o meu processador: 0,4 e 3,1 GHz. Veja o seu com cpupower frequency-info

CONSTANTE, MENOR FREQUÊNCIA EM TODOS OS CORAIS

Isto é o que eu queria! Obtemos isso configurando o regulador de frequência constante e configurando a menor frequência disponível como máxima:

sudo cpupower frequency-set -g performance
sudo cpupower frequency-set -u 400MHz

FREQUÊNCIA CONSTANTE E MAIS ALTA EM TODOS OS CORAIS

(Você vê isso com muita frequência em computadores de mesa onde faz sentido, embora também haja pessoas dispostas a destruir seus fãs de laptop)

sudo cpupower frequency-set -g performance
sudo cpupower frequency-set -u 3100MHz

FREQUÊNCIA VARIÁVEL ENTRE AS FREQÜÊNCIAS POSSÍVEIS MÍNIMAS E MÁXIMAS EM TODOS OS CORAIS

(isso foi chamado ondemand com o antigo driver acpi-cpufreq )

sudo cpupower frequency-set -g powersave
sudo cpupower frequency-set -d 400MHz
sudo cpupower frequency-set -u 3100MHz

FREQUÊNCIA VARIÁVEL ENTRE O MÍNIMO E UMA FREQUÊNCIA MODERADA EM TODOS OS CORAIS

(talvez porque você queira ter mais velocidade quando necessário, mas você não quer alcançar o máximo e ouvir o ventilador soprando como um louco)

sudo cpupower frequency-set -g powersave
sudo cpupower frequency-set -d 400MHz
sudo cpupower frequency-set -u 1200MHz

E assim por diante. É muito fácil e funciona muito bem. Você também pode definir uma frequência baixa constante em um núcleo onde o material numérico pesado está sendo executado, enquanto você deixa uma frequência variável em outro núcleo onde você inicia o material mais comum (email, navegação na web ...). Veja taskset para mais informações.

    
por 17.02.2018 / 14:53
0

Funciona comigo:

echo "50" | sudo tee /sys/devices/system/cpu/intel_pstate/max_pref_pct

ele executa apenas 50% de desempenho / velocidade enquanto a carga da CPU é de 100%

    
por 01.08.2018 / 21:44