Risposte:
Non penso che tu possa cambiare il default senza ricompilare il kernel. Con questo voglio dire, quello che il kernel sceglie all'avvio.
Tuttavia, puoi dirgli di usare un governatore diverso durante l'esecuzione, quindi se vuoi impostare efficacemente il default senza ricompilare, puoi aggiungere qualcosa /etc/rc.local
o qualche altro script di avvio.
La /sys
directory non è su disco; è un file system falso in RAM che in realtà è un'interfaccia per ottenere informazioni e inviare comandi al kernel. Questo è tutto relativo a /sys/devices/system/cpu
, quindi:
> cd /sys/devices/system/cpu
Devi anche essere root per eseguire le scritture ( echo blahblah >
). Comunque, relativamente alla directory sopra, per vedere i governatori disponibili:
> cat cpu0/cpufreq/scaling_available_governors
conservative ondemand userspace powersave performance
Apparentemente il tuo è ondemand
(ma leggi "Gotcha" sotto su questo); controllare:
> cat cpu0/cpufreq/scaling_governor
ondemand
Per cambiarlo:
echo performance > cpu0/cpufreq/scaling_governor
Nota che deve essere fatto root, o in questo modo
sudo sh -c "echo performance > cpu0/cpufreq/scaling_governor"
Semplicemente sudo
non funziona perché c'è un redirect, >
.
Noterai ora che la /sys/devices/system/cpu/cpufreq
directory, (NON uguale a /sys/devices/system/cpu/cpu0/cpufreq
!), Che precedentemente conteneva i filehandle per la configurazione del governatore ondemand, è vuota.
Su Raspbian esiste uno script init, il nome confuso raspi-config
(no, non ha nulla a che fare con l'altro, che viene eseguito al primo avvio anche dal nome confuso apply_noobs_os_config.sh
), che utilizza questa tecnica per impostare il governatore su a ondemand
meno che il tasto Maiusc viene tenuto premuto ( powersave
compilato il kernel stock di Raspbian ). Non fa nient'altro, quindi è sicuro disabilitare questo ( systemctl disable raspi-config
), oppure potresti modificarlo secondo la risposta di Gorkamorka , ma poi corri il rischio di averlo non modificato da un aggiornamento del sistema, ecc. - chi sa cosa qualcuno ha intenzione di fare con quello.
Potresti provare ad aggiungere la versione non sudo sopra a /etc/rc.local
. Ciò può accadere dopo la chiusura dello raspi-config
script.
tee
: echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
.
cpufrequtils
e sysfsutils
. Dopo averli installati, puoi impostare il governatore e altri parametri da /etc/default/cpufrequtils
e /etc/sysfs.conf
- vedi qui: wiki.debian.org/HowTo/CpuFrequencyScaling
Ho creato un piccolo programma per cambiarlo e lasciarlo cambiare ad ogni avvio creando automaticamente uno script init.d.
domanda simile sullo scambio di stack RPi qui.
per parafrasare, la velocità su richiesta aumenta al massimo quando la CPU è occupata al 95%. Puoi ridurre la quantità di tempo occupato a una percentuale più bassa (il che significa che sarà cronometrato più alto quando non è così occupato) di:
"scrivere un valore intero in un file (puoi inserire ad esempio quanto segue nel file di avvio /etc/rc.local): echo 60> / sys / devices / system / cpu / cpufreq / ondemand / up_threshold"
quindi, in teoria ... potresti mettere questa percentuale a qualcosa di incredibilmente basso come 10 o 5, il che significherebbe che sarebbe sempre in esecuzione al massimo.
Spero che sia di aiuto. Assicurati di dare un punteggio alto alla persona che ha pubblicato questo nell'articolo collegato!
Una soluzione alternativa (se si esegue Raspbian) potrebbe essere quella di modificare lo script init.d in /etc/init.d/raspi-config per disabilitare sempre il ridimensionamento del regolatore. Il suo comportamento predefinito è abilitarlo all'avvio solo se si preme uno dei tasti Maiusc:
#!/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
echo "performance" | sudo tee / sys / devices / system / cpu / cpu0 / cpufreq / scaling_governor