Debian CPUFreq: Unterschied zwischen den Versionen
Erich (Diskussion | Beiträge) (Die Seite wurde neu angelegt: ==Einleitung== Wenn unter Debian ein Desktop installiert ist, wird automatisch ein CPU-Powermanager eingerichtet. Beim reinen Serverbetrieb ist dies nicht der Fall. Um ...) |
Erich (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
(17 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
==Einleitung== | ==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. | 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. | ||
Voraussetzung: | 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 | * AMD-CPU mit Cool&Quiet | ||
* Intel CPU, die EIST (Enhanced Intel Speedstep Technology) unterstützt | * Intel CPU, die EIST (Enhanced Intel Speedstep Technology) unterstützt | ||
Voraussetzung (Undervolting): | |||
* AMD K8-CPU mit Cool&Quiet | |||
* C-Compiler installiert | |||
==Installation== | ==Anpassung CPU Frequenz== | ||
===Installation=== | |||
Cool&Quiet bei AMD CPU im Bios aktivieren. | |||
EIST bei Intel CPu im Bios aktivieren | |||
apt-get install cpufrequtils | apt-get install cpufrequtils | ||
==Funktionalität testen== | ===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. | 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=== | ====Treiber auswählen==== | ||
Abhängig vom verwendeten Processor sollte einer der folgenden Treiber ausgewählt werden: | Abhängig vom verwendeten Processor sollte einer der folgenden Treiber ausgewählt werden: | ||
;powernow_k6: AMD K6 Prozessor | ;powernow_k6: AMD K6 Prozessor | ||
Zeile 39: | Zeile 48: | ||
===Governor konfigurieren=== | ====Governor konfigurieren==== | ||
Standardmäßig wird der Governor Performance verwendet. Dieser taktet die CPU permanent mit maximalem Takt. Folgende Governor sind verfügbar: | 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 : | ;performance (cpufreq_performance): Setzt permanent die maximal mögliche CPu Frequenz : | ||
Zeile 50: | Zeile 59: | ||
Selektiveren des zu verwendenden Governor: | Selektiveren des zu verwendenden Governor: | ||
cpufreq-set -g ondemand | |||
Takt und Governor überprüfen: | Takt und Governor überprüfen: | ||
cpufreq-info | cpufreq-info | ||
Zeile 65: | Zeile 65: | ||
==CPU Powermanagement permanent aktivieren== | ===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. | Nachdem die Funktionsweise des CPU Powermanagements im vorhergehenden Kapitel verifiziert wurde kann nun das Powermanagement permanent (nach dem Reboot) aktiviert werden. | ||
===Kernel Module=== | ====Kernel Module==== | ||
vi /etc/modules | vi /etc/modules | ||
* Das Treibermodul ans Ende anhängen. Z.b. '''powernow_k8''' (siehe oben) | * Das Treibermodul ans Ende anhängen. Z.b. '''powernow_k8''' (siehe oben) | ||
* Den/die zu ladenden Governors anhängen, z.B. ''''' | * Den/die zu ladenden Governors anhängen, z.B. '''''ondemand''''' (siehe oben) | ||
====Governor==== | |||
===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. | 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 | cp /usr/share/doc/cpufrequtils/examples/cpufrequtils.sample /etc/default/cpufrequtils | ||
Zeile 85: | Zeile 84: | ||
MIN_SPEED=0 | MIN_SPEED=0 | ||
===Funktionscheck=== | ====Funktionscheck==== | ||
Rechner neu starten. Mit | Rechner neu starten. Mit | ||
watch cpufreq-info | watch cpufreq-info | ||
Zeile 93: | Zeile 92: | ||
* CPU takt steigt, falls CPU-Last erzeugt wird | * CPU takt steigt, falls CPU-Last erzeugt wird | ||
Watch-Befehl mit STRG-C beenden. | 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 libcurl3 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/0.2.1/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. | |||
{{Hinweis| | |||
mprime lastet sämtliche Cores einer CPU zu 100% aus und ermöglicht somit einen idealen Test der Stabilität einer CPU. Er soltle jeweils einige Minuten (mindestens 10) laufen. Abgebrochen wird der Test mit '''STRG-C'''}} | |||
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 |
Aktuelle Version vom 28. Mai 2011, 21:46 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 libcurl3 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/0.2.1/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