Antworten:
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.local
oder einem anderen Startskript etwas hinzufügen .
Das /sys
Verzeichnis 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 sudo
wird nicht funktionieren , weil es eine Umleitung ist >
.
Sie werden jetzt feststellen, dass das /sys/devices/system/cpu/cpufreq
Verzeichnis (NICHT dasselbe wie /sys/devices/system/cpu/cpu0/cpufreq
!), Das zuvor Dateihandles zum Konfigurieren des ondemand-Governors enthielt, leer ist.
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, ondemand
sofern nicht die Umschalttaste gedrückt wird gedrückt gehalten wird (der Raspbian-Kernel hat sich in powersave
kompiliert). 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-config
Skript beendet wurde.
tee
: echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
.
cpufrequtils
und zu finden sysfsutils
. Nach der Installation können Sie den Governor und andere Parameter von /etc/default/cpufrequtils
und einstellen/etc/sysfs.conf
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.
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!
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
echo "performance" | sudo tee / sys / devices / system / cpu / cpu0 / cpufreq / scaling_governor