Odpowiedzi:
Nie sądzę, że możesz zmienić wartość domyślną bez ponownej kompilacji jądra. Rozumiem przez to ten, który jądro wybiera po uruchomieniu.
Możesz jednak powiedzieć, aby używał innego gubernatora podczas działania, więc jeśli chcesz skutecznie ustawić wartość domyślną bez ponownej kompilacji, możesz dodać coś do /etc/rc.local
skryptu startowego lub inny skrypt.
/sys
Katalog nie jest na dysku; jest to fałszywy system plików w pamięci RAM, który w rzeczywistości jest interfejsem do uzyskiwania informacji i wysyłania poleceń do jądra. Wszystko to zależy od /sys/devices/system/cpu
:
> cd /sys/devices/system/cpu
Musisz także być rootem, aby wykonywać operacje zapisu ( echo blahblah >
). W każdym razie, w stosunku do powyższego katalogu, zobacz dostępne gubernatory:
> cat cpu0/cpufreq/scaling_available_governors
conservative ondemand userspace powersave performance
Najwyraźniej twój jest ondemand
(ale przeczytaj o tym poniżej „Gotcha” ); sprawdzić:
> cat cpu0/cpufreq/scaling_governor
ondemand
Aby to zmienić:
echo performance > cpu0/cpufreq/scaling_governor
Zauważ, że albo trzeba to zrobić root, albo w ten sposób
sudo sh -c "echo performance > cpu0/cpufreq/scaling_governor"
Po prostu sudo
nie będzie działać, ponieważ nie jest przekierowanie, >
.
Zauważysz teraz, że /sys/devices/system/cpu/cpufreq
katalog (NIE taki sam jak /sys/devices/system/cpu/cpu0/cpufreq
!), Który poprzednio zawierał uchwyty plików do konfigurowania gubernatora ondemand, jest pusty.
Na Raspbian jest skrypt inicjujący, myląco nazwany raspi-config
(nie, nie ma on nic wspólnego z drugim, który jest uruchamiany przy pierwszym uruchomieniu przez również myląco nazwany apply_noobs_os_config.sh
), który używa tej techniki, aby ustawić gubernatora na, ondemand
chyba że klawisz Shift jest przytrzymany ( powersave
skompilowano podstawowe jądro Raspbian ). Nie robi nic innego, więc można bezpiecznie to wyłączyć ( systemctl disable raspi-config
), lub możesz to edytować zgodnie z odpowiedzią Gorkamorki , ale wtedy ryzykujesz, że nie będzie edytowana przez aktualizację systemu itp. - kto wie, co ktokolwiek planuje z tym zrobić.
Możesz spróbować dodać wersję inną niż sudo powyżej /etc/rc.local
. Może się to zdarzyć po zakończeniu raspi-config
skryptu.
tee
: echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
.
cpufrequtils
i sysfsutils
. Po ich zainstalowaniu możesz ustawić gubernatora i inne parametry za pomocą /etc/default/cpufrequtils
i /etc/sysfs.conf
- patrz tutaj: wiki.debian.org/HowTo/CpuFrequencyScaling
Zrobiłem mały program, aby go zmienić i pozwolić, aby był zmieniany przy każdym rozruchu, automatycznie tworząc skrypt init.d.
podobne pytanie na temat wymiany stosu RPi tutaj.
parafrazując to, prędkość na żądanie wzrasta do maksimum, gdy procesor jest zajęty w 95%. Możesz obniżyć czas zajętości do niższej wartości procentowej (co oznacza, że będzie taktowany wyżej, gdy nie będzie tak zajęty) przez:
„zapisywanie wartości całkowitej w pliku (możesz umieścić następujące na przykład w pliku startowym /etc/rc.local): echo 60> / sys / devices / system / cpu / cpufreq / ondemand / up_threshold”
więc teoretycznie ... można ustawić ten procent na niewiarygodnie niskim poziomie, takim jak 10 lub 5, co oznaczałoby, że zawsze działałby na maksimum.
Mam nadzieję że to pomoże. Pamiętaj, aby podnieść ocenę osoby, która opublikowała to w powiązanym artykule!
Alternatywnym rozwiązaniem (jeśli korzystasz z Raspbian) może być zmodyfikowanie skryptu init.d w /etc/init.d/raspi-config, aby zawsze wyłączał regulator skalowania. Domyślne zachowanie polega na włączaniu go tylko podczas uruchamiania, jeśli naciśnięty jest jeden z klawiszy Shift:
#!/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