Podkręć swoje CPU – governor w Linux
Jak zmienić governor w systemie Linux? Przewodnik krok po kroku dla dystrybucji RedHat i Debian
Zarządzanie energią procesora w systemach Linux może znacząco wpłynąć na wydajność i zużycie energii. Jednym z najważniejszych narzędzi do tego celu jest ustawianie tzw. „governora” – mechanizmu, który kontroluje, w jaki sposób system operacyjny reguluje częstotliwość procesora. Opiszę więc czym jest governor, jakie są jego typy oraz jak zmienić jego ustawienia w popularnych dystrybucjach Linuxa: RedHat i Debian.
Co to jest governor procesora?
Governor to rodzaj kontrolera, który decyduje o tym, jak dynamicznie procesor dostosowuje swoją częstotliwość pracy do bieżącego obciążenia systemu. Dzięki temu mechanizmowi można osiągnąć balans pomiędzy wydajnością a oszczędnością energii. Linux oferuje kilka predefiniowanych typów governorów, które odpowiadają różnym potrzebom użytkowników.
Najważniejsze typy governorów to:
- performance: ustawia procesor na najwyższą możliwą częstotliwość, zapewniając maksymalną wydajność kosztem zużycia energii.
- powersave: ustawia procesor na najniższą możliwą częstotliwość, minimalizując zużycie energii, co może wpływać na wydajność.
- ondemand: dynamicznie dostosowuje częstotliwość procesora w zależności od obciążenia. Jeśli system wymaga więcej mocy, governor zwiększa częstotliwość, a gdy obciążenie spada, zmniejsza ją.
- conservative: działa podobnie jak ondemand, ale zmiany częstotliwości są bardziej stopniowe, co może prowadzić do większej oszczędności energii w porównaniu do ondemand.
Wybór odpowiedniego governor’a zależy od specyficznych wymagań systemu. Na przykład, serwer działający pod dużym obciążeniem prawdopodobnie będzie działał najlepiej z „performance”, natomiast laptop użytkowany w trybie mobilnym może korzystać z „powersave” lub „conservative”.
Jak sprawdzić aktualnie używany governor?
Zanim zmienimy ustawienia, warto sprawdzić, który governor jest aktualnie używany w systemie. Możemy to zrobić za pomocą prostego polecenia w terminalu:
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
To polecenie wyświetli obecne ustawienia governorów dla wszystkich rdzeni procesora. Możemy również sprawdzić dostępne governory:
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_governors
Jak zmienić governor w systemie RedHat
Zmiana governor’a w systemach opartych na RedHat (np. RHEL, CentOS, Fedora) jest stosunkowo prosta. Istnieje kilka metod na dokonanie tej zmiany, w zależności od tego, czy chcemy to zrobić na stałe, czy tymczasowo.
Tymczasowa zmiana governor’a
Najprostszym sposobem na zmianę governor’a jest bezpośrednia edycja pliku konfiguracji procesora. Możemy to zrobić za pomocą następującego polecenia:
echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
Powyższe polecenie ustawia governor „performance” na wszystkich rdzeniach procesora. Jeśli chcemy ustawić inny governor, np. „powersave”, wystarczy zamienić „performance” na odpowiednią nazwę governor’a.
Stała zmiana governor’a w RedHat
Aby zmienić ustawienia governor’a na stałe, musimy edytować pliki konfiguracyjne. W przypadku RedHat, najprostszym sposobem jest utworzenie skryptu startowego w systemie.
- Utwórz plik: /etc/init.d/set-governor
- Wklej do niego tę zawartość:
#!/bin/bash
for CPUFREQ in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do
echo performance > $CPUFREQ
done - Ustaw odpowiednie uprawnienia („egzekucji”):
chmod +x /etc/init.d/set-governor
- Na koniec dodajemy skrypt do uruchamiania przy starcie systemu:
chkconfig --add set-governor
Dzięki temu ustawienia governor’a będą automatycznie ładowane przy każdym uruchomieniu systemu.
Jak zmienić governor w systemie Debian
Dystrybucje oparte na Debianie, takie jak Debian, Ubuntu czy Linux Mint, również umożliwiają łatwą zmianę governor’a. Proces ten jest podobny do tego w RedHat, ale różni się niektórymi szczegółami.
Tymczasowa zmiana governor’a w Debian
Podobnie jak w RedHat, możemy tymczasowo zmienić governor’a, korzystając z polecenia:
echo ondemand | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
Polecenie to ustawia governor „ondemand” na wszystkich rdzeniach procesora.
Stała zmiana governor’a w Debian
Aby zmienić governor na stałe w systemach Debianowych, możemy skorzystać z pakietu cpufrequtils, który dostarcza narzędzia do zarządzania częstotliwością procesora.
- Sprawdź obecne taktowanie procesora:
cat /proc/cpuinfo | grep Hz
- Instalujemy pakiet cpufrequtils:
apt-get install cpufrequtils
- Edytujemy plik konfiguracyjny znajdujący się w
/etc/default/cpufrequtils
:nano /etc/default/cpufrequtils
- Zmieniamy w treści pliku GOVERNOR na tryb PERFORMANCE:
GOVERNOR="performance"
- Po zapisaniu pliku restartujemy usługę cpufrequtils:
systemctl restart cpufrequtils
- Sprawdź ponownie taktowanie procesora:
cat /proc/cpuinfo | grep Hz
Zmiana powinna być zauważalna. U mnie tak wyglądało taktowanie
przed:

po:

Automatyczne przełączanie governor’a w zależności od źródła zasilania
Jeżeli korzystamy z laptopa, zmiana governor’a w zależności od źródła zasilania może znacząco poprawić zarządzanie energią. Na przykład, możemy ustawić governor „performance”, gdy laptop jest podłączony do zasilania, i „powersave”, gdy działa na baterii.
W systemach Debianowych, jednym z narzędzi, które mogą to ułatwić, jest TLP – menedżer energii dla laptopów.
- Instalujemy TLP:
apt-get install tlp
- Po instalacji możemy skonfigurować TLP, edytując plik
/etc/tlp.conf
, w którym znajdziemy sekcje dotyczące ustawień dla baterii i zasilania sieciowego. Możemy np. ustawić:CPU_SCALING_GOVERNOR_ON_AC=performance
CPU_SCALING_GOVERNOR_ON_BAT=powersave - Po zapisaniu zmian restartujemy TLP:
systemctl restart tlp
TLP automatycznie będzie zmieniać governor w zależności od tego, czy laptop jest podłączony do zasilania, czy działa na baterii.
Monitorowanie i optymalizacja ustawień governor’a
Ustawienie odpowiedniego governor’a to tylko pierwszy krok. Aby w pełni wykorzystać możliwości procesora i oszczędzać energię, warto regularnie monitorować jego obciążenie oraz temperaturę. Istnieje wiele narzędzi do tego celu, takich jak:
- htop: narzędzie do monitorowania procesora w czasie rzeczywistym.
- lm-sensors: monitoruje temperaturę procesora i innych komponentów.
- cpupower: bardziej zaawansowane narzędzie do zarządzania energią procesora.
Dzięki tym narzędziom możemy na bieżąco obserwować, jak zmiana governor’a wpływa na działanie systemu i dostosowywać ustawienia w zależności od potrzeb.