Debian GNU/Linux auf dem IBM Thinkpad R50p

« zurück (ACPI, Suspend)Inhalt(Sondertasten) weiter »

Strom sparen (cpufreqd, slocate)

Die Taktfrequenz der CPU ist zwar ausschlaggebend für die Geschwindigkeit des Gesammtsystems, bei der täglichen normalen Nutzung meines R50p ist mir aber kein merklicher Unterschied zwischen 600 Mhz und den möglichen 1700 Mhz aufgefallen. :shocked:

Das könnte aber auch an der Verwendung des CPU Frequency Daemon (cpufreqd) liegen, der je nach augenblicklich benötigter Systemleistung die Taktung der CPU anpasst. Hierzu dienen sogenannte Governors, die eine Art Taktpolitik darstellen.

In meinem Kernel sind die Governors in Module ausgelagert. Will man sie verwenden, müssen die Module vorher geladen werden, deshalb trägt man sie am besten in die Datei /etc/modules ein:

# /etc/modules

[...]

# >>> nur ein Modul aktivieren!
#acpi-cpufreq
speedstep-centrino
# <<<

# Governor Module
cpufreq_userspace
cpufreq_ondemand
cpufreq_conservative

[...]

Die Liste der verfügbaren Governors kann mit Auslesen des Wertes scaling_available_governors abgefragt werden:

$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
conservative ondemand userspace performance

Der Defaultwert ist "performance", d.h. die CPU wird mit der höchstmöglichen Frequenz getaktet. Wie bereits erwähnt, ist das aber gar nicht nötig und erhitzt einerseits nur die CPU, andererseits senkt es die Akkulaufzeit.

Im Gegensatz dazu steht der Governor "conservative", der die CPU mit der niedrigstmöglichen Frequenz taktet. Bei dem Pentium M aus dem R50p sind das 600 MHz.

Der Governor "userspace" ist für die Taktung durch andere Programme und "ondemand" stellt Rechenleistung dann bereit, wenn man sie benötigt.

Im Folgenden nun auszugsweise Definitionen und Regelsätze für die Konfigurationsdatei /etc/cpufreqd.conf.

Definition eines konservativen Default-Modes mit der ID "Conservative High":

[Profile]
name=Conservative High
minfreq=33%
maxfreq=100%
policy=conservative
[/Profile]

Die Default-Regel für den eben definierten Modus lautet dann wie folgt:

[Rule]
name=AC Rule
ac=on                    # (on/off)
profile=Conservative High
[/Rule]

Sobald das Notebook an die Stromversorgung angeschlossen ist, wird also in diesem Modus gearbeitet. Im Falle des Akkubetriebs soll ein anderer Modus verwendet werden, ebenso falls die CPU zu heiß ist und so weiter...

Der Paket-Maintainer hat bereits eine Menge Beispiele implementiert, die man entsprechend anpassen kann und somit gehe ich hier nicht weiter ins Detail. Alternativ kann man hier auch meine Konfigurationsdatei für den cpufreqd runterladen: cpufreqd.conf.

slocate hilft Zeit und Strom sparen

Wer öfters an der Konsole arbeitet und nach Dateien sucht, hat sicher schon das Werkzeug locate entdeckt. In der Standardkonfiguration wird einmal am Tag die Festplatte katalogisiert und in einer Datenbank gespeichert, die dann bei Suchanfragen wie z. B.

$ locate datei.txt

anstelle des Dateisystems bemüht wird. Das spart Zeit und auch Strom im Akkubetrieb, da die Festplatte nicht so sehr in Mitleidenschaft gezogen werden muss. Das Tool locate hat aber einen entscheidenden Nachteil: Die Katalogisierung erfolgt normalerweise als nicht-privilegierter Benutzer, der auf die interessanten Verzeichnisse (wie z. B. das eigene Heimverzeichnis) keinen Zugriff hat. Somit können sich darin befindende Dateien auch nicht mit locate gefunden werden.

Diesen Nachteil behebt das Tool slocate (s = secure, sicher), bei dem die Aktualisierung der Datenbank als root ausgeführt wird. Jetzt kann man natürlich bei einem Mehrbenutzerbetriebssystem gleich an Schutz der Privatsphäre und Sicherheitsaspekte denken. Im Gegensatz zu locate wird bei slocate bei einer Suchanfrage geprüft, ob der Benutzer ausreichende Rechte hat, um die Datei lesen zu können. Es werden also nur die Dateien und Verzeichnisse angezeigt, die der Benutzer auch mit dem Kommando find auffinden kann.

Das Aktualisieren der Datenbank einmal am Tag sollte natürlich nicht unbedingt während einer "uneingestöpselten" Sitzung passieren, d. h. es muss verhindert werden, dass die Datenbank bei Akkubetrieb aktualisiert wird. Hierzu muss man die Datei slocate im Verzeichnis /etc/cron.daily leicht modifizieren. Man kapselt einfach den kompletten Ablauf mit einer Abfrage, ob sich das System gerade im Akkubetrieb befindet und startet die Aktualisierung nur, wenn dies nicht der Fall ist. Das kann dann in etwa so aussehen:

#! /bin/sh

# do not execute if on battery power
if [ `grep on-line /proc/acpi/ac_adapter/AC/state | wc -l` -ne 0 ]
then

[... Inhalt der Datei /etc/cron.daily/slocate ...]

fi   # end not on battery power

Jetzt wird die slocate-Datenbank nur noch aktualisiert, wenn das Notebook mit dem Netzteil am Stromnetz angeschlossen ist.

« zurück (ACPI, Suspend)Inhalt(Sondertasten) weiter »