Como eu configuro o regulador de escala de freqüência da CPU para todos os núcleos de uma só vez?

28

Gostaria de definir o regulador de escala de frequência da CPU para todos os núcleos de uma só vez, em vez de fazê-lo individualmente para cada núcleo. Existe uma maneira de fazer isso?

(Eu sei que seria fácil ecoar o governador para /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor , mas não estou procurando uma solução personalizada.)

    
por htorque 06.01.2011 / 09:53

6 respostas

14

Eu pesquisei muito no Google e acho que não é possível, então adicionei o seguinte one-liner ao meu .bashrc :

function setgov ()
{
    echo "" | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor 
}

Agora posso executar algo como setgov ondemand e todos os núcleos mudarão para o ondemand .

    
por htorque 23.01.2011 / 23:17
19

Eu ainda sou um noob do Linux, mas você não acha que cpufrequtils permite que você faça isso usando (não está incluído no sistema operacional Ubuntu, mas está lá no repositório)

sudo apt-get install cpufrequtils
sudo cpufreq-set -r -g performance
  • O -r flag é usado para definir a alteração para todos os núcleos ("todos relacionados a hardware")
por user49449 06.03.2012 / 16:13
2

o comando mais curto para alterar o governador de todos os núcleos é o seguinte:

sudo bash -c 'for i in {0..7}; do cpufreq-set -c $i -g performance; done'

Você poderia adicioná-lo ao .bashrc como o htorque mencionou, você terá que executá-lo como root sudo setgov performance :

function setgov ()
{
     for i in {0..7}; 
     do 
         cpufreq-set -c $i -g ; 
     done
}
    
por switch87 01.12.2016 / 13:48
1

Pode também adicionar conclusão de código bash, enquanto estamos nisso:

function setgovernor () {
    echo "" | sudo tee 
    /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor 
}
complete -W "$(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors)" setgovernor
    
por Ray Malanga 06.06.2018 / 00:03
0

Baseando-me na resposta do switch87, criei um script simples cpufreq-set-all , que permitirá fazer outras cpufreq-set de coisas com todas as CPUs:

   #!/bin/bash
   MAX_CPU=$(('nproc --all' - 1))
   for i in $(seq 0 $MAX_CPU); do
       echo "Changing CPU " $i " with parameter "$@;
       cpufreq-set -c $i $@ ;
   done

Agora ele pode ser invocado (depois de chmod +x , é claro) assim:

cpufreq-set-all -g powersave

ou

cpufreq-set-all -f 800Mhz
    
por side2k 08.12.2016 / 12:56
0

A maneira como eu defini isso para ficar, já que o governador retorna ao modo de economia de energia após cerca de 30 segundos a partir do Ubuntu 16.04 ou antes (eu estou no Ubuntu Mate);

  1. Coloque este código (uma linha de) (obrigado, cortesia do switch87 na resposta anterior)

    sleep 60 && bash -c 'for i in {0..7}; do cpufreq-set -c $i -g performance; done'
    
  2. no arquivo no diretório

    /etc/rc.local
    

A minha é uma linha acima da "saída 0" e não comentada, sob os comentários.

"rc.local" para quem não conhece, executa o comando como sudo. Qualquer comando que pareça, para mudar o governador, precisa ser executado como sudo.

Ele permite que o governador reconfigure novamente e execute o código como sudo após 60 segundos para alterá-lo novamente para o desempenho.

Mude o "60" (no código que você copia) para qualquer hora (em segundos. 60 = 60 segundos = 1 minuto) você precisa atrasar o comando e o "desempenho" (na parte de comando) para qual governador você quer que mude para.

Fora das minhas horas e horas de pesquisa eu não encontrei uma correção mais permanente para isso do que isso. Eu imagino o que é um par de minutos que está na economia de energia se esta é a melhor solução que encontrei, certo? Certo.

Não é a melhor solução, mas torna-a um pouco permanente depois de ter mudado pouco para a coisa de economizar energia. Se você quiser inicializar e pular em um jogo ou algo assim, terá que esperar um minuto para o código que você acabou de colocar para alterná-lo de volta da economia de energia ou diminuir o tempo (dependendo do tempo que leva tudo para inicializar, então ele voltará ao desempenho corretamente).

E, como sempre, para reverter para o padrão (vi alguns problemas com o superaquecimento de PCs das pessoas, motivo pelo qual eles poderiam tê-lo desativado em primeiro lugar), basta remover o código de rc.local e reinicializar ou alterne-o manualmente com o seu comutador de indicador de ícone de CPU ou execute;

 sudo /etc/init.d/cpufrequtils restart

no terminal e ou reinicialize.

    
por Roiikka 13.04.2018 / 06:35

Tags