Skalowanie częstotliwości procesora

From WikiDoc

Jump to: navigation, search

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):

  1. /sbin/modprobe powernow_k8
  2. /sbin/modprobe powernow_k7
  3. /sbin/modprobe speedstep-centrino
  4. /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_governor
a 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.

Personal tools