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?

Mateus
fonte

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.

Cachinhos Dourados
fonte
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
4

Criei um pequeno programa para alterá-lo e permitir que ele fosse alterado a cada inicialização, criando automaticamente um script init.d.

Link para o meu projeto

MeisterD
fonte
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!

Dave K
fonte
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
Gorkamorka
fonte
-3

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

Kurdt94
fonte
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