Debian CPUFreq
Einleitung
Wenn unter Debian ein Desktop installiert ist, wird automatisch ein CPU-Powermanager eingerichtet. Beim reinen Serverbetrieb ist dies nicht der Fall. Um dennoch den Stromverbrauch zu senken, kann das Powermanagement relativ einfach nachträglich aktiviert werden.
Voraussetzung:
- AMD-CPU mit Cool&Quiet
- Intel CPU, die EIST (Enhanced Intel Speedstep Technology) unterstützt
Installation
apt-get install cpufrequtils
Funktionalität testen
Damit die CPU-Frequenz vom Kernel geändert werden kann, ist ein entsprechender Treiber (Modul) und ein sog. Governor nötig, der die Anpassung vornimmt.
Treiber auswählen
Abhängig vom verwendeten Processor sollte einer der folgenden Treiber ausgewählt werden:
- powernow_k6
- AMD K6 Prozessor
- powernow_k7
- AMD K7 Prozessor (Athlon, Duron, Sempron 32 bits)
- powernow_k8
- AMD K8 Prozessor (Athlon 64, Athlon 64 X2, Turion 64, Sempron 64, Opteron 64)
- p4_clockmod
- Pentium 4, Celeron D, Pentium D, Celeron M
- speedstep_centrino
- Pentium M, Core Duo, Core 2 Duo
- acpi_cpufreq
- Genereller Treiber, der im Zweifel getestet werden kann
Treiber aktivieren:
- für aktuelle AMD-CPU
modprobe powernow_k8
- für aktuelle Intel-CPU
modprobe speedstep_centrino
Falls Ein Fehler "FATAL: Error inserting ... No such device" ausgegeben wird, sollte der Gernerische ACPI-Treiber versucht werden:
modprobe acpi_cpufreq
Wenn auch dabei ein Fehler auftritt, unterstützt die verwendetet CPU vermutlich kein Power-Management. Die folgenden Schritte sind damit sinnlos.
Ausgabe der möglichen CPU-Frequenzstufen:
cpufreq-info
Für jeden Core des verwendeten Prozessor werden zahlreiche Informationen wie, z.B. vorhandene Frequenzstufen und die aktuell verwendete, ausgegeben. Nachdem noch kein Powermanagement konfiguriert wurde, wird die maximal mögliche Frequenz verwendet.
Governor konfigurieren
Standardmäßig wird der Governor Performance verwendet. Dieser taktet die CPU permanent mit maximalem Takt. Folgende Governor sind verfügbar:
- performance (cpufreq_performance)
- Setzt permanent die maximal mögliche CPu Frequenz :
- powersave (cpufreq_powersave)
- Das Gegenteil von performance. Wählt permanent die niedrigste Taktstufe aus.
- ondemand (cpufreq_ondemand)
- Takt wird dynamisch, abhänging von der CPU-Last, eingestellt
- conservative (cpufreq_conservative)
- Ähnlich wie ondemand, aber weniger aggressiv als dieser
Gewünschten Governor installieren (auch mehrere möglich) z.B. ondemand:
modprobe cpufreq_ondemand
Selektiveren des zu verwendenden Governor:
echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
Falls die CPU mehrere Cores enthält (Dual Core):
echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor echo ondemand > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor
Falls die CPU mehrere Cores enthält (Quad Core):
echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor echo ondemand > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor echo ondemand > /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor echo ondemand > /sys/devices/system/cpu/cpu3/cpufreq/scaling_governor
Takt und Governor überprüfen:
cpufreq-info
Als Governor sollte nun ondemand für alle CPU's / Cores ausgegeben werden. Die CPU sollte nun auf der geringsten Taktstufe betrieben werden, falls die CPU-Last relativ gering ist.
CPU Powermanagement permanent aktivieren
Nachdem die Funktionsweise des CPU Powermanagements im vorhergehenden Kapitel verifiziert wurde kann nun das Powermanagement permanent (nach dem Reboot) aktiviert werden.
Kernel Module
vi /etc/modules
- Das Treibermodul ans Ende anhängen. Z.b. powernow_k8 (siehe oben)
- Den/die zu ladenden Governors anhängen, z.B. powernow_k8 (siehe oben)
Governor
Mit Hilfe der Datei /etc/default/cpufrequtils kann der standardmäßig anzuwendende Governor ausgewählt werden. Dafür wurde eine Vorlage bei der Installation angelegt. Diese muß zunächst nach /etc/default/cpufrequtils kopiert werden.
cp /usr/share/doc/cpufrequtils/examples/cpufrequtils.sample /etc/default/cpufrequtils
File anpassen:
vi /etc/default/cpufrequtils
Folgende Änderungen vornehmen, um den Governor ondemand auszuwählen:
ENABLE="true" GOVERNOR="ondemand" MAX_SPEED=0 MIN_SPEED=0
Funktionscheck
Rechner neu starten. Mit
watch cpufreq-info
Prüfen:
- der Governor wurde korrekt gesetzt
- CPU sollte auf niedrigster Taktstufe laufen
- CPU takt steigt, falls CPU-Last erzeugt wird
Watch-Befehl mit STRG-C beenden.