Comment changer le gouverneur par défaut?

12

Je veux changer le gouverneur par défaut sur mon pi de ondemand à performance. Y-a-t'il une façon de le faire?

Matthieu
la source

Réponses:

21

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.localou un autre script de démarrage.

Le /sysré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 sudone fonctionnera pas parce qu'il ya une redirection, >.

Vous remarquerez maintenant que le /sys/devices/system/cpu/cpufreqré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.


Je t'ai eu...

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 à ondemandmoins que la touche Maj est maintenu enfoncé (le noyau Raspbian stock a powersavecompilé). 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-configscript.

Boucles d'or
la source
Les commentaires ne sont pas pour une discussion approfondie; cette conversation a été déplacée vers le chat .
goldilocks
2
Plutôt alors besoin de passer à la racine, il suffit d' utiliser tee: echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor.
Fake Name
2
Autre moyen: sudo sh -c "performance d'écho> cpu0 / cpufreq / scaling_governor"
Moonchild
Comme Raspbian est basé sur Debian, vous devriez pouvoir trouver les paquets cpufrequtilset sysfsutils. Après les avoir installés, vous pouvez définir le gouverneur et d'autres paramètres depuis /etc/default/cpufrequtilset /etc/sysfs.conf- voir ici: wiki.debian.org/HowTo/CpuFrequencyScaling
mbirth
4

J'ai fait un petit programme pour le changer et le laisser changer à chaque démarrage en créant automatiquement un script init.d.

Lien vers mon projet

MeisterD
la source
3

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é!

dave k
la source
3
Ce n'est pas vraiment une réponse à la question, "comment puis-je changer le gouverneur d'ondemand à la performance (ce sont deux gouverneurs différents ).
goldilocks
1
@goldilocks Je pense que cette réponse ajoute encore quelque chose d'utile à la question car elle explique comment faire en sorte que l'un se comporte comme l'autre.
Dmitry Grigoryev du
2

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
Gorkamorka
la source
-3

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

Kurdt94
la source
Bien que cela puisse répondre à la question, les bonnes réponses nécessitent plus d'informations que celles que vous avez fournies ici. De plus, votre réponse ne contient rien que les réponses ci-dessus n'aient déjà fournies.
Steve Robillard