32.4. 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, 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 sollten nicht gleichzeitig mit dem Powersave-Daemon ausgeführt werden (mit Ausnahme von acpid, der als Multiplexer für ACPI-Ereignisse fungiert).

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.

32.4.1. Konfigurieren des Powersave-Pakets

Die Konfiguration von Powersave wird auf 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

  • Benachrichtigen

  • 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 Skripten 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.

Wenn beispielsweise die Variable EVENT_GLOBAL_SUSPEND2DISK="prepare_suspend_to_disk do_suspend_to_disk" festgelegt wird, werden die beiden Skripten oder 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 legt fest, 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/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/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.

32.4.2. Weitere ACPI-Funktionen

Wenn Sie ACPI verwenden, können Sie steuern, 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.

[Tip]Konfigurieren von ACPI-Schaltflächen

Die Einstellungen in /etc/sysconfig/powersave/event werden nur berücksichtigt, wenn auf dem Desktop des Benutzers kein Energieverwaltungs-Applet (KPowersave oder GNOME Power Manager)ausgeführt wird.

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

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.

32.4.3. 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 den folgenden Abschnitten werden die häufigsten Probleme mit Powersave und den verschiedenen Energiesparmodi behandelt.

32.4.3.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/index.php herunter. Prüfen Sie, ob die Datei dekomprimiert und kompiliert ist. Dies wird durch die Dateinamenserweiterung .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 unterhttp://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.

32.4.3.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/*.

32.4.3.3. Suspend und Stand-by funktionieren nicht

ACPI-Systeme können Probleme mit dem Stromspar- und Standby-Modus haben, wenn die DSDT-Implementierung (BIOS) fehlerhaft ist. Aktualisieren Sie in diesem Fall das BIOS.

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 Protokolldatei /var/log/pm-suspend.log enthält ausführliche Informationen über die einzelnen Vorgänge und mögliche Fehlerursachen. Ändern Sie die Variable SUSPEND_MODULES in /usr/lib/pm-utils/defaults, um problematische Module vor einem Suspend- oder Standby-Vorgang zu entladen.

Ausführliche Informationen zur Änderung des Suspend- und Resume-Prozesses finden Sie unter http://www.opensuse.org/Pm-utils und http://www.opensuse.org/S2ram.

32.4.4. Weiterführende Informationen