Jak zmienić domyślnego gubernatora?

12

Chcę zmienić domyślnego gubernatora na moim pi z ondemand na wydajność. Czy jest na to sposób?

Mateusz
źródło

Odpowiedzi:

21

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.localskryptu startowego lub inny skrypt.

/sysKatalog 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 sudonie będzie działać, ponieważ nie jest przekierowanie, >.

Zauważysz teraz, że /sys/devices/system/cpu/cpufreqkatalog (NIE taki sam jak /sys/devices/system/cpu/cpu0/cpufreq!), Który poprzednio zawierał uchwyty plików do konfigurowania gubernatora ondemand, jest pusty.


Gotcha ...

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, ondemandchyba że klawisz Shift jest przytrzymany ( powersaveskompilowano 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-configskryptu.

Złotowłosa
źródło
Komentarze nie są przeznaczone do rozszerzonej dyskusji; ta rozmowa została przeniesiona do czatu .
Złotowłosa
2
A następnie wymaga przełączania do korzenia, wystarczy użyć tee: echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor.
Fałszywe imię
2
Innym sposobem: sudo sh -c "wydajność echa> cpu0 / cpufreq / scaling_governor"
Moonchild
Ponieważ Raspbian jest oparty na Debianie, powinieneś być w stanie znaleźć pakiety cpufrequtilsi sysfsutils. Po ich zainstalowaniu możesz ustawić gubernatora i inne parametry za pomocą /etc/default/cpufrequtilsi /etc/sysfs.conf- patrz tutaj: wiki.debian.org/HowTo/CpuFrequencyScaling
mbirth
4

Zrobiłem mały program, aby go zmienić i pozwolić, aby był zmieniany przy każdym rozruchu, automatycznie tworząc skrypt init.d.

Link do mojego projektu

MeisterD
źródło
3

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!

Dave K.
źródło
3
W rzeczywistości nie jest to odpowiedź na pytanie: „jak zmienić gubernatora z systemu na żądanie na wydajność (są to dwa różne gubernatorzy).
goldilocks
1
@ Goldilocks Myślę, że ta odpowiedź wciąż dodaje coś użytecznego do quesiton, ponieważ wyjaśnia, jak sprawić, by jedno zachowywało się tak samo jak drugie.
Dmitrij Grigoryev,
2

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
Gorkamorka
źródło
-3

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

Kurdt94
źródło
Chociaż może to odpowiedzieć na pytanie, dobre odpowiedzi wymagają więcej informacji niż te tutaj podane. Twoja odpowiedź nie zawiera niczego, czego nie udzieliły powyższe odpowiedzi.
Steve Robillard,