Como mudar o governador padrão?


12

Quero alterar o governador padrão no meu pi de ondemand para desempenho. Existe alguma forma de fazer isso?

Respostas:


21

Eu não acho que você pode alterar o padrão sem recompilar o kernel. Com isso, quero dizer, aquele que o kernel escolhe quando inicializado.

No entanto, você pode dizer a ele para usar um governador diferente durante a execução; portanto, se você quiser definir efetivamente o padrão sem recompilar, poderá adicionar algo /etc/rc.localou algum outro script de inicialização.

O /sysdiretório não está no disco; é um sistema de arquivos falsos na RAM que é realmente uma interface para obter informações e enviar comandos para o kernel. Isso tudo é relativo a /sys/devices/system/cpu, então:

> cd /sys/devices/system/cpu

Você também precisa ser root para fazer as gravações ( echo blahblah >). De qualquer forma, em relação ao diretório acima, para ver os governadores disponíveis:

> cat cpu0/cpufreq/scaling_available_governors
conservative ondemand userspace powersave performance

Aparentemente, o seu é ondemand(mas leia "Gotcha" abaixo sobre isso); checar:

> cat cpu0/cpufreq/scaling_governor
ondemand

Para mudar isso:

echo performance > cpu0/cpufreq/scaling_governor

Observe que isso precisa ser feito como root ou assim

sudo sh -c "echo performance > cpu0/cpufreq/scaling_governor"

Simplesmente sudonão funcionará porque há um redirecionamento >,.

Agora você notará que o /sys/devices/system/cpu/cpufreqdiretório (NÃO é o mesmo que /sys/devices/system/cpu/cpu0/cpufreq!), Que anteriormente continha identificadores de arquivo para configurar o governador ondemand, está vazio.


Peguei vocês...

No Raspbian, existe um script init, o nome confuso raspi-config(não, não tem nada a ver com o outro, que é executado na primeira inicialização pelo nome também confuso apply_noobs_os_config.sh), que usa essa técnica para definir o governador, a ondemandmenos que a tecla Shift é mantido pressionado (o kernel Raspbian padrão foi powersavecompilado). Ele não faz mais nada; portanto, é seguro desativá-lo ( systemctl disable raspi-config) ou você pode editá-lo de acordo com a resposta de Gorkamorka , mas corre o risco de editá-lo por uma atualização do sistema etc. - quem sabe o que alguém planeja fazer com isso.

Você pode tentar adicionar a versão não sudo acima em /etc/rc.local. Isso pode acontecer após a raspi-configsaída do script.


Comentários não são para discussão prolongada; esta conversa foi movida para o bate-papo .
goldilocks

2
Em vez de exigir mudar para root, basta usar tee: echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor.
Nome falso

2
Outra forma: sudo sh -c "echo desempenho> cpu0 / cpufreq / scaling_governor"
Moonchild

Como o Raspbian é baseado no Debian, você deve ser capaz de encontrar os pacotes cpufrequtilse sysfsutils. Depois de instalá-los, você pode definir o governador e outros parâmetros de /etc/default/cpufrequtilse /etc/sysfs.conf- veja aqui: wiki.debian.org/HowTo/CpuFrequencyScaling
mbirth


3

pergunta semelhante sobre troca de pilha RPi aqui.

Parafraseando, a velocidade sob demanda aumenta até o máximo quando a CPU está 95% ocupada. Você pode reduzir a quantidade de tempo ocupado para uma porcentagem mais baixa (o que significa que o relógio ficará mais alto quando não estiver tão ocupado):

"gravando um valor inteiro em um arquivo (você pode colocar o seguinte, por exemplo, no arquivo de inicialização /etc/rc.local): eco 60> / sys / devices / system / cpu / cpufreq / ondemand / up_threshold"

então, teoricamente ... você poderia colocar essa porcentagem em algo incrivelmente baixo, como 10 ou 5, o que significaria que ela estaria sempre funcionando no máximo.

Espero que isto ajude. Não deixe de marcar a pessoa que postou isso no artigo vinculado!


3
Isso não é realmente uma resposta para a pergunta: "como faço para mudar o governador do ondemand para o desempenho (são duas diferentes governadores).
goldilocks

1
@goldilocks Acho que essa resposta ainda acrescenta algo útil ao questionário, pois explica como fazer um se comportar como o outro.
Dmitry Grigoryev

2

Uma solução alternativa (se você estiver executando o Raspbian) pode ser modificar o script init.d em /etc/init.d/raspi-config para sempre desativar o regulador de escala. Seu comportamento padrão é ativá-lo apenas na inicialização se uma das teclas shift estiver sendo pressionada:

#!/bin/sh
### BEGIN INIT INFO
# Provides:          raspi-config
# Required-Start: udev mountkernfs $remote_fs
# Required-Stop:
# Default-Start: S
# Default-Stop:
# Short-Description: Switch to ondemand cpu governor (unless shift key is pressed)
# Description:
### END INIT INFO

. /lib/lsb/init-functions

case "$1" in
  start)
    log_daemon_msg "Checking if shift key is held down"
    timeout 1 thd --dump /dev/input/event* | grep -q "LEFTSHIFT\|RIGHTSHIFT"
    if [ $? -eq 0 ]; then
      printf " Yes. Not enabling ondemand scaling governor"
      log_end_msg 0
    else
      printf " No. Switching to ondemand scaling governor"
      SYS_CPUFREQ_GOVERNOR=/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor      if [ -e $SYS_CPUFREQ_GOVERNOR ]; t
hen
        echo "ondemand" > $SYS_CPUFREQ_GOVERNOR
        echo 50 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold
        echo 100000 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate
        echo 50 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor
        echo 1 | sudo tee /sys/devices/system/cpu/cpufreq/ondemand/io_is_busy
      fi
      log_end_msg 0
    fi
    ;;
  *)
    echo "Usage: $0 start" >&2
    exit 3
    ;;
esac

-3

eco "performance" | sudo tee / sys / devices / system / cpu / cpu0 / cpufreq / scaling_governor


Embora isso possa responder à pergunta, boas respostas exigem mais informações do que você forneceu aqui. Além disso, sua resposta não fornece nada que as respostas acima ainda não tenham sido fornecidas.
Steve Robillard
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.