Debian CPUFreq: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
|||
Zeile 181: | Zeile 181: | ||
/etc/init.d/cpupowerd start | /etc/init.d/cpupowerd start | ||
Daemon beim Rechnerstart aktivieren: | Daemon beim Rechnerstart aktivieren: | ||
vi /etc/init.d/cpupowerd | |||
Folgende Zeilen am Dateianfang ab Zeile2 einfügen: | |||
### BEGIN INIT INFO | |||
# Provides: cpupowerd | |||
# Required-Start: $local_fs $remote_fs | |||
# Required-Stop: $local_fs $remote_fs | |||
# Default-Start: 2 3 4 5 | |||
# Default-Stop: 0 1 6 | |||
# Short-Description: Start/stop cpupowerd | |||
# Description: Start/stop cpupowerd | |||
### END INIT INFO | |||
update-rc.d cpupowerd defaults 99 01 | update-rc.d cpupowerd defaults 99 01 |
Version vom 18. Dezember 2010, 15:44 Uhr
Einleitung
Wenn unter Debian ein Desktop installiert ist, wird automatisch ein CPU-Powermanager eingerichtet, der die Frequenz der CPU der aktuellen CPU-Last adynamisch anpasst. Beim reinen Serverbetrieb ist dies nicht der Fall. Um dennoch den Stromverbrauch zu senken, kann das Powermanagement relativ einfach nachträglich aktiviert werden.
Als weitere Sparmöglichkeit kann die Spannung der CPU niedriger gewählt werden (Undervolting). Die CPU-Hersteller wählen Spannungen für die CPU's, die garantiert mit jeder CPU funktionieren. Aufgrund von Fertigungstoleranzen arbeiten aber die meisten CPU's auch noch stabil und zuverlässig mit niedriger Spannung. Absenken der Spannung kann den Stromverbrauch nochmals deutlich senken, da die Leistung quadratisch zur Spannung steigt bzw. fällt (P=U^2/R).
Voraussetzung (Apassung der CPU-Frequenz):
- AMD-CPU mit Cool&Quiet
- Intel CPU, die EIST (Enhanced Intel Speedstep Technology) unterstützt
Voraussetzung (Undervolting):
- AMD K8-CPU mit Cool&Quiet
- C-Compiler installiert
Anpassung CPU Frequenz
Installation
Cool&Quiet bei AMD CPU im Bios aktivieren. EIST bei Intel CPu im Bios aktivieren
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:
cpufreq-set -g ondemand
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. ondemand (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.
Undervolting
Folgende Anleitung funktioniert ausschließlich mit AMD K8-CPU's. Derzeit kein Intel Support. Dies ist in einer der folgenden Versionen des verwendeten Tools geplant.
Installation
- Cool&Quiet im Bios aktivieren
- CPU-Spannung auf Auto oder ähnliches im Bios einstellen. Die Vorgabe einer bestimmten Spannung im Bios verhindert die dynamische Anpassung mittels Daemon unter Linux.
Kernel-Header-Files des aktuellen Kernels installieren:
apt-get install build-essential linux-headers-$(uname -r)
Für den Stresstest (check ob CPU stabil läuft) kommt mprime zum Einsatz.
cd /usr/local/src mkdir mprime cd mprime
32Bit Linux:
wget http://mersenneforum.org/gimps/mprime259.tar.gz tar xvf mprime259.tar.gz
64Bit Linux:
wget http://mersenneforum.org/gimps/mprime259-linux64.tar.gz tar xvf mprime259-linux64.tar.gz
mprime verschieben und Download-Ordner löschen:
mv mprime /usr/local/bin/mprime cd .. rm -R mprime
CPUPowerD herunterladen und installieren:
cd /usr/local/src wget http://sourceforge.net/projects/cpupowerd/files/cpupowerd/cpupowerd-0.2.1.tar.gz tar xvf cpupowerd-0.2.1.tar.gz cd cpupowerd-0.2.1/src make make install
Kernelmodule
modprobe cpufreq_userspace modprobe msr
Funktionalität testen
cpupowerd --status eingeben
Es werden einige Informationen zur CPU - insbesondere alle möglichen Taktstufen, aktuelle Taktfrequenz und aktuelle Spannung ausgegeben.
Für die folgenden Schritte wird davon ausgegangen, dass die CPU die Taktstufen 1000, 1800, 2000 und 2200 MHz unterstützt (siehe cpupowerd --status). Die Stufen in den folgenden Schritten evtl. den eigenen Stufen anpassen.
Einstellen der maximalen CPU-Frequenz: 2200 MHz (der Befehl sollte lediglich eine Warnung, keine Fehler ausgeben):
cpupowerd -F "0|2200"
Überprüfen, ob dies erfolgreich war:
cpupowerd --status
Dies Ausgabe sollte nun die Maximalfrequenz 2200 MHz enthalten. Die aktuell eingestellte Spannung (z.B. 1,3000V) für die folgenden Schritte merken.
Verringern der Spannung: Das Verringern der Spannung ist ein iterativer Prozess. Die Spannung sollte nur in kleienn Schritten verringert werden und anschließend die Stabilität mit mprime überprüft werden. Sobald die Stabilität leidet, solte die Spannung um 1 oder 2 Schritte erhöht werden.
Spannung verringern (jeweils 0.125V bzw. 0.25V):
cpupowerd -V "0|1.2500"
Stabilität testen:
mprime -t
Diese beiden Schritte wiederholen, bis die CPU nicht mehr stabil läuft. Die letzte stabil laufende Einstellung wieder herstellen und mit mprime eine deutlich längere Zeit testen, ob diese Einstellung wirklich stabil funktioniert.
Wenn auf diese Weise die minimale Spannung ermittelt wurde, diese notieren. Anschließend die nächste Frequenz (hier: 2000 MHz) einstellen (cpupowerd -F "0|2200") und schrittweise die minimale Spannung ermitteln. Auf diese Art und Weise die minimale Spannung aller Taktstufen ermitteln und notieren.
Daemon permanent aktivieren
Zunächst das Konfigfile anlegen, das alle möglichen Taktstufen incl. zugeh. Spannungen enthält:
cpupowerd -a /etc/cpupowerd.conf
Konfigfile bearbeiten:
vi /etc/cpupowerd.conf
Die eben ermittelten minimalen Spannungen im Configfile checken und bei Bedarf anpassen.
Nun wird CPUPowerd im Vordergrund gestartet (Keine Rückkehr zum Prompt). Dabei gibt CPUPowerd evtl. debugging Informationen an der Console aus, während die CPU-Frequenz und -Spannung abhängig von der Last geregelt wird.
cpupowerd -c /etc/cpupowerd.conf
CpuPowerd bringt ein Script mit, das abwechselnd CPU-Last und Pausen erzeugt, um das korrekte Hoch-/Runtertakten mit den verringerten Spannungen zu testen. Ein zweites Terminal/Putty-Fenster öffnen und createload.sh starten:
/usr/local/src/cpupowerd-0.2.1/tools/createload.sh
Ein drittes Terminal/Puttyfenster starten und mit folgendem Befehl das hoch- und Runtertakten der CPU beobachten:
watch cpupowerd --status
Das Scritp createload.sh sollte mindestens 15 Minuten lang laufen, ohne dass es zu Abstürzen kommt. Anschließend das Script kann mit STRG-C abbrechen. Schließlich cpupowerd im ersten Terminalfenster mit STRG-C ebenfalls abbrechen.
Daemon einrichten:
cp /usr/local/src/cpupowerd-0.2.1/tools/cpupowerd.sh /etc/init.d/cpupowerd /etc/init.d/cpupowerd start
Daemon beim Rechnerstart aktivieren:
vi /etc/init.d/cpupowerd
Folgende Zeilen am Dateianfang ab Zeile2 einfügen:
### BEGIN INIT INFO # Provides: cpupowerd # Required-Start: $local_fs $remote_fs # Required-Stop: $local_fs $remote_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start/stop cpupowerd # Description: Start/stop cpupowerd ### END INIT INFO
update-rc.d cpupowerd defaults 99 01