Daten|teiler
Kopieren als Kulturtechnik

Akkulaufzeit unter OpenSUSE optimieren

21. Mai 2017 von Christian Imhorst

Mein betagter DualCore-Rechner, ein Acer Aspire 2920, glüht, und der Lüfter rauscht nach wenigen Sekunden schon gut los. Mit ein paar Maßnahmen zum Energiesparen und zum Drosseln der CPU köchelt der Laptop nicht mehr ganz so stark vor sich hin und der Akku hält nun etwas länger durch. Für normale Anwendungen und XFCE als Desktop reicht die Leistung trotzdem noch locker aus.

Stromsparen mit TLP

Mit TLP kann man Gnu/Linux basierten Systemen im Allgemeinen und OpenSUSE im Besonderen die Feinheiten des Stromsparens beibringen und muss sich dabei nicht mit Detailwissen herumschlagen. In der Standardkonfiguration ist TLP bereits auf Akkulaufzeit optimiert und kann daher einfach installiert, aktiviert und vergessen werden:

sudo su
zypper install tlp
systemctl enable tlp.service
systemctl enable tlp-sleep.service

Besser swappen

Das Optimieren des Swap-Verhaltens hilft zwar nicht dabei, Strom zu sparen, aber die SSD zu schonen, wenn man festlegt, wann der Kernel Daten aus dem Arbeitsspeicher in die Swap-Partition verschieben soll. Die swappiness wird dabei mit einem Wert von 0 bis 100 angegeben. Bei 0 wird nur dann ausgelagert, wenn es gar nicht mehr anders geht, weil der Arbeitsspeicher voll ist. Bei einer swappiness von 100 wird der Arbeitsspeicher kaum genutzt. Standardmäßig ist 60 eingestellt, was man mit dem folgenden Befehl herausfinden kann:

sysctl vm.swappiness

Die Einstellung der swappiness ändert man mit einem Editor seiner Wahl in der Datei /etc/sysctl.conf und hängt dort am Ende folgende Zeilen an:

vm.swappiness=1
vm.vfs_cache_pressure=50

Mit dem neuen Wert für vfs_cache_pressure stellt man die Tendenz des Kernels ein, Speicher zurückzufordern, der zum Zwischenspeichern von Verzeichnissen und Inode Objekten zugeteilt wurde, zu verringern. Mit dieser und dem neuen Wert für die swappiness werden die Schreibzugriffe auf die Festplatte weniger und der Laptop arbeitet schneller.

Dabei muss man beachten, dass systemd-sysctl nicht die Datei /etc/sysctl.conf selbst direkt verarbeitet, sondern den Link unter /etc/sysctl.d/99-sysctl.conf auf die /etc/sysctl.conf. Sollte der Link aus irgendwelchen Gründen nicht vorhanden sein, kann man ihn einfach erstellen:

ln -s /etc/sysctl.conf /etc/sysctl.d/99-sysctl.conf

Energiesparplan

Governors regeln Energiesparpläne für die CPU. Um herauszufinden, welcher Governor für den an die eigene CPU angepassten Energiesparplan überhaupt in Frage kommt, schaut man mit dem Befehl cpupower frequency-info nach. Für den DualCore des Acers kommen als mögliche Regler powersave, ondemand oder performance in Frage. Während das voreingestellte Performance den Prozessor auf die höchste Frequenz einstellt, taktet Ondemand, was in der Regel empfohlen wird, den Prozessor je nach Systemlast herauf und herunter, während Powersave ihn auf die niedrigste Frequenz einstellt.

CPU Frequenz und mögliche Regker ermitteln

Den Governor stellt man ebenfalls mit dem Befehl cpupower ein:

cpupower frequency-set -g powersave

Damit der Governor auch nach dem nächsten Systemstart wieder aktiv ist, kann man ihn durch systemd beim Start ausführen lassen. Dazu erstellt man zuerst die Datei /etc/systemd/system/governor.service:

[Unit]
Description=CPU Governor
 
[Service]
Type=idle
Environment="TERM=dumb"
ExecStart=/usr/bin/cpupower frequency-set -g powersave
 
[Install]
WantedBy=multi-user.target

Nun lädt man noch die Konfiguration des systemd-Managers neu und aktiviert den Governor-Service:

systemctl daemon-reload
systemctl enable governor.service

Stromspar-Hilfe PowerTOP

PowerTOP analysiert den Energieverbrauch des Systems und gibt darauf basierende Tipps, mit denen man die Akkulaufzeit dauerhaft verbessern kann. Mit dem Parameter --auto-tune kann man die Vorschläge automatisch für die laufende Sitzung übernehmen:

powertop --auto-tune

Um PowerTOP automatisch mit den besten Werten gleich beim Systemstart durch systemd ausführen zu lassen, kann man folgendermaßen vorgehen.

Zuerst erstellt man die Datei /etc/systemd/system/powertop.service für den systemd-Service:

[Unit]
Description=PowerTOP auto tune
 
[Service]
Type=idle
Environment="TERM=dumb"
ExecStart=/usr/sbin/powertop --auto-tune
 
[Install]
WantedBy=multi-user.target

Dann lädt man die Konfiguration des systemd-Managers neu und aktiviert den PowerTOP-Service:

systemctl daemon-reload
systemctl enable powertop.service

In den openSUSE Docs findet man noch weitere Infos zum Power Management

Geschrieben in Gnu/Linux, Open Source, OpenSuse