Wie ändere ich den Standard-Governor?

12

Ich möchte den Standard-Governor auf meinem Pi von On-Demand auf Performance ändern. Gibt es eine Möglichkeit, dies zu tun?

Matthew
quelle

Antworten:

21

Ich glaube nicht, dass Sie den Standard ändern können, ohne den Kernel neu zu kompilieren. Damit meine ich die, die der Kernel beim Booten auswählt.

Sie können jedoch festlegen, dass während der Ausführung ein anderer Governor verwendet werden soll. Wenn Sie also die Standardeinstellung ohne erneute Kompilierung festlegen möchten, können Sie dem Startskript /etc/rc.localoder einem anderen Startskript etwas hinzufügen .

Das /sysVerzeichnis befindet sich nicht auf der Festplatte. Es ist ein im RAM gefälschtes Dateisystem, das eigentlich eine Schnittstelle zum Abrufen von Informationen und zum Senden von Befehlen an den Kernel ist. Das ist alles relativ zu /sys/devices/system/cpu, also:

> cd /sys/devices/system/cpu

Sie müssen auch root sein, um writes ( echo blahblah >) ausführen zu können . Wie auch immer, relativ zum obigen Verzeichnis, um die verfügbaren Gouverneure zu sehen:

> cat cpu0/cpufreq/scaling_available_governors
conservative ondemand userspace powersave performance

Anscheinend gehört es Ihnen ondemand(aber lesen Sie dazu "Gotcha" weiter unten); überprüfen:

> cat cpu0/cpufreq/scaling_governor
ondemand

So ändern Sie es:

echo performance > cpu0/cpufreq/scaling_governor

Beachten Sie, dass dies entweder als root oder auf diese Weise erfolgen muss

sudo sh -c "echo performance > cpu0/cpufreq/scaling_governor"

Just plain sudowird nicht funktionieren , weil es eine Umleitung ist >.

Sie werden jetzt feststellen, dass das /sys/devices/system/cpu/cpufreqVerzeichnis (NICHT dasselbe wie /sys/devices/system/cpu/cpu0/cpufreq!), Das zuvor Dateihandles zum Konfigurieren des ondemand-Governors enthielt, leer ist.


Erwischt...

Auf Raspbian gibt es ein Init-Skript mit dem verwirrenden Namen raspi-config(nein, es hat nichts mit dem anderen zu tun, das beim ersten Start von dem ebenfalls verwirrenden Namen ausgeführt wird apply_noobs_os_config.sh), das diese Technik verwendet, um den Governor auf zu setzen, ondemandsofern nicht die Umschalttaste gedrückt wird gedrückt gehalten wird (der Raspbian-Kernel hat sich in powersavekompiliert). Andernfalls können Sie this ( systemctl disable raspi-config) sicher deaktivieren oder gemäß der Antwort von Gorkamorka bearbeiten. In diesem Fall besteht jedoch die Gefahr, dass die Bearbeitung durch ein Systemupdate usw. aufgehoben wird weiß, was jemand damit vorhat.

Sie können versuchen, die obige Nicht-Sudo-Version hinzuzufügen /etc/rc.local. Dies kann passieren, nachdem das raspi-configSkript beendet wurde.

Goldlöckchen
quelle
Kommentare sind nicht für längere Diskussionen gedacht. Diese Unterhaltung wurde in den Chat verschoben .
Goldlöckchen
2
Eher dann erfordern root Umschalten nur verwenden tee: echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor.
Fake Name
2
Anderer Weg: sudo sh -c "Echoleistung> cpu0 / cpufreq / scaling_governor"
Moonchild
Da Raspbian auf Debian basiert, sollten Sie in der Lage sein, die Pakete cpufrequtilsund zu finden sysfsutils. Nach der Installation können Sie den Governor und andere Parameter von /etc/default/cpufrequtilsund einstellen/etc/sysfs.conf
mbirth
4

Ich habe ein kleines Programm erstellt, um es zu ändern und es bei jedem Start ändern zu lassen, indem automatisch ein init.d-Skript erstellt wird.

Link zu meinem Projekt

MeisterD
quelle
3

Eine ähnliche Frage zum RPi-Stapelaustausch gibt es hier.

Um es zu paraphrasieren: Die On-Demand-Geschwindigkeit steigt auf das Maximum, wenn die CPU zu 95% ausgelastet ist. Sie können die Auslastungszeit auf einen niedrigeren Prozentsatz senken (was bedeutet, dass sie höher getaktet wird, wenn sie nicht so ausgelastet ist), indem Sie:

"Schreiben eines ganzzahligen Werts in eine Datei (Sie können beispielsweise Folgendes in die Startdatei /etc/rc.local einfügen): echo 60> / sys / devices / system / cpu / cpufreq / ondemand / up_threshold"

Theoretisch könnte man diesen Prozentsatz auf einen unglaublich niedrigen Wert wie 10 oder 5 setzen, was bedeutet, dass er immer mit max.

Hoffe das hilft. Achten Sie darauf, die Person zu bewerten, die dies im verlinkten Artikel gepostet hat!

Dave k
quelle
3
Das ist nicht wirklich eine Antwort auf die Frage „Wie kann ich den Gouverneur ändern von OnDemand Leistung (sie sind zwei verschiedene Gouverneure).
goldilocks
1
@goldilocks Ich denke, diese Antwort fügt der Frage noch etwas Nützliches hinzu, da sie erklärt, wie man das eine wie das andere verhält.
Dmitry Grigoryev
2

Eine alternative Lösung (wenn Sie Raspbian ausführen) könnte darin bestehen, das Skript init.d in /etc/init.d/raspi-config so zu ändern, dass der Skalierungsregler immer deaktiviert wird. Standardmäßig wird es beim Start nur aktiviert, wenn eine der Umschalttasten gedrückt wird:

#!/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
quelle
-3

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

Kurdt94
quelle
Während dies die Frage beantworten kann, erfordern gute Antworten mehr Informationen, als Sie hier angegeben haben. Außerdem hat Ihre Antwort nichts zu bedeuten, was die obigen Antworten noch nicht geliefert haben.
Steve Robillard