Inhaltsverzeichnis
Die Energieverwaltung ist insbesondere bei Notebook-Computern von großer Wichtigkeit, sie ist jedoch auch für andere Systeme sinnvoll. ACPI (Advanced Configuration & Power Interface) ist auf allen modernen Computern (Laptops, Desktops, Server) verfügbar. Für Energieverwaltungstechnologien sind geeignete Hardware- und BIOS-Routinen erforderlich. Die meisten Notebooks und modernen Desktops und Server erfüllen diese Anforderungen. Es ist außerdem möglich, die CPU-Frequenzskalierung zu steuern, um Energie zu sparen oder den Geräuschpegel zu senken.
Energiesparfunktionen sind nicht nur für die mobile Verwendung von Notebooks von Bedeutung, sondern auch für Desktop-Systeme. Die Hauptfunktionen und ihre Verwendung im ACPI sind:
Nicht unterstützt.
In diesem Modus wird der gesamte Systemstatus in den RAM geschrieben. Anschließend wird das gesamte System mit Ausnahme des RAM in den Ruhezustand versetzt. In diesem Zustand verbraucht der Computer sehr wenig Energie. Der Vorteil dieses Zustands besteht darin, dass innerhalb weniger Sekunden die Arbeit nahtlos wieder aufgenommen werden kann, ohne dass ein Booten des Systems oder ein Neustart der Anwendungen erforderlich ist. Diese Funktion entspricht ACPI-Zustand S3
. Die Unterstützung für diesen Zustand befindet sich noch in der Entwicklungsphase und hängt daher weitgehend von der Hardware ab.
In diesem Betriebsmodus wird der gesamte Systemstatus auf die Festplatte geschrieben und das System wird von der Energieversorgung getrennt. Es muss eine Swap-Partition vorhanden sein, die mindestens die Größe des RAM hat, damit alle aktiven Daten geschrieben werden können. Die Reaktivierung von diesem Zustand dauert ungefähr 30 bis 90 Sekunden. Der Zustand vor dem Suspend-Vorgang wird wiederhergestellt. Einige Hersteller bieten Hybridvarianten dieses Modus an, beispielsweise RediSafe bei IBM Thinkpads. Der entsprechende ACPI-Zustand ist S4
. In Linux wird "suspend to disk" über Kernel-Routinen durchgeführt, die von ACPI unabhängig sind.
ACPI überprüft den Akkuladestatus und stellt entsprechende Informationen bereit. Außerdem koordiniert es die Aktionen, die beim Erreichen eines kritischen Ladestatus durchzuführen sind.
Nach dem Herunterfahren wird der Computer ausgeschaltet. Dies ist besonders wichtig, wenn der Computer automatisch heruntergefahren wird, kurz bevor der Akku leer ist.
In Verbindung mit der CPU gibt es drei Möglichkeiten, Energie zu sparen: Frequenz- und Spannungsskalierung (auch PowerNow! oder Speedstep), Drosselung und Versetzen des Prozessors in den Ruhezustand (C-Status). Je nach Betriebsmodus des Computers können diese Methoden auch kombiniert werden.
Die ACPI (erweiterte Konfigurations- und Energieschnittstelle) wurde entwickelt, um dem Betriebssystem die Einrichtung und Steuerung der einzelnen Hardware-Komponenten zu ermöglichen. ACPI löst sowohl Power-Management Plug and Play (PnP) als auch Advanced Power Management (APM) ab. Diese Schnittstelle bietet Informationen zu Akku, Netzteil, Temperatur, Ventilator und Systemereignissen wie "Deckel schließen" oder "Akku-Ladezustand niedrig".
Das BIOS bietet Tabellen mit Informationen zu den einzelnen Komponenten und Hardware-Zugriffsmethoden. Das Betriebssystem verwendet diese Informationen für Aufgaben wie das Zuweisen von Interrupts oder das Aktivieren bzw. Deaktivieren von Komponenten. Da das Betriebssystem die in BIOS gespeicherten Befehle ausführt, hängt die Funktionalität von der BIOS-Implementierung ab. Die Tabellen, die ACPI erkennen und laden kann, werden in /var/log/boot.msg
gemeldet. Weitere Informationen zur Fehlersuche bei ACPI-Problemen finden Sie in Abschnitt 31.2.3, „Fehlersuche“.
Mit der CPU sind Energieeinsparungen auf drei verschiedene Weisen möglich:
Je nach Betriebsmodus des Computers können diese Methoden auch kombiniert werden. Energiesparen bedeutet auch, dass sich das System weniger erhitzt und die Ventilatoren seltener in Betrieb sind.
Frequenzskalierung und Drosselung sind nur relevant, wenn der Prozessor belegt ist, da der sparsamste C-Zustand ohnehin gilt, wenn sich der Prozessor im Wartezustand befindet. Wenn die CPU belegt ist, ist die Frequenzskalierung die empfohlene Energiesparmethode. Häufig arbeitet der Prozessor nur im Teillast-Betrieb. In diesem Fall kann er mit einer niedrigeren Frequenz betrieben werden. Im Allgemeinen empfiehlt sich die dynamische Frequenzskalierung mit Steuerung durch den On-Demand-Governor im Kernel.
Drosselung sollte nur als letzter Ausweg verwendet werden, um die Betriebsdauer des Akkus trotz hoher Systemlast zu verlängern. Einige Systeme arbeiten bei zu hoher Drosselung jedoch nicht reibungslos. Außerdem hat die CPU-Drosselung keinen Sinn, wenn die CPU kaum ausgelastet ist.
ADM und Intel bezeichnen diese Technologie als PowerNow! und Speedstep. Doch auch in die Prozessoren anderer Hersteller ist diese Technologie integriert. Taktfrequenz und Kernspannung der CPU werden gleichzeitig verringert, was zu mehr als linearen Energieeinsparungen führt. Eine Halbierung der Frequenz (halbe Leistung) führt also dazu, dass wesentlich weniger als die Hälfte der Energie verbraucht wird. Diese Technologie ist unabhängig von ACPI.
Es gibt zwei Möglichkeiten, die CPU-Frequenz zu skalieren: über den Kernel selbst (-Infrastruktur mit kernelinternen Governors) oder über eine Userspace-Anwendung. Die kernelinternen Governords sind Richtlinien-Governors, die die CPU-Frequenz anhand von verschiedenen Kriterien ändern können (eine Art vorkonfigurierter Energieschemata für die CPU). Die folgenden Governors stehen beim -Subsystem zur Verfügung:
Die CPU-Frequenz wird statisch auf den höchstmöglichen Wert gesetzt, so dass die maximale Leistung erzielt wird. Dieser Govenor ist folglich nicht auf Energieeinsparungen ausgerichtet.
Die CPU-Frequenz wird statisch auf den niedrigsten möglichen Wert gesetzt. Dies kann sich erheblich auf das System auswirken, weil das System diese Frequenz unter keinen Umständen überschreitet, unabhängig von der tatsächlichen Auslastung der Prozessoren.
Die Kernel-Implementierung einer Richtlinie für die dynamische CPU-Frequenz: Der Governor überwacht die Prozessorauslastung. Sobald ein bestimmter Schwellwert überschritten wird, stellt der Governor die Frequenz auf den höchsten möglichen Wert ein. Liegt die Auslastung unter dem Schwellwert, wird die nächstniedrigere Frequenz verwendet. Wenn das System weiterhin nicht voll ausgelastet ist, wird die Frequenz weiter gesenkt, bis die niedrigste mögliche Frequenz eingestellt ist.
Dieser Governor passt die Frequenz ebenso wie die On-Demand-Implementierung je nach der Prozessorauslastung an, jedoch mit dem Unterschied, dass der Stromverbrauch eher allmählich ansteigen kann. Überschreitet die Prozessorauslastung einen bestimmten Schwellwert, wechselt der Governor nicht automatisch zur höhcsten verfügbaren Frequenz (wie der On-Demand-Governor), sondern lediglich zur nächsthöheren verfügbaren Frequenz.
Die relevanten Dateien für die Kernel-Governors befinden sich im Verzeichnis /sys/devices/system/cpu/cpu*/cpufreq/
. Ist der Rechner mit mehreren Prozessoren ausgestattet, enthält das Verzeichnis /sys/devices/system/cpu/
je ein Unterverzeichnis für die einzelnen Prozessoren: cpu0
, cpu1
usw. Wenn derzeit der On-Demand-Governor oder der Conservative Governor im System verwendet wird, enthält cpufreq
je ein separates Unterverzeichnis für diese Governors mit den entsprechenden Parametern.
Bei dieser Technologie wird ein bestimmter Prozentsatz der Taktsignalimpulse für die CPU ausgelassen. Bei einer Drosselung von 25 % wird jeder vierte Impuls ausgelassen. Bei 87.5 % erreicht nur jeder achte Impuls den Prozessor. Die Energieeinsparungen sind allerdings ein wenig geringer als linear. Normalerweise wird die Drosselung nur verwendet, wenn keine Frequenzskalierung verfügbar ist oder wenn maximale Energieeinsparungen erzielt werden sollen. Diese Technologie muss auch durch einen bestimmten Prozess gesteuert werden. Die Systemschnittstelle für die Prozessordrosselung (T-Status) lautet /proc/acpi/processor/*/throttling
.
Moderne Prozessoren sind mit verschiedenen Energiesparmodi (C-Status
) ausgestattet. Mithilfe dieser Modi ist ein Prozessor im Leerlauf in der Lage, nicht verwendete Komponenten abzuschalten und so Energie zu sparen. Das Betriebssystem versetzt den Prozessor in den Ruhezustand, wenn keine Aktivitäten mehr erkannt werden. In diesem Fall sendet das Betriebssystem ein halt-Kommando an die CPU. Es gibt drei Statusmöglichkeiten: C1
, C2
und C3
. Im Zustand mit der höchsten Energieeinsparung, C3
, wird sogar die Synchronisierung des Prozessor-Cache mit dem Hauptspeicher angehalten. Daher ist dieser Zustand nur möglich, wenn der Inhalt des Hauptspeichers von keinem anderen Gerät über Busmaster-Aktivitäten bearbeitet wird. Einige Treiber verhindern die Verwendung von C3
. Der aktuelle Zustand wird unter /proc/acpi/processor/*/throttling
angezeigt.
Zum Anzeigen oder Anpassen der aktuellen Einstellungen für das -Subsystems verwenden Sie die entsprechenden Tools in cpufrequtils
. Nach der Installation des cpufrequtils
-Pakets rufen Sie die -Kernel-Informationen mit cpufreq-info ab. Mit dem Kommando cpufreq-set bearbeiten Sie die -Einstellungen. Um den On-Demand-Governor zur Laufzeit zu aktivieren, führen Sie beispielsweise das folgende Kommando als root
aus:
cpufreq-set -g ondemand
Weitere Informationen und Angaben zu den verfügbaren Informationen finden Sie auf den Man-Seiten cpufreq-info und cpufreq-set, oder führen Sie das Kommando cpufreq-info --help
bzw. cpufreq-set --help
aus.
ist ein nützliches Tool für die Überwachung des Energieverbrauchs. Dieses Tool ist nach der Installation des powertop
-Pakets verfügbar. Hiermit können Sie die Ursachen für einen unnötig hohen Stromverbrauch ermitteln (z. B. Prozesse, die einen Prozessor aus dem Leerlaufstatus aktivieren) und die Systemeinstellungen so optimieren, dass diese Aktivierung unterbleibt. Das Tool unterstützt Prozessoren von Intel und AMD. Weitere Informationen finden Sie auf der -Projektseite unter http://www.lesswatts.org/projects/powertop/.
Neben diesen Tools stehen die folgenden ACPI-Dienstprogramme bereit:
Wenn Sie lediglich Informationen abrufen möchten, beispielsweise den Batteriestand oder die Temperatur, verwenden Sie das Kommando acpi. Mit acpi --help erhalten Sie eine Liste der verfügbaren Optionen.
Sollen die ACPI-Tabellen im BIOS bearbeitet werden, installieren Sie das acpica
-Paket.
Es gibt zwei verschiedene Arten von Problemen. Einerseits kann der ACPI-Code des Kernel Fehler enthalten, die nicht rechtzeitig erkannt wurden. In diesem Fall wird eine Lösung zum Herunterladen bereitgestellt. Häufiger werden die Probleme vom BIOS verursacht. Manchmal werden Abweichungen von der ACPI-Spezifikation absichtlich in das BIOS integriert, um Fehler in der ACPI-Implementierung in anderen weit verbreiteten Betriebssystemen zu umgehen. Hardware-Komponenten, die ernsthafte Fehler in der ACPI-Implementierung aufweisen, sind in einer Blacklist festgehalten, die verhindert, dass der Linux-Kernel ACPI für die betreffenden Komponenten verwendet.
Der erste Schritt, der bei Problemen unternommen werden sollte, ist die Aktualisierung des BIOS. Wenn der Computer sich überhaupt nicht booten lässt, kann eventuell einer der folgenden Bootparameter Abhilfe schaffen:
ACPI nicht zum Konfigurieren der PCI-Geräte verwenden.
Nur eine einfache Ressourcenkonfiguration durchführen. ACPI nicht für andere Zwecke verwenden.
ACPI deaktivieren.
Probleme beim Booten ohne ACPI | |
---|---|
Einige neuere Computer (insbesondere SMP- und AMD64-Systeme) benötigen ACPI zur korrekten Konfiguration der Hardware. Bei diesen Computern kann die Deaktivierung von ACPI zu Problemen führen. |
Manchmal ist der Computer durch Hardware gestört, die über USB oder FireWire angeschlossen ist. Wenn ein Computer nicht hochfährt, stecken Sie nicht benötigte Hardware aus und versuchen Sie es erneut.
Überwachen Sie nach dem Booten die Bootmeldungen des Systems mit dem Befehl dmesg | grep -2i acpi
(oder überwachen Sie alle Meldungen, da das Problem möglicherweise nicht durch ACPI verursacht wurde). Wenn bei der Analyse einer ACPI-Tabelle ein Fehler auftritt, kann die wichtigste Tabelle – die DSDT (Differentiated System Description Table) – durch eine verbesserte Version ersetzt werden. In diesem Fall wird die fehlerhafte DSDT des BIOS ignoriert. Das Verfahren wird in Abschnitt 31.4.1, „ACPI mit Hardware-Unterstützung aktiviert, bestimmte Funktionen sind jedoch nicht verfügbar“ erläutert.
In der Kernel-Konfiguration gibt es einen Schalter zur Aktivierung der ACPI-Fehlersuchmeldungen. Wenn ein Kernel mit ACPI-Fehlersuche kompiliert und installiert wurde, können Experten, die nach einem Fehler suchen, mit detaillierten Informationen unterstützt werden.
Wenn Sie Probleme mit dem BIOS oder der Hardware feststellen, sollten Sie stets Kontakt mit den betreffenden Herstellern aufweisen. Insbesondere Hersteller, die nicht immer Hilfe für Linux anbieten, sollten mit den Problemen konfrontiert werden. Die Hersteller nehmen das Problem nur dann ernst, wenn sie feststellen, dass eine nennenswerte Zahl ihrer Kunden Linux verwendet.
http://tldp.org/HOWTO/ACPI-HOWTO/ (detailliertes ACPI HOWTO, enthält DSDT-Patches)
http://www.acpi.info (technische Daten zur Advanced Configuration & Power Interface)
http://www.lesswatts.org/projects/acpi/ (das ACPI4Linux-Projekt von Sourceforge)
http://acpi.sourceforge.net/dsdt/index.php (DSDT-Patches von Bruno Ducrot)
In Linux kann die Festplatte vollständig ausgeschaltet werden, wenn sie nicht benötigt wird, oder sie kann in einem energiesparenderen oder ruhigeren Modus betrieben werden. Bei moderenen Notebooks müssen die Festplatten nicht manuell ausgeschaltet werden, da sie automatisch in einen Sparbetriebsmodus geschaltet werden, wenn sie nicht benötigt werden. Um die Energieeinsparungen zu maximieren, sollten Sie jedoch einige der folgenden Verfahren mit dem Kommando hdparm ausprobieren.
Hiermit können verschiedene Festplatteneinstellungen bearbeitet werden. Die Option -y
schaltet die Festplatte sofort in den Stand-by-Modus. -Y
versetzt sie in den Ruhezustand. hdparm -S x
führt dazu, dass die Festplatte nach einen bestimmten Inaktivitätszeitraum abgeschaltet wird. Ersetzen Sie x
wie folgt: 0
deaktiviert diesen Mechanismus, sodass die Festplatte kontinuierlich ausgeführt wird. Werte von 1
bis 240
werden mit 5 Sekunden multipliziert. Werte von 241
bis 251
entsprechen 1- bis 11-mal 30 Minuten.
Die internen Energiesparoptionen der Festplatte lassen sich über die Option -B
steuern. Wählen Sie einen Wert 0
(maximale Energieeinsparung) bis 255
(maximaler Durchsatz). Das Ergebnis hängt von der verwendeten Festplatte ab und ist schwer einzuschätzen. Die Geräuschentwicklung einer Festplatte können Sie mit der Option -M
reduzieren. Wählen Sie einen Wert von 128
(ruhig) bis 254
(schnell).
Häufig ist es nicht so einfach, die Festplatte in den Ruhezustand zu versetzen. Bei Linux führen zahlreiche Prozesse Schreibvorgänge auf der Festplatte durch, wodurch diese wiederholt aus dem Ruhezustand reaktiviert wird. Daher sollten Sie unbedingt verstehen, wie Linux mit Daten umgeht, die auf die Festplatte geschrieben werden müssen. Zunächst werden alle Daten im RAM-Puffer gespeichert. Dieser Puffer wird vom pdflush
-Daemon überwacht. Wenn die Daten ein bestimmtes Alter erreichen oder wenn der Puffer bis zu einem bestimmten Grad gefüllt ist, wird der Pufferinhalt auf die Festplatte übertragen. Die Puffergröße ist dynamisch und hängt von der Größe des Arbeitsspeichers und von der Systemlast ab. Standardmäßig werden für pdflush kurze Intervalle festgelegt, um maximale Datenintegrität zu erreichen. Das Programm überprüft den Puffer alle fünf Sekunden und schreibt die Daten auf die Festplatte. Die folgenden Variablen sind interessant:
/proc/sys/vm/dirty_writeback_centisecs
Enthält die Verzögerung bis zur Reaktivierung eines pdflush-Threads (in Hundertstelsekunden).
/proc/sys/vm/dirty_expire_centisecs
Definiert, nach welchem Zeitabschnitt eine schlechte Seite spätestens ausgeschrieben werden sollte. Der Standardwert ist 3000
, was 30 Sekunden bedeutet.
/proc/sys/vm/dirty_background_ratio
Maximaler Prozentsatz an schlechten Seiten, bis pdflush damit beginnt, sie zu schreiben. Die Standardeinstellung ist 5
%.
/proc/sys/vm/dirty_ratio
Wenn die schlechten Seiten diesen Prozentsatz des gesamten Arbeitsspeichers überschreiten, werden Prozesse gezwungen, während ihres Zeitabschnitts Puffer mit schlechten Seiten anstelle von weiteren Daten zu schreiben.
Beeinträchtigung der Datenintegrität | |
---|---|
Änderungen an den Einstellungen für den pdflush-Aktualisierungs-Daemon gefährden die Datenintegrität. |
Abgesehen von diesen Prozessen schreiben protokollierende Journaling-Dateisysteme, wie ReiserFS
, Ext3
, Ext4
und andere ihre Metadaten unabhängig von pdflush, was ebenfalls das Abschalten der Festplatte verhindert. Um dies zu vermeiden, wurde eine spezielle Kernel-Erweiterung für mobile Geräte entwickelt. Installieren Sie das laptop-mode-tools
-Paket, und beachten Sie die Angaben in der Datei /usr/src/linux/Documentation/laptops/laptop-mode.txt
.
Ein weiterer wichtiger Faktor ist die Art und Weise, wie sich die Programme verhalten. Gute Editoren beispielsweise schreiben regelmäßig verborgene Sicherungskopien der aktuell bearbeiteten Datei auf die Festplatte, wodurch die Festplatte wieder aktiviert wird. Derartige Funktionen können auf Kosten der Datenintegrität deaktiviert werden.
In dieser Verbindung verwendet der Mail-Daemon postfix die Variable POSTFIX_LAPTOP
. Wenn diese Variable auf ja
gesetzt wird, greift postfix wesentlich seltener auf die Festplatte zu.
Alle Fehler- und Alarmmeldungen werden in der Datei /var/log/messages
protokolliert. In den folgenden Abschnitten werden die häufigsten Probleme behandelt.
Falls Probleme mit ACPI auftreten, überprüfen Sie, ob die Ausgabe von dmesg ACPI-spezifische Meldungen enthält. Führen Sie hierzu das Kommando dmesg|grep -i acpi
aus.
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:
Prozedur 31.1. Aktualisieren der DSDT-Tabelle im BIOS
Für die nachstehende Prozedur müssen die folgenden Pakete installiert sein: kernel-source
, acpica
und mkinitrd
.
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.
Wenn die heruntergeladene Tabelle stattdessen die Dateinamenserweiterung .asl
(ACPI-Quellsprache) aufweist, kompilieren Sie sie mit dem folgenden Kommando:
iasl -sa file.asl
Kopieren Sie die (resultierende) 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. Immer wenn Sie den Kernel installieren und mkinitrd verwenden, um eine initrd
-Datei zu erstellen, wird die bearbeitete DSDT beim Booten des Systems integriert und geladen.
Rufen Sie die Kernel-Quellen 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. Wenn das kernel-source
-Paket installiert ist, finden Sie diese Informationen unter /usr/src/linux/Documentation/cpu-freq/*
.
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://old-en.opensuse.org/Pm-utils und http://wiki.opensuse.org/SDB:Suspend_to_RAM.
http://www.acpi.info (technische Daten zur Advanced Configuration & Power Interface)
http://www.lesswatts.org/projects/acpi/ (das ACPI4Linux-Projekt von Sourceforge)
http://acpi.sourceforge.net/dsdt/index.php (DSDT-Patches von Bruno Ducrot)
http://wiki.opensuse.org/SDB:Suspend_to_RAM– Anleitung zur Einstellung von "Suspend to RAM"
http://old-en.opensuse.org/Pm-utils– Anleitung zur Änderung des allgemeinen Suspend-Frameworks