Réponses:
Je ne pense pas que vous puissiez changer la valeur par défaut sans recompiler le noyau. J'entends par là, celui que le noyau choisit au démarrage.
Cependant, vous pouvez lui dire d'utiliser un gouverneur différent lors de l'exécution, donc si vous souhaitez définir efficacement la valeur par défaut sans recompilation, vous pouvez ajouter quelque chose /etc/rc.local
ou un autre script de démarrage.
Le /sys
répertoire n'est pas sur le disque; c'est un faux système de fichiers en RAM qui est en fait une interface pour obtenir des informations et envoyer des commandes au noyau. Tout cela est relatif à /sys/devices/system/cpu
:
> cd /sys/devices/system/cpu
Vous devez également être root pour effectuer les écritures ( echo blahblah >
). Quoi qu'il en soit, par rapport au répertoire ci-dessus, pour voir les gouverneurs disponibles:
> cat cpu0/cpufreq/scaling_available_governors
conservative ondemand userspace powersave performance
Apparemment, le vôtre est ondemand
(mais lisez "Gotcha" ci-dessous à ce sujet); vérifier:
> cat cpu0/cpufreq/scaling_governor
ondemand
Pour le changer:
echo performance > cpu0/cpufreq/scaling_governor
Notez que cela doit être fait root, ou comme ça
sudo sh -c "echo performance > cpu0/cpufreq/scaling_governor"
Tout simplement sudo
ne fonctionnera pas parce qu'il ya une redirection, >
.
Vous remarquerez maintenant que le /sys/devices/system/cpu/cpufreq
répertoire, (PAS le même que /sys/devices/system/cpu/cpu0/cpufreq
!), Qui contenait auparavant des descripteurs de fichiers pour configurer le gouverneur à la demande, est vide.
Sur Raspbian, il existe un script d'initialisation, nommé de manière confuse raspi-config
(non, il n'a rien à voir avec l'autre, qui est exécuté au premier démarrage par le nom également déroutant apply_noobs_os_config.sh
), qui utilise cette technique pour définir le gouverneur à ondemand
moins que la touche Maj est maintenu enfoncé (le noyau Raspbian stock a powersave
compilé). Il ne fait rien d'autre, il est donc sûr de désactiver ceci ( systemctl disable raspi-config
), ou vous pouvez le modifier selon la réponse de Gorkamorka , mais vous courez le risque de le voir non modifié par une mise à jour du système, etc. - qui sait ce que quelqu'un envisage de faire avec ça.
Vous pouvez essayer d'ajouter la version non sudo ci-dessus à /etc/rc.local
. Cela peut se produire après la fin du raspi-config
script.
tee
: echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
.
cpufrequtils
et sysfsutils
. Après les avoir installés, vous pouvez définir le gouverneur et d'autres paramètres depuis /etc/default/cpufrequtils
et /etc/sysfs.conf
- voir ici: wiki.debian.org/HowTo/CpuFrequencyScaling
J'ai fait un petit programme pour le changer et le laisser changer à chaque démarrage en créant automatiquement un script init.d.
question similaire sur l'échange de pile RPi ici.
pour le paraphraser, la vitesse à la demande grimpe au maximum lorsque le processeur est à 95% occupé. Vous pouvez réduire le temps occupé à un pourcentage inférieur (ce qui signifie qu'il sera plus élevé lorsqu'il n'est pas aussi occupé) en:
"écrire une valeur entière dans un fichier (vous pouvez par exemple placer ce qui suit dans le fichier de démarrage /etc/rc.local): echo 60> / sys / devices / system / cpu / cpufreq / ondemand / up_threshold"
Donc, théoriquement ... vous pourriez mettre ce pourcentage à quelque chose d'incroyablement bas comme 10 ou 5, ce qui signifierait qu'il fonctionnerait toujours au maximum.
J'espère que cela t'aides. Assurez-vous de marquer la personne qui a posté cela dans l'article lié!
Une autre solution (si vous exécutez Raspbian) pourrait être de modifier le script init.d dans /etc/init.d/raspi-config pour toujours désactiver le gouverneur de mise à l'échelle. Son comportement par défaut consiste à ne l'activer au démarrage que si l'une des touches Maj est enfoncée:
#!/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