Das powersave-Paket ist für die
Stromsparfunktion beim Batteriebetrieb in Laptops zuständig. Manche seiner
Features sind auch für normale Arbeitsplatzrechner und Server
interessant, z.B. Suspend/Standby, ACPI-Button-Funktionalität und Abstellen
von IDE-Festplatten.
In dem Paket sind alle Power-Management Funktionen Ihres Rechners
zusammengefasst. Es unterstützt Hardware, die ACPI, APM, IDE-Platten und
PowerNow!- bzw.
SpeedStep-Technologien nutzt. Die Funktionalitäten
aus den Paketen apmd, acpid, ospmd und cpufreqd (mittlerweile cpuspeed) sind im Paket powersave zusammengefasst. Daemonen aus diesen
Paketen sollten nicht parallel zum
powersave-Daemon betrieben werden.
Selbst wenn Ihr System nicht alle der oben genannten Hardwareelemente enthält, empfiehlt sich der powersave-Daemon zur Regelung der Stromsparfunktion. ACPI und APM schließen sich gegenseitig aus; Sie können auf Ihrem System immer nur eines der beiden Systeme einsetzen. Eventuelle Änderungen der Hardwarekonfiguration erkennt der Daemon automatisch.
![]() | Informationen zu powersave |
|---|---|
Neben diesem Kapitel sind aktuelle Informationen zum
powersave-Paket auch unter
| |
Generell ist die Konfiguration von powersave über mehrere Dateien verteilt:
/etc/sysconfig/powersave/common
Diese Datei enthält allgemeine Einstellungen für den
powersave-Daemon. Unter anderem kann die Menge
der Debug-Meldungen (in /var/log/messages) über den
Wert der POWERSAVE_DEBUG Variablen erhöht werden.
/etc/sysconfig/powersave/events
Diese Datei wird vom powersave-Daemon
benötigt, um die Bearbeitung auftretender Systemereignisse (engl.
Events) zu garantieren. Einem Ereignis
können externe Aktionen oder Aktionen, die der Daemon selbst abarbeitet,
zugeordnet werden. Von einer externen Aktion spricht man, wenn der Daemon
versucht, eine ausführbare Datei, die in
/usr/lib/powersave/scripts/ liegt, aufzurufen.
Vordefinierte interne Aktionen sind:
ignore
throttle
dethrottle
suspend_to_disk
suspend_to_ram
standby
do_suspend_to_disk
do_suspend_to_ram
do_standby
throttle verlangsamt den Prozessor um den über
POWERSAVE_MAX_THROTTLING festgelegten Wert. Dieser
Wert ist vom aktuell verwendeten Scheme abhängig.
dethrottle setzt den Prozessor wieder auf volle
Leistungsfähigkeit. suspend_to_disk,
suspend_to_ram und standby lösen
das Systemereignis für einen Schlafmodus aus. Die drei Letzteren sind
generell für die Auslösung des Schlafmodus zuständig, sollten aber immer
bestimmten Systemereignissen zugeordnet werden.
Skripte zur Abarbeitung von Ereignissen befinden sich im Verzeichnis
/usr/lib/powersave/scripts:
Benachrichtung über Konsole, X-Fenster oder akustischem Signal über ein eingetretenes Ereignis
Aktivierung des Bildschirmschoners
hilfreich, wenn der Bildschirm nach einem Suspend/Standby verschoben ist
Abspeichern der Einstellung und Ausloggen aus GNOME oder KDE oder anderen Window Managern
Abspeichern der GNOME- oder KDE-Einstellungen und Herunterfahren des Systems
Ist zum Beispiel die Variable
POWERSAVE_EVENT_GLOBAL_SUSPEND2DISK="prepare_suspend_to_disk
do_suspend_to_disk" gesetzt, werden, sobald der Benutzer dem
powersaved den Befehl für den Schlafmodus
Suspend to disk gibt, die beiden aufgeführten Skripten
bzw. Aktionen in der genannten Reihenfolge abgearbeitet. Der Daemon ruft
das externe Skript
/usr/lib/powersave/scripts/prepare_suspend_to_disk
auf. Wenn dieses erfolgreich abgearbeitet ist, führt der Daemon die
interne Aktion do_suspend_to_disk aus und versetzt,
nachdem das Skript kritische Module entladen und Dienste gestoppt hat,
den Rechner endgültig in den Schlafmodus.
Eine Veränderung der Aktionen für das Ereignis eines
Sleep-Buttons könnte wie folgt aussehen:
POWERSAVE_EVENT_BUTTON_SLEEP="notify suspend_to_disk"
In diesem Fall wird der Benutzer durch das externe Skript
notify über den Suspend informiert. Anschließend wird
das Ereignis POWERSAVE_EVENT_GLOBAL_SUSPEND2DISK
erzeugt, das die Ausführung der oben beschriebenen Aktionen zur Folge
hat und einen sicheren Suspend-Mode des Systems garantiert.
Das Skript notify kann über die Variable
POWERSAVE_NOTIFY_METHOD in
/etc/sysconfig/powersave/common angepasst werden.
/etc/sysconfig/powersave/cpufreqDie Datei enthält Variablen zur Optimierung der dynamischen CPU-Frequenzeinstellungen
/etc/sysconfig/powersave/batteryEnthält Batterielimits und andere batteriespezifischen Einstellungen.
/etc/sysconfig/powersave/sleepIn dieser Datei können Sie festlegen, welche Module entladen und welche Dienste vor einem Schlafmodus gestoppt werden sollen. Diese werden dann beim Wiederherstellen des Systems wieder geladen und gestartet. Außerdem können Sie einen ausgelösten Schlafmodus verzögern (um eventuell noch Dateien sichern zu können). Die Voreinstellungen betreffen in der Hauptsache USB- und PCMCIA-Module. Schlagen der Suspend bzw. Standby fehl, waren meistens ganz bestimmte Module die Auslöser. Unter Abschnitt 16.5.4, „Mögliche Probleme und deren Lösungen“ finden Sie weitere Hinweise, um den Fehler einzugrenzen.
/etc/sysconfig/powersave/thermal
Hier wird die Kontrolle für die Kühlung und Wärmeregulierung
eingeschaltet. Details zu diesem Thema finden Sie in der Datei
/usr/share/doc/packages/powersave/README.thermal.
/etc/sysconfig/powersave/scheme_*Dies sind die verschiedenen Schemes, die die Anpassung des Stromverbrauchs an bestimmte Einsatzszenarien regeln. Einige sind vorkonfiguriert und ohne weitere Änderungen einsatzbereit. Sie können auch eigene Profile hier ablegen.
Die Schlafmodi sind standardmäßig deaktiviert, da sie auf manchen Rechnern noch fehlschlagen. Es gibt grundsätzlich drei ACPI- und zwei APM-Schlafmodi:
Speichert den kompletten Speicherinhalt auf die Festplatte. Der Rechner schaltet sich komplett ab und verbraucht keinerlei Strom.
Speichert die Zustände sämtlicher Geräte in den Hauptspeicher. Nur noch der Hauptspeicher wird mit Strom versorgt.
Schaltet herstellerabhängig einige Geräte ab.
Stellen Sie sicher, dass die folgenden Standardoptionen zur korrekten
Verarbeitung von Suspend/Standby bzw. Resume in der Datei
/etc/sysconfig/powersave/events gesetzt sind.
(voreingestellt nach der Installation von SUSE LINUX):
POWERSAVE_EVENT_GLOBAL_SUSPEND2DISK=
"prepare_suspend_to_disk do_suspend_to_disk"
POWERSAVE_EVENT_GLOBAL_SUSPEND2RAM=
"prepare_suspend_to_ram do_suspend_to_ram"
POWERSAVE_EVENT_GLOBAL_STANDBY=
"prepare_standby do_standby"
POWERSAVE_EVENT_GLOBAL_RESUME_SUSPEND2DISK=
"restore_after_suspend_to_disk"
POWERSAVE_EVENT_GLOBAL_RESUME_SUSPEND2RAM=
"restore_after_suspend_to_ram"
POWERSAVE_EVENT_GLOBAL_RESUME_STANDBY=
"restore_after_standby"
Sie können in der Datei
/etc/sysconfig/powersave/battery drei Ladezustände
der Batterie (in Prozent) festlegen, bei denen das System warnt
bzw. bestimmte Aktionen ausführt.
POWERSAVED_BATTERY_WARNING=20 POWERSAVED_BATTERY_LOW=10 POWERSAVED_BATTERY_CRITICAL=5
Welche Aktionen/Skripte ausgeführt werden, sobald bestimmte Ladezustände
unterschritten werden, ist in der Konfigurationsdatei
/etc/sysconfig/powersave/events festgelegt. Sie können
die Standardaktionen für Buttons wie unter Abschnitt 16.5.1, „Konfiguration des powersave-Pakets“
beschrieben ändern.
POWERSAVE_EVENT_BATTERY_NORMAL="ignore" POWERSAVE_EVENT_BATTERY_WARNING="notify" POWERSAVE_EVENT_BATTERY_LOW="notify" POWERSAVE_EVENT_BATTERY_CRITICAL="wm_shutdown"
Sie können das Verhalten des Systems von seiner Stromversorgung abhängig machen. So sollte der Stromverbrauch des Systems vermindert werden, wenn das System vom Netz getrennt und per Batterie betrieben wird. Umgekehrt sollte die Performance des Systems automatisch wieder steigen, sobald es sich wieder am Netz befindet. Konkret beeinflussbar sind die CPU-Frequenz, die Stromsparfunktion von IDE-Platten sowie einige andere Parameter.
In /etc/sysconfig/powersave/events ist die Ausführung
bestimmter Aktionen bei Trennung/Anbindung vom Stromnetz festgelegt.
In /etc/sysconfig/powersave/common wählen Sie die zu
verwendenden Szenarien (genannt Schemes) aus:
POWERSAVE_AC_SCHEME="performance" POWERSAVE_BATTERY_SCHEME="powersave"
Die Schemes sind in Dateien unter /etc/sysconfig/powersave abgelegt. Ihr Name
setzt sich zusammen aus: scheme_<Name des
Schemes>. Im Beispiel werden zwei Schemes referenziert:
scheme_performance und
scheme_powersave. Vorkonfiguriert werden
performance, powersave,
presentation und acoustic
ausgeliefert. Sie können mittels dem YaST Power-Management Modul (siehe
Abschnitt 16.6, „Das YaST Power-Management Modul“) jederzeit existierende
Schemata bearbeiten, neue anlegen, bestehende löschen oder deren
Zuordnung zum Stromversorgungszustand ändern.
Sollten Sie ACPI verwenden, können Sie die Reaktion Ihres Systems auf die
ACPI-Buttons (Power, Sleep,
Deckel offen, Deckel geschlossen) steuern.
In /etc/sysconfig/powersave/events ist die Ausführung
der entsprechenden Aktionen festgelegt. Nähere Erläuterungen zu den einzelnen
Optionen entnehmen Sie bitte dieser Konfigurationsdatei.
Wird der Power-Button gedrückt, reagiert das System mit dem Herunterfahren des jeweiligen Windowmanagers (KDE, GNOME, fvwm...).
Wird der Sleep-Button gedrückt, fällt das System in den Suspend-To-Disk Modus.
Beim Öffnen des Deckels passiert nichts.
Wird der Deckel geschlossen, aktiviert sich der Bildschirmschoner.
Wird der Prozessor für eine bestimmte Zeit nicht über ein festgelegtes
Maß hinaus beansprucht, können Sie seine Leistung zusätzlich drosseln. Legen
Sie mit POWERSAVED_CPU_LOW_LIMIT den Level fest, bei
dessen dauerhafter Unterschreitung — die Zeitspanne legen Sie in
POWERSAVED_CPU_IDLE_TIMEOUT fest — die CPU
heruntergeregelt wird.
Sämtliche Fehler- und Warnmeldungen werden in der Datei
/var/log/messages protokolliert. Ergibt sich hier auf
den ersten Blick kein Hinweis, weisen Sie
powersave in der Datei
/etc/sysconfig/powersave/common über die Variable
DEBUG an, seine Meldungen etwas detaillierter zu halten.
Erhöhen Sie den Variablenwert hierzu auf 7 oder gar
15 und starten Sie den Daemon neu. Mithilfe der jetzt
ausführlicheren Fehlermeldungen in /var/log/messages
sollten Sie in der Lage sein, den Fehler einzugrenzen. Die folgenden
Abschnitte decken die häufigsten Probleme mit powersave ab.
Sollten Sie mit ACPI Probleme bekommen, durchsuchen Sie mit folgendem
Befehl die Ausgabe von dmesg nach ACPI-spezifischen
Meldungen: dmesg|grep -i acpi.
Um den Fehler zu beheben, kann ein BIOS-Update notwendig werden. Besuchen
Sie daher die Homepage Ihres Laptopherstellers, suchen Sie nach einer
aktuelleren BIOS-Version und spielen Sie diese ein. Geben Sie an den
Hersteller Ihres Systems weiter, dass er sich an die aktuellste
ACPI-Spezifikation halten sollte.
Treten die Fehler nach dem BIOS-Update immer noch auf, suchen Sie auf den folgenden Webseiten nach einer aktuelleren DSDT für Ihr System, um die fehlerhafte DSDT-Tabelle in Ihrem BIOS zu ersetzen:
Laden Sie die für Ihr System passende DSDT von http://acpi.sourceforge.net/dsdt/tables/ herunter. Stellen Sie
sicher, dass die Datei entzippt und kompiliert ist (zu erkennen an der
Dateiendung .aml (ACPI Machine Language)). Ist dies
der Fall, fahren Sie mit Punkt 3 fort.
Ist die Dateiendung der heruntergeladenen Tabelle .asl
(ACPI Source Language), muss sie mit Hilfe von
iasl aus dem Paket pmtools kompiliert werden. Rufen Sie
hierzu iasl -sa
file.asl. Die aktuellste Version von
iasl (Intel ACPI Compiler) finden Sie
außerdem unter
http://developer.intel.com/technology/iapc/acpi/downloads.htm.
Kopieren Sie die Datei DSDT.aml an eine beliebige
Stelle (wir empfehlen /etc/DSDT.aml). Editieren Sie
/etc/sysconfig/kernel und passen Sie den Pfad zur
DSDT-Datei entsprechend an. Starten Sie mkinitrd
(Paket mkinitrd). Wann immer
Sie Ihren Kernel deinstallieren und mkinitrd
verwenden, um eine initrd zu erstellen, wird die
angepasste DSDT eingebunden und zur Bootzeit geladen.
Überprüfen Sie anhand der Kernelquellen (kernel-source), ob Ihr Prozessor
unterstützt wird und ob Sie eventuell ein bestimmtes Kernelmodul oder eine
bestimmte Moduloption verwenden müssen, um CPU-Frequency zu aktivieren.
Diese Informationen finden Sie unter
/usr/src/linux/Documentation/cpu-freq/*. Wenn ein
bestimmtes Modul oder eine bestimmte Option nötig sind, konfigurieren Sie
diese in der Datei /etc/sysconfig/powersave/cpufreq
über die Variablen CPUFREQD_MODULE und
CPUFREQD_MODULE_OPTS.
Es sind mehrere, mit dem Kernel zusammenhängende Probleme bekannt, die auf ACPI Systemen Suspend/Standby verhindern:
Systeme mit mehr als 1 GB RAM unterstützen im Moment (noch) kein Suspend
Multiprozessorsysteme oder Systeme mit einem P4-Prozessor (mit Hyperthreading) unterstützen momentan kein Suspend.
Der Fehler kann auch in einer fehlerhaften Implementierung Ihrer DSDT (BIOS) liegen. In diesem Fall spielen Sie eine neue DSDT ein.
Auf ACPI- und APM-Systemen gilt Folgendes:
Sobald Ihr System versucht, fehlerhafte Module zu entladen, hängt sich der
Rechner auf oder das Suspendereignis wird nicht getriggert. Der
umgekehrte Weg ist auch möglich, wenn Sie Module/Dienste nicht entladen
oder stoppen, die einen erfolgreichen Suspend verhindern. In beiden Fällen
sollten Sie versuchen, das fehlerhafte Modul, das den Schlafmodus
verhindert hat, zu lokalisieren. Sehr hilfreich sind die vom
powersave Daemon angelegten Log Dateien unter
/var/log/Schlafmodus. Wenn der Rechner erst
gar nicht in den Schlafmodus geht, ist der Auslöser dafür im zuletzt zu
entladenden Modul zu suchen. Durch Manipulation der folgenden Einstellungen
unter /etc/sysconfig/powersave/sleep können Sie
problematische Module vor dem Suspend/Standby entladen.
POWERSAVE_UNLOAD_MODULES_BEFORE_SUSPEND2DISK="" POWERSAVE_UNLOAD_MODULES_BEFORE_SUSPEND2RAM="" POWERSAVE_UNLOAD_MODULES_BEFORE_STANDBY="" POWERSAVE_SUSPEND2DISK_RESTART_SERVICES="" POWERSAVE_SUSPEND2RAM_RESTART_SERVICES="" POWERSAVE_STANDBY_RESTART_SERVICES=""
Verwenden Sie Suspend/Standby in wechselnden Netzwerkumgebungen oder in
Verbindung mit entfernt eingebundenen Dateisystemen (z.B. Samba, NIS), dann benutzen Sie am besten den
automounter, um diese zu mounten oder fügen Sie
die entsprechenden Dienste (z.B. smbfs oder
nfs) in oben genannte Variablen ein. Wenn vor dem
Suspend/Standby auf ein entfernt eingebundenes Dateisystem mit einem
Programm zugegriffen wird, kann der Dienst nicht korrekt gestoppt und das
Dateisystem nicht richtig freigegeben werden. Nach dem Wiederherstellen des
Systems ist eventuell das Dateisystem korrupt und muss erneut eingebunden
werden.
Unter ACPI kann das Betriebssystem vom BIOS eine Meldung über das
Unterschreiten eines bestimmten Ladeniveaus der Batterie anfordern. Der
Vorteil dieser Methode ist, dass nicht permanent der Batteriezustand
ausgelesen werden muss, was die Performance des Rechners schwächen
würde. Trotzdem kann es vorkommen, dass diese Benachrichtigung laut BIOS
zwar funktionieren sollte, tatsächlich aber nicht stattfindet, selbst bei
Unterschreitung des Limits nicht.
Sollten Sie dies auf Ihrem System beobachten, setzen Sie in der Datei
/etc/sysconfig/powersave/battery die Variable
POWERSAVED_FORCE_BATTERY_POLLING auf
yes, um das Auslesen des Batteriezustands zu
erzwingen.