16.5. Das powersave-Paket

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.

[Important]Informationen zu powersave

Neben diesem Kapitel sind aktuelle Informationen zum powersave-Paket auch unter /usr/share/doc/packages/powersave verfügbar.

16.5.1. Konfiguration des powersave-Pakets

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:

notify

Benachrichtung über Konsole, X-Fenster oder akustischem Signal über ein eingetretenes Ereignis

screen_saver

Aktivierung des Bildschirmschoners

switch_vt

hilfreich, wenn der Bildschirm nach einem Suspend/Standby verschoben ist

wm_logout

Abspeichern der Einstellung und Ausloggen aus GNOME oder KDE oder anderen Window Managern

wm_shutdown

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/cpufreq

Die Datei enthält Variablen zur Optimierung der dynamischen CPU-Frequenzeinstellungen

/etc/sysconfig/powersave/battery

Enthält Batterielimits und andere batteriespezifischen Einstellungen.

/etc/sysconfig/powersave/sleep

In 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.

16.5.2. Konfiguration von APM und ACPI

16.5.2.1. Suspend und Standby

Die Schlafmodi sind standardmäßig deaktiviert, da sie auf manchen Rechnern noch fehlschlagen. Es gibt grundsätzlich drei ACPI- und zwei APM-Schlafmodi:

Suspend to Disk (ACPI S4, APM suspend)

Speichert den kompletten Speicherinhalt auf die Festplatte. Der Rechner schaltet sich komplett ab und verbraucht keinerlei Strom.

Suspend to RAM (ACPI S3, APM suspend)

Speichert die Zustände sämtlicher Geräte in den Hauptspeicher. Nur noch der Hauptspeicher wird mit Strom versorgt.

Standby (ACPI S1, APM standby)

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"

16.5.2.2. Benutzerdefinierte Batteriezustände

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"

16.5.2.3. Anpassungen des Stromverbrauchs an verschiedene Arbeitsbedingungen

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.

16.5.3. Zusätzliche ACPI-Features

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.

POWERSAVE_EVENT_BUTTON_POWER="wm_shutdown"

Wird der Power-Button gedrückt, reagiert das System mit dem Herunterfahren des jeweiligen Windowmanagers (KDE, GNOME, fvwm...).

POWERSAVE_EVENT_BUTTON_SLEEP="suspend_to_disk"

Wird der Sleep-Button gedrückt, fällt das System in den Suspend-To-Disk Modus.

POWERSAVE_EVENT_BUTTON_LID_OPEN="ignore"

Beim Öffnen des Deckels passiert nichts.

POWERSAVE_EVENT_BUTTON_LID_CLOSED="screen_saver"

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.

16.5.4. Mögliche Probleme und deren Lösungen

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.

16.5.4.1. ACPI ist aktiviert, aber in diesem Kapitel beschriebene Funktionalitäten sind nicht verfügbar, obwohl sie von meiner Hardware unterstützt werden sollten

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:

  1. 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.

  2. 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.

  3. 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.

16.5.4.2. CPU Frequency funktioniert nicht

Ü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.

16.5.4.3. Suspend/Standby funktioniert nicht

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.

16.5.4.4. Bei Verwendung von ACPI erkennt der Powersave-Daemon ein bestimmtes Batterielimit nicht

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.


SUSE LINUX Administrationshandbuch 9.3