Skalowanie częstotliwości procesora
From WikiDoc
Contents |
Wstęp
Skalowanie częstotliwości procesora to zmiana szybkości taktowania jego zegara. Najczęściej skalowanie wykorzystywane jest do dynamicznej zmiany częstotliwości zegara procesora w zależności od obciążenia komputera w celu zaoszczędzenia energii. Szczególnie przydatne w urządzeniach przenośnych (jak laptopy) i urządzeniach stacjonarnych (jak PC czy serwery) wykorzystywanych w znikomym stopniu, a działających przez większość doby lub non stop.
Funkcja skalowania częstotliwości obsługiwana jest przez większość nowych procesorów.
Włączenie skalowania
Skalowaniem częstotliwości zajmuje się jądro. Dlatego wystarczy załadować odpowiedni moduł i aktywować żądaną funkcję przez interfejs jądra /sys.
Ładowanie modułu
Zaloguj się jako root:
su
Załaduj moduł do obsługi skalowania dla swojego procesora (wybierz jeden):
- /sbin/modprobe powernow_k8
- /sbin/modprobe powernow_k7
- /sbin/modprobe speedstep-centrino
- /sbin/modprobe acpi-cpufreq
K8 obsługuje procesory działające na podstawkach 754, 939, 940, S1 ( 638 ), AM2 ( 940 ), F ( 1207 ), czyli AMD64, Sempron 64, Opteron 64 (technologia Cool'n'Quiet)
K7 obsługuje procesory działające na podstawkach A i Slot A, czyli Mobile Athlon XP i Sempron.
Centrino przeznaczony jest dla procesorów Intela: Centrino, Core Duo, Pentium M.
acpi-cpufreq dla pozostałych, jeśli poprzednie nie zadziałały.
Odpowiedni moduł możesz też dobrać metodą prób i błędów.
Po wyborze pasującego modułu polecenie:
dmesg | grep powernow lub cpufreq lub speedstep
powinno zwrócić model procesora wraz z obsługiwanymi przez niego częstotliwościami, na przykład:
# dmesg | grep powernow powernow-k8: Found 1 AMD Athlon(tm) 64 X2 Dual Core Processor 4000+ processors (2 cpu cores) (version 2.20.00) powernow-k8: 0 : fid 0xd (2100 MHz), vid 0xa powernow-k8: 1 : fid 0xc (2000 MHz), vid 0xb powernow-k8: 2 : fid 0xa (1800 MHz), vid 0xd powernow-k8: 3 : fid 0x2 (1000 MHz), vid 0x12
Skalowanie działa.
Kontrola działania
Aby zmniejszyć taktowanie, zalogowany jako root wpisz następujące polecenie:
echo ondemand >/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
Spowoduje ono utworzenie pliku /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor z treścią ondemand.
Jeśli Twój procesor jest nieobciążony, po kilku chwilach powinien zmniejszyć częstotliwość. Aby to sprawdzić, wpisz jako root polecenie:
watch -n 1 cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq
Jako zwykły użytkownik możesz również skorzystać z:
cat /proc/cpuinfo
Przywrócenie nominalnego taktowania odbywa się przez zastąpienie pliku scaling_governor plikiem o innej treści:
echo performance >/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
lub przez silniejsze obciążenie systemu.
Aby otrzymać listę możliwych do wpisania wartości dla tego pliku, zobacz plik scaling_available_governors
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
Praktyczna implementacja rozwiązania
Ładowanie modułu przy starcie systemu
Do pliku /etc/rc.local (zapis tyko dla roota) dodaj na końcu wiersz /sbin/modprobe [odpowiedni moduł] (np. /sbin/modprobe powernow_k8).
Plik scaling_governor domyślnie istnieje z wartością ondemand, więc nie ma potrzeby tworzenia go tutaj na nowo.
Skalowanie na żądanie
Jeśli chcesz mieć jako użytkownik pełną kontrolę nad działaniem tego mechanizmu (np. chcesz nagrać płytę, a jądro nie chce podnieść taktowania, choć tego od niego oczekujesz), możesz w wygodny sposób na przykład z pulpitu sterować częstotliwością procesora. Wystarczy, że na końcu /etc/rc.local dodasz jeszcze linię:
chown użytkownik.users /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
użytkownik musisz zastąpić nazwą konta użytkownika, który ma mieć prawo do zmiany taktowania. Po restarcie plik scaling_governor będzie miał uprawnienia zezwalające temu użytkownikowi na zapis do tego pliku.
Następnie w zależności od używanego przez Ciebie środowiska czy menedżera okien możesz sobie utworzyć jakieś skróty czy polecenia, które będą zastępować zawartość pliku wedle żądania. Przykładowo w KDE wystarczy utworzyć odpowiednie pliki.sh z atrybutem wykonywalności (chmod +x plik), w jednym z nich wstawić linięecho ondemand >/sys/devices/system/cpu/cpu0/cpufreq/scaling_governora w drugim
echo performance >/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
Następnie możesz je umieścić na przykład na pulpicie i klikać wedle uznania jak na ikonki programów.

