Respostas:
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.local
ou algum outro script de inicialização.
O /sys
diretó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 sudo
não funcionará porque há um redirecionamento >
,.
Agora você notará que o /sys/devices/system/cpu/cpufreq
diretó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.
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 ondemand
menos que a tecla Shift é mantido pressionado (o kernel Raspbian padrão foi powersave
compilado). 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-config
saída do script.
tee
: echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
.
cpufrequtils
e sysfsutils
. Depois de instalá-los, você pode definir o governador e outros parâmetros de /etc/default/cpufrequtils
e /etc/sysfs.conf
- veja aqui: wiki.debian.org/HowTo/CpuFrequencyScaling
Criei um pequeno programa para alterá-lo e permitir que ele fosse alterado a cada inicialização, criando automaticamente um script init.d.
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!
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
eco "performance" | sudo tee / sys / devices / system / cpu / cpu0 / cpufreq / scaling_governor