33.5. Das powersave-Paket

Das powersave-Paket enthält alle zuvor erwähnten Stromsparfunktionen. Aufgrund der allgemein wachsenden Forderung nach geringerem Energieverbrauch sind einige der enthaltenen Funktionen auch auf Arbeitsstationen und Servern wichtig. Beispielsweise der Suspend- oder Standby-Modus oder die CPU-Frequenzskalierung.

Dieses Paket enthält alle Energieverwaltungsfunktionen 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. Die Daemons aus diesen Paketen (mit Ausnahme von acpid, der als Multiplexer für acpi-Ereignisse fungiert) sollten nicht gleichzeitig mit dem powersave-Daemon ausgeführt werden.

Selbst wenn Ihr System nicht alle oben aufgeführten Hardware-Elemente 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 Hardware-Konfiguration.

33.5.1. Konfigurieren des powersave-Pakets

Die Konfiguration von powersave wird an mehrere Dateien verteilt: Jede hier aufgelistete Konfigurationsoption enthält eine zusätzliche Dokumentation zur eigenen Funktionalität.

/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 (normalerweise ein Bash-Skript) 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

  • notify

  • screen_saver

  • reread_cpu_capabilities

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 Skripts zum Verarbeiten von Ereignissen:

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.

set_disk_settings

Führt die in /etc/sysconfig/powersave/disk vorgenommenen Datenträgereinstellungen aus.

Bei Festlegung der Variablen EVENT_GLOBAL_SUSPEND2DISK="prepare_suspend_to_disk do_suspend_to_disk" beispielsweise werden die beiden Skripts 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 einen Energiespar-Schalter ausgelöste Ereignis können wie in EVENT_BUTTON_SLEEP="notify suspend_to_disk" geändert werden. In diesem Fall wird der Benutzer durch ein Popup-Fenster in X oder eine Meldung auf der Konsole über den Suspend-Vorgang 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. Die interne Aktion notify kann mithilfe der Variablen NOTIFY_METHOD in /etc/sysconfig/powersave/common angepasst werden.

/etc/sysconfig/powersave/cpufreq

Enthält Variablen für die Optimierung der dynamischen CPU-Frequenzeinstellungen und bestimmt, ob die userspace- oder die Kernel-Implementierung verwendet werden soll.

/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 Stand-by-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 Stand-by werden normalerweise von bestimmten Modulen verursacht. Weitere Informationen zur Ermittlung des Fehlers finden Sie in Abschnitt 33.5.4, „Fehlerbehebung“.

/etc/sysconfig/powersave/thermal

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

/etc/sysconfig/powersave/disk

Diese Konfigurationsdatei steuert die Aktionen und Einstellungen, die in Bezug auf die Festplatte vorgenommen werden sollen.

/etc/sysconfig/powersave/scheme_*

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

33.5.2. Konfigurieren von APM und ACPI

33.5.2.1. Suspend und Stand-by

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 keinerlei Energie. Dieser Energiesparmodus ist standardmäßig aktiviert und sollte auf allen System funktionieren.

Suspend to RAM (ACPI S3, APM suspend)

Speichert die Zustände aller Geräte im Hauptspeicher. Nur der Hauptspeicher verbraucht weiterhin Energie. Dieser Energiesparmodus ist standardmäßig deaktiviert, da er nach wie vor Probleme auf einigen Systemen verursacht. Die Unterstützung wurde jedoch enorm erweitert.

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, Stand-by und Resume zu gewährleisten (Standardeinstellungen nach der Installation von SUSE Linux):

EVENT_GLOBAL_SUSPEND2DISK=
    "prepare_suspend_to_disk screen_saver do_suspend_to_disk"
EVENT_GLOBAL_SUSPEND2RAM=
    "prepare_suspend_to_ram screen_saver do_suspend_to_ram"
EVENT_GLOBAL_STANDBY=
    "prepare_standby screen_saver 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"

33.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=12
BATTERY_LOW=7
BATTERY_CRITICAL=2

Die Aktionen bzw. Skripts, 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 Schaltflächen können wie in Abschnitt 33.5.1, „Konfigurieren des powersave-Pakets“ beschrieben geändert werden.

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

33.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 Formatschema_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 33.6, „Das YaST Energieverwaltungsmodul“ beschriebenen YaST-Modul für die Energieverwaltung können bestehende Schemata bearbeitet, erstellt, gelöscht oder mit verschiedenen Energieversorgungszuständen verknüpft werden.

33.5.3. Weitere ACPI-Funktionen

Bei Verwendung von ACPI können Sie festlegen, wie Ihr System auf ACPI-Schalter (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“

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.

EVENT_OTHER=„ignore“

Dieses Ereignis tritt ein, wenn ein unbekanntes Ereignis vom Daemon erkannt wird. Unbekannte Ereignisse sind beispielsweise ACPI-Tastenkombinationen auf einigen Computern.

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.

33.5.4. Fehlerbehebung

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.

33.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 einen beliebigen Speicherort (/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.

33.5.4.2. CPU-Frequenzsteuerung funktioniert nicht

Rufen Sie die Kernel-Quelle (kernel-source) auf, um festzustellen, ob der verwendete Prozessor unterstützt wird. Möglicherweise ist ein spezielles Kernel-Modul 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.

33.5.4.3. Suspend und Stand-by funktionieren nicht

Es gibt mehrere Kernel-bezogene Probleme, die die Verwendung der Suspend- und Stand-by-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 und /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 eingehängten Dateisystemen, wie Samba und NIS, verwenden, sollten Sie diese mithilfe von automounter einhängen 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 eingehängte Dateisystem zugreift, kann der Dienst nicht richtig gestoppt und kein ordnungsgemäßes Aushängen des Dateisystems durchgeführt werden. Wenn der Betrieb des Systems wieder aufgenommen wird, kann das Dateisystem beschädigt und ein erneutes Einhängen erforderlich sein.

33.5.5. Weitere Informationen