21.5. Das powersave-Paket

Das powersave-Paket ist für die Energiesparfunktion bei Notebooks im Akkubetrieb zuständig. Einige seiner Funktionen sind sowohl für normale Arbeitsplatzrechner als auch für Server nützlich, wie Suspend, Stand-by, die Funktionen der ACPI-Buttons und das Versetzen von IDE-Festplatten in den Ruhezustand.

Dieses Paket enthält alle Power-Managementfunktionen für Ihren Computer. Es unterstützt Hardware, die ACPI, APM, IDE-Festplatten und PowerNow!- oder SpeedStep-Technologien verwendet. Die Funktionen der Pakete apmd, acpid, ospmd und cpufreqd (jetzt cpuspeed) wurden im powersave-Paket zusammengeführt. Daemons aus diesen Paketen sollten nicht gleichzeitig mit dem powersave-Daemon ausgeführt werden.

Selbst wenn Ihr System nicht alle oben aufgeführten Hardwareelemente beinhaltet, sollten Sie den powersave-Daemon zur Steuerung der Energiesparfunktion verwenden. Da sich ACPI und APM gegenseitig ausschließen, können Sie nur eines dieser Systeme auf Ihrem Computer verwenden. Der Daemon erkennt automatisch etwaige Änderungen in der Hardwarekonfiguration.

21.5.1. Konfiguration des powersave-Pakets

Normalerweise wird die Konfiguration von powersave an mehrere Dateien verteilt:

/etc/sysconfig/powersave/common

Diese Datei enthält allgemeine Einstellungen für den powersave-Daemon. Der Umfang der Fehlersuchmeldungen in /var/log/messages lässt sich beispielsweise durch Heraufsetzen des Werts der Variablen DEBUG erhöhen.

/etc/sysconfig/powersave/events

Der powersave-Daemon benötigt diese Datei zur Verarbeitung von Systemereignissen. Einem Ereignis können externe Aktionen oder vom Daemon selbst ausgeführte Aktionen zugewiesen werden. Bei externen Aktionen versucht der Daemon eine ausführbare Datei in /usr/lib/powersave/scripts/ auszuführen. Vordefinierte interne Aktionen:

  • 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 in MAX_THROTTLING festgelegten Wert. Dieser Wert hängt vom aktuellen Schema ab. dethrottle setzt den Prozessor auf volle Leistung. suspend_to_disk, suspend_to_ram und standby lösen das Systemereignis für einen Energiesparmodus aus. Diese drei Aktionen sind in der Regel für die Auslösung des Energiesparmodus zuständig. Sie sollten jedoch stets mit bestimmten Systemereignissen verknüpft sein.

Das Verzeichnis /usr/lib/powersave/scripts enthält Skripte zum Verarbeiten von Ereignissen:

notify

Gibt eine Benachrichtigung über ein Ereignis aus (über die Konsole, über X Window oder durch ein akustisches Signal).

screen_saver

Aktiviert den Bildschirmschoner.

switch_vt

Hilfreich, wenn der Bildschirm nach einem Suspend- oder Stand-by-Vorgang verschoben ist.

wm_logout

Speichert die Einstellungen und Protokolle aus GNOME, KDE oder anderen Fenstermanagern.

wm_shutdown

Speichert die GNOME- bzw. KDE-Einstellungen und fährt das System herunter.

Bei Festlegung der Variablen EVENT_GLOBAL_SUSPEND2DISK="prepare_suspend_to_disk do_suspend_to_disk" beispielsweise werden die beiden Skripte bzw. Aktionen in der angegebenen Reihenfolge verarbeitet, sobald der Benutzer powersaved den Befehl für den Energiesparmodus Suspend to Disk erteilt. Der Daemon führt das externe Skript /usr/lib/powersave/scripts/prepare_suspend_to_disk aus. Nach der erfolgreichen Verarbeitung dieses Skripts führt der Daemon die interne Aktion do_suspend_to_disk aus und versetzt den Computer in den Energiesparmodus, nachdem kritische Module mithilfe des Skripts entladen und Dienste gestoppt wurden.

Die Aktionen für das durch eineSleep Taste ausgelöste Ereignis können wie in EVENT_BUTTON_SLEEP="notify suspend_to_disk" geändert werden. In diesem Fall wird der Benutzer durch das externe Skript notify über das Suspend-Ereignis informiert. Anschließend wird das Ereignis EVENT_GLOBAL_SUSPEND2DISK generiert, was zur Ausführung der erwähnten Aktionen und einem sicheren Suspend-Modus für das System führt. Das Skript notify kann mithilfe der Variablen NOTIFY_METHOD in /etc/sysconfig/powersave/common angepasst werden.

/etc/sysconfig/powersave/cpufreq

Enthält Variablen zur Optimierung der dynamischen CPU-Frequenzeinstellungen.

/etc/sysconfig/powersave/battery

Enthält Grenzwerte für den Akku und andere akkuspezifische Einstellungen.

/etc/sysconfig/powersave/sleep

In dieser Datei können Sie die Energiesparmodi aktivieren und festlegen, welche kritischen Module vor einem Suspend- oder Standby-Ereignis entladen und welche Dienste angehalten werden sollen. Wenn der Betrieb des Systems wieder aufgenommen wird, werden diese Module erneut geladen und die Dienste werden neu gestartet. Es ist sogar möglich, einen ausgelösten Energiesparmodus zu verzögern, beispielsweise um Dateien zu speichern. Die Standardeinstellungen betreffen vor allem USB- und PCMCIA-Module. Fehler bei Suspend oder Standby werden normalerweise von bestimmten Modulen verursacht. Weitere Informationen zur Ermittlung des Fehlers finden Sie in Abschnitt 21.5.4, „Fehlersuche“.

/etc/sysconfig/powersave/thermal

Aktiviert Kühlung und Temperatursteuerung. Einzelheiten zu diesem Thema finden Sie in der Datei /usr/share/doc/packages/powersave/README.thermal.

/etc/sysconfig/powersave/scheme_*

Dies sind die verschiedenen Schemata, die den Energieverbrauch an bestimmte Anwendungsszenarien anpassen. Eine Anzahl von Schemata werden vorkonfiguriert und können unverändert verwendet werden. Außerdem können hier benutzerdefinierte Schemata gespeichert werden.

21.5.2. Konfigurieren von APM und ACPI

21.5.2.1. Suspend und Stand-by

Standardmäßig sind die Energiesparmodi inaktiv, da sie noch immer auf einigen Computern nicht funktionieren. Es gibt drei grundlegende ACPI-Energiesparmodi und zwei APM-Energiesparmodi:

Suspend to Disk (ACPI S4, APM suspend)

Speichert den gesamten Inhalt des Arbeitsspeichers auf die Festplatte. Der Computer wird vollständig ausgeschaltet und verbraucht keine Energie.

Suspend to RAM (ACPI S3, APM suspend)

Speichert die Zustände aller Geräte im Hauptspeicher. Nur der Hauptspeicher verbraucht weiterhin Energie.

Standby (ACPI S1, APM standby)

Schaltet einige Geräte aus (herstellerabhängig).

Stellen Sie sicher, dass folgende Standardoptionen in der Datei /etc/sysconfig/powersave/events festgelegt sind, um die ordnungsgemäße Verarbeitung von Suspend, Standby und Resume zu gewährleisten (Standardeinstellungen nach der Installation von SUSE Linux):

EVENT_GLOBAL_SUSPEND2DISK= 
	"prepare_suspend_to_disk do_suspend_to_disk"
EVENT_GLOBAL_SUSPEND2RAM= 
	"prepare_suspend_to_ram do_suspend_to_ram"
EVENT_GLOBAL_STANDBY= 
	"prepare_standby do_standby"
EVENT_GLOBAL_RESUME_SUSPEND2DISK= 
	"restore_after_suspend_to_disk"
EVENT_GLOBAL_RESUME_SUSPEND2RAM= 
	"restore_after_suspend_to_ram"
EVENT_GLOBAL_RESUME_STANDBY= 
	"restore_after_standby"

21.5.2.2. Benutzerdefinierte Akku-Ladezustände

In der Datei /etc/sysconfig/powersave/battery können Sie drei Akku-Ladezustände (in Prozent) definieren, bei deren Erreichen Systemwarnungen oder bestimmte Aktionen ausgelöst werden.

BATTERY_WARNING=20
BATTERY_LOW=10
BATTERY_CRITICAL=5

Die Aktionen bzw. Skripte, die ausgeführt werden sollen, wenn der Ladezustand unter die angegebenen Grenzwerte fällt, werden in der Konfigurationsdatei /etc/sysconfig/powersave/events festgelegt. Die Standardaktionen für Buttons können wie in Abschnitt 21.5.1, „Konfiguration des powersave-Pakets“ beschrieben geändert werden.

EVENT_BATTERY_NORMAL="ignore"
EVENT_BATTERY_WARNING="notify"
EVENT_BATTERY_LOW="notify"
EVENT_BATTERY_CRITICAL="wm_shutdown"

21.5.2.3. Anpassen des Energieverbrauchs an unterschiedliche Bedingungen

Das Systemverhalten kann an die Art der Stromversorgung angepasst werden. Der Energieverbrauch des Systems sollte reduziert werden, wenn das System vom Stromnetz getrennt und mit dem Akku betrieben wird. Ebenso sollte die Leistung automatisch zunehmen, sobald das System an das Stromnetz angeschlossen wird. Die CPU-Frequenz, die Energiesparfunktion von IDE und eine Reihe anderer Parameter können geändert werden.

Die Aktionen, die ausgeführt werden sollen, wenn der Computer vom Stromnetz getrennt bzw. wieder daran angeschlossen wird, werden in /etc/sysconfig/powersave/events festgelegt. Die zu verwendenden Schemata können in /etc/sysconfig/powersave/common ausgewählt werden:

AC_SCHEME="performance"
BATTERY_SCHEME="powersave"

Die Schemata werden in Dateien im Verzeichnis /etc/sysconfig/powersave gespeichert. Für die Dateinamen wird das Format schema_name-des-schemas verwendet. Das Beispiel bezieht sich auf zwei Schemata: scheme_performance und scheme_powersave. performance, powersave, presentation und acoustic sind vorkonfiguriert. Mithilfe des in Abschnitt 21.6, „Das YaST Power-Managementmodul“ beschriebenen YaST-Moduls für Power-Management können bestehende Schemata bearbeitet, erstellt, gelöscht oder mit verschiedenen Energieversorgungszuständen verknüpft werden.

21.5.3. Weitere ACPI-Funktionen

Bei Verwendung von ACPI können Sie festlegen, wie Ihr System auf ACPI-Buttons (Ein/Aus, Energiesparen, Deckel offen, Deckel geschlossen) reagieren soll. Die Ausführung der Aktionen wird in /etc/sysconfig/powersave/events konfiguriert. In dieser Konfigurationsdatei finden Sie auch eine Erklärung der einzelnen Optionen.

EVENT_BUTTON_POWER="wm_shutdown"

Wenn der Netzschalter gedrückt wird, reagiert das System mit Herunterfahren des jeweiligen Fenstermanagers (KDE, GNOME, fvwm usw.).

EVENT_BUTTON_SLEEP="suspend_to_disk"

Wenn der Energiespar-Schalter gedrückt wird, wird das System in den Modus „Suspend to Disk“ versetzt.

EVENT_BUTTON_LID_OPEN="ignore"

Das Öffnen des Deckels hat keine Wirkung.

EVENT_BUTTON_LID_CLOSED="screen_saver"

Beim Schließen des Deckels wird der Bildschirmschoner aktiviert.

Eine weitere Drosselung der CPU-Leistung ist möglich, wenn die CPU-Last über einen bestimmten Zeitraum einen angegebenen Wert nicht übersteigt. Geben Sie die Lastgrenze in PROCESSOR_IDLE_LIMIT und den Wert für die Zeitüberschreitung in CPU_IDLE_TIMEOUT an. Wenn die CPU-Last länger als unterhalb des Grenzwerts bleibt, als für die Zeitüberschreitung festgelegt, wird das in EVENT_PROCESSOR_IDLE konfigurierte Ereignis aktiviert. Wenn die CPU erneut belegt ist, wird EVENT_PROCESSOR_BUSY ausgeführt.

21.5.4. Fehlersuche

Alle Fehler- und Alarmmeldungen werden in der Datei /var/log/messages protokolliert. Wenn Sie die benötigten Informationen nicht finden können, erhöhen Sie die Ausführlichkeit der powersave-Meldungen mithilfe von DEBUG in der Datei /etc/sysconfig/powersave/common. Erhöhen Sie den Wert der Variablen auf 7 oder sogar 15 und starten Sie den Daemon erneut. Mithilfe der detaillierteren Fehlermeldungen in /var/log/messages sollten Sie den Fehler leicht finden können. In folgenden Abschnitten werden die häufigsten Probleme mit powersave behandelt.

21.5.4.1. ACPI mit Hardware-Unterstützung aktiviert, bestimmte Funktionen sind jedoch nicht verfügbar

Bei Problemen mit ACPI können Sie mit dem Befehl dmesg|grep -i acpi die Ausgabe von dmesg nach ACPI-spezifischen Meldungen durchsuchen. Zur Behebung des Problems kann eine BIOS-Aktualisierung erforderlich sein. Rufen Sie die Homepage Ihres Notebookherstellers auf, suchen Sie nach einer aktualisierten BIOS-Version und installieren Sie sie. Bitten Sie den Hersteller, die aktuellsten ACPI-Spezifikationen einzuhalten. Wenn der Fehler auch nach der BIOS-Aktualisierung noch besteht, gehen Sie wie folgt vor, um die fehlerhafte DSDT-Tabelle im BIOS mit einer aktualisierten DSDT zu ersetzen:

  1. Laden Sie die DSDT für Ihr System von der Seite http://acpi.sourceforge.net/dsdt/tables herunter. Prüfen Sie, ob die Datei dekomprimiert und kompiliert ist. Dies wird durch die Dateierweiterung .aml (ACPI Machine Language) angezeigt. Wenn dies der Fall ist, fahren Sie mit Schritt 3 fort.

  2. Wenn die Dateierweiterung der heruntergeladenen Tabelle .asl (ACPI Source Language) lautet, kompilieren Sie sie mit iasl (Paket pmtools). Geben Sie den Befehl iasl -sa file.asl ein. Die aktuellste Version von asl (Intel ACPI Compiler) ist unter http://developer.intel.com/technology/iapc/acpi/downloads.htm verfügbar.

  3. Kopieren Sie die Datei DSDT.aml an eine beliebige Stelle (/etc/DSDT.aml wird empfohlen). Bearbeiten Sie /etc/sysconfig/kernel und passen Sie den Pfad zur DSDT-Datei entsprechend an. Starten Sie mkinitrd (Paket mkinitrd). Immer wenn Sie den Kernel installieren und mkinitrd verwenden, um initrd zu erstellen, wird die bearbeitete DSDT beim Booten des Systems integriert und geladen.

21.5.4.2. CPU-Frequenzsteuerung funktioniert nicht

Kontrollieren Sie über die Kernelquellen (kernel-source), ob Ihr verwendete Prozessor unterstützt wird. Möglicherweise ist ein spezielles Kernelmodul bzw. eine Moduloption erforderlich, um die CPU-Frequenzsteuerung zu aktivieren. Diese Informationen erhalten Sie unter /usr/src/linux/Documentation/cpu-freq/*. Wenn ein spezielles Modul bzw. eine spezielle Moduloption erforderlich ist, konfigurieren Sie diese(s) in der Datei /etc/sysconfig/powersave/cpufreq mithilfe der Variablen CPUFREQD_MODULE und CPUFREQD_MODULE_OPTS.

21.5.4.3. Suspend und Standby funktionieren nicht

Es gibt mehrere Kernel-bezogene Probleme, die die Verwendung der Suspend- und Standby-Ereignisse auf ACPI-Systemen verhindern:

  • Zurzeit unterstützen Systeme mit mehr als 1 GB RAM keine Suspend-Ereignisse.

  • Zurzeit unterstützen Multiprozessorsysteme und Systeme mit einem P4-Prozessor (mit Hyperthreading) keine Suspend-Ereignisse.

Der Fehler kann auch durch eine fehlerhafte DSDT-Implementierung (BIOS) verursacht worden sein. In diesem Fall müssen Sie eine neue DSDT installieren.

Bei ACPI- und APM-Systemen gilt Folgendes: Beim Versuch fehlerhafte Module zu entladen, reagiert das System nicht mehr oder das Suspend-Ereignis wird nicht ausgelöst. Dies kann auch dann passieren, wenn Sie keine Module entladen oder Dienste stoppen, die ein erfolgreiches Suspend-Ereignis verhindern. In beiden Fällen müssen Sie versuchen, das fehlerhafte Modul zu ermitteln, das den Energiesparmodus verhindert hat. Die vom powersave-Daemon in /var/log/suspend2ram.log oder /var/log/suspend2disk.log erstellten Protokolldateien stellen hierfür eine große Hilfe dar. Wenn der Computer nicht in den Energiesparmodus eintritt, liegt die Ursache im zuletzt entladenen Modul. Bearbeiten Sie die folgenden Einstellungen in /etc/sysconfig/powersave/sleep, um problematische Module vor einem Suspend- oder Stand-by-Ereignis zu entladen.

UNLOAD_MODULES_BEFORE_SUSPEND2DISK=""
UNLOAD_MODULES_BEFORE_SUSPEND2RAM=""
UNLOAD_MODULES_BEFORE_STANDBY=""
SUSPEND2DISK_RESTART_SERVICES=""
SUSPEND2RAM_RESTART_SERVICES=""
STANDBY_RESTART_SERVICES=""

Wenn Sie Suspend- oder Stand-by-Ereignisse in veränderlichen Netzwerkumgebungen oder in Verbindung mit entfernt gemounteten Dateisystemen, wie Samba und NIS, verwenden, sollten Sie diese mithilfe von automounter mounten oder die entsprechenden Dienste, beispielsweise smbfs oder nfs in der oben angegebenen Variablen ergänzen. Wenn eine Anwendung vor einem Suspend- oder Stand-by-Ereignis auf das entfernt gemountete Dateisystem zugreift, kann der Dienst nicht richtig gestoppt und kein ordnungsgemäßes Unmounten des Dateisystems durchgeführt werden. Wenn der Betrieb des Systems wieder aufgenommen wird, kann das Dateisystem beschädigt und ein erneutes Mounten erforderlich sein.

21.5.4.4. Bei Verwendung von ACPI erkennt Powersave keine Grenzwerte für die Batterie

Unter ACPI kann das Betriebssystem das BIOS anweisen, eine Meldung zu senden, wenn der Akkuladezustand unter einen bestimmten Grenzwert fällt. Der Vorteil dieser Methode besteht darin, dass der Batteriezustand nicht ständig abgefragt werden muss, was die Leistungsfähigkeit des Computers beeinträchtigen würde. Es kann jedoch vorkommen, dass diese Benachrichtigung nicht erfolgt, wenn der Ladezustand unter den angegebenen Grenzwert fällt, auch wenn das BIOS diese Funktion unterstützen müsste. Wenn dies bei Ihrem System der Fall ist, setzen Sie die Variable FORCE_BATTERY_POLLING in der Datei /etc/sysconfig/powersave/battery auf yes, um ein Abfragen der Batterie zu erzwingen.

21.5.5. Weitere Informationen

Informationen zum powersave-Paket finden Sie auch in /usr/share/doc/packages/powersave.