Unter Linux regelt der Governor die CPU-Taktung und Energieverwaltung. Auto-cpufreq aktiviert je nach Betriebszustand den passenden Governor und optimiert so Batterielaufzeit und Rechenleistung.
Linux ist ein sicheres Betriebssystem. Linux ermöglicht, das System so zu gestalten, wie man es sich als Nutzer vorstellt. Linux müllt den Rechner nicht zu, sodass er auch nach Jahren noch schnell arbeitet. Diese Aussagen dürften die meisten Linux-Anwender wohl unterschreiben. Die Behauptungen, unter Linux hielte der Laptop mit einer Akkuladung länger durch, oder Linux regele die CPU intelligent und maximiere so die Akkulaufzeit, darf man hingegen eher mit Vorsicht betrachten.
Um den Stromhunger eines mobilen Rechners in den Griff zu bekommen, hat sich in den letzten Jahren als Quasi-Standard TLP [1] etabliert. Das Programm aktiviert je nach Betriebszustand unterschiedliche CPU-Profile oder schaltet nicht benötigte USB-Geräte sowie Bluetooth und WLAN bei Bedarf ab. Ähnlich arbeitet das Programm Auto-cpufreq [2]. Es konzentriert sich jedoch primär auf die CPU und optimiert die Rechenleistung je nach Situation.
Installation
Das noch recht junge Auto-cpufreq findet sich noch nicht in den Paketquellen der großen Distributionen. Der Entwickler stellt jedoch ein distributionsübergreifend lauffähiges Snap-Paket im Snap Store [3] zur Verfügung. Alternativ gibt es ein für Debian und Red Hat sowie deren Derivate geeignetes Installationsskript. Derzeit empfiehlt sich der Weg über das Skript, da Nutzer bei Installation des Snap-Pakets von einer erhöhten Systemlast berichten [4].
Mit den Kommandos aus Listing 1 richten Sie Auto-cpufreq auf einem frisch aufgesetzten Ubuntu-System ein. Die Tools S-tui, Stress und I7z benötigt Auto-cpufreq nicht selbst; sie helfen später jedoch, den Systemzustand und die Rechenauslastung zu kontrollieren. Nutzer von Arch Linux finden das Programm im Arch User Repository (AUR). Das Kochrezept richtet im Gegensatz zum Installationsskript automatisch einen Systemd-Service ein, den man nach der Installation nur aktivieren und starten muss (Listing 2). Die im folgenden Abschnitt erklärte Installation über die Option --install ist hier nicht nötig.
Listing 1
Installation Ubuntu
$ sudo apt install git s-tui stress i7z $ git clone https://github.com/AdnanHodzic/auto-cpufreq.git $ cd auto-cpufreq $ sudo ./auto-cpufreq-installer
Listing 2
Installation Arch Linux
$ yay -S auto-cpufreq s-tui stress i7z $ sudo systemctl enable --now auto-cpufreq $ auto-cpufreq --log
Konfiguration
Auf einem Ubuntu-System spielt das Installationsskript lediglich das Programm in das System ein. Für die Konfiguration rufen Sie anschließend auto-cpufreq auf, womit das Programm seine Optionen erklärt. Grundsätzlich benötigt die Anwendung administrative Rechte: Mit sudo auto-cpufreq --monitor beobachtet Auto-cpufreq zunächst nur das System und zeigt an, was es anders machen würde. So ermittelt das Programm in Abbildung 1 zum Beispiel, dass das System die CPU mit dem Performance-Governor regelt, obwohl es nicht am Strom hängt und daher besser im Powersave-Modus arbeiten sollte (siehe Kasten “Geregelt”).

Abbildung 1: Im Monitor-Modus gibt Auto-cpufreq Informationen zur Taktgeschwindigkeit und zum Governor aus, verändert aber am System noch nichts.
Geregelt
Um Energie zu sparen und um nicht ständig zu überhitzen, arbeiten moderne CPU-Kerne nicht ständig mit der maximal möglichen Taktrate, sondern fahren die Rechenleistung je nach Bedarf in festgelegten Stufen hoch oder herunter. Wann die CPU mit welcher Taktrate arbeitet, entscheidet die CPU in modernen Systemen dabei nicht selbst. Unter Linux übernimmt diese Aufgabe der fest in den Kernel integrierte CPUFreq Governor [6].
Dabei gibt es unterschiedliche Ansätze oder Philosophien: Ist es besser, für eine Rechenaufgabe sofort die Taktrate auf ein Maximum zu steigern, oder sollte das System die Rechenleistung Schritt für Schritt hochregeln? Bei der höchsten Taktrate benötigt die CPU zwar viel Energie, erledigt dafür aber die Rechenaufgabe schnell, sodass sich die CPU auch schnell wieder schlafen legen kann. Im Stromsparmodus arbeitet das System hingegen effektiver und produziert weniger Verlustwärme, dafür muss die CPU länger rechnen und kann erst deutlich später in den Schlafmodus gehen.
Den Zielkonflikt aus ausgewogener Rechenleistung, effizienten Stromsparfunktionen und komfortablem Ansprechverhalten versucht Linux mit sechs unterschiedlichen Governors beizukommen: Performance, Powersave, Userspace, Ondemand, Conservative und Schedutil. Diese Profile entscheiden unter anderem, wann die CPU wie schnell und wie weit hochtaktet. Wann nun aber welcher Governor greift, ist Sache der Distributionsentwickler: Ein auf einem Dell XPS 9570 frisch aufgesetztes System mit Ubuntu 20.10 arbeitete in unserem Test etwa immer mit dem Performance-Governor, egal, ob das System am Netzteil hing oder von der Batterie mit Strom versorgt wurde.
Auto-cpufreq entscheidet nach Systemlast und Ladezustand (Netz oder Akku), welcher Governor aktiv sein soll. Bei Batteriebetrieb im Leerlauf oder bei geringer CPU-Last aktiviert Auto-cpufreq den Powersave-Governor. Sobald die Last ansteigt, springt das Programm in den Performance-Modus um. Am Netzteil angeschlossen, überlässt Auto-cpufreq das System hingegen immer dem Performance-Governor und aktiviert, sofern vorhanden, den Turbo-Modus der CPU, sodass jederzeit die maximale Rechenleistung zur Verfügung steht.
Einen Schritt weiter führt der Aufruf von sudo auto-cpufreq --live. Damit übernimmt Auto-cpufreq die Regelung der CPU – allerdings nur so lange, bis Sie das Programm mit [Strg]+[C] wieder abbrechen. Es verändert in dieser Konfiguration nichts am System dauerhaft. Die Funktionsweise lässt sich jetzt gut mit dem Kommandozeilenwerkzeug S-tui überprüfen (Abbildung 2). Schalten Sie im Programm in der linken Spalte auf den Stress-Modus, aktiviert das Tool einen Stresstest auf allen CPU-Kernen, sodass die Prozessor-Kerne hochtakten und das System, wenn vorhanden, in den Turbo Boost geht [5].

Abbildung 2: Als Dienst aktiviert, übernimmt Auto-cpufreq das Setzen des Governors. Sobald die Systemlast steigt, schaltet das Programm in den Performance-Modus.
Um die unterschiedliche Arbeitsweise von Auto-cpufreq und der Standardkonfiguration zu sehen, starten Sie nun einmal Auto-cpufreq mit der Option --monitor. Prüfen Sie nun, mit welchem Governor das System arbeitet, wenn es lediglich über die Batterie läuft, und welchen es verwendet, wenn es am Netzteil hängt. Testen Sie das einmal mit und einmal ohne Stresstest. Danach beenden Sie den Monitor-Modus, schalten Auto-cpufreq mit der Option --live scharf, und wiederholen den Stresstest mit und ohne Netzteil. Das System sollte jetzt während des Batteriebetriebs im Leerlauf im Powersave-Modus arbeiten und erst unter Last in den Performance-Modus wechseln.
Überzeugt Sie der Live-Modus, verankern Sie Auto-cpufreq mit dem Aufruf sudo auto-cpufreq --install fest im System, sodass das Programm automatisch beim Booten aktiv wird. Gegebenenfalls lässt sich dieser Schritt später mit der Option --remove wieder rückgängig machen. Als Dienst arbeitet Auto-cpufreq komplett im Hintergrund; bei Bedarf sehen Sie dem Programm mit sudo auto-cpufreq --log auf die Finger. Die Tastenkombination [Strg]+[C] beendet die Anzeige wieder, der Dienst bleibt jedoch weiterhin aktiv.
Im Betrieb
Im Test auf einem frisch installierten Ubuntu 20.10 und einem bewährten Arch Linux erwies sich Auto-cpufreq als sehr solide. Das Ubuntu-System arbeitet ab Werk generell immer mit dem Performance-Governor. Auto-cpufreq hingegen schaltet umgehend auf den Powersave-Governor um, sobald man den Rechner vom Netzteil absteckt. Das wirkt sich unmittelbar auf die Taktrate der CPU aus. Während sie in der Standardkonfiguration von Ubuntu auch nach Ziehen des Netzsteckers bei 2,8 GHz bleibt, taktet die CPU bei aktivierten Auto-cpufreq sofort herunter und schwankt danach dynamisch, je nach Aktion auf dem System.
In Abbildung 3 sehen Sie unter (1) den Powersave-Governor im Batteriebetrieb, unter (2) die Taktraten sowie noch einmal extra unter (3) die von I7z ausgelesenen Details zur CPU. Nach dem Aktivieren des Stresstest in S-tui (unten rechts) schaltet Auto-cpufreq auch im Akkubetrieb umgehend auf den Performance-Governor um und aktiviert zudem den Turbo-Modus. Statt mit maximal 2,8 GHz arbeitet die CPU des Rechners dann vorübergehend mit 3,4 GHz. Die Standardkonfiguration von Ubuntu ignorierte hingegen in unserem Test den Turbo-Modus der CPU komplett, die Kerne arbeiteten konstant mit maximal 2,8 GHz.

Abbildung 3: Im Powersave-Modus fährt das System im Leerlauf die Taktraten wesentlich schneller herunter, als es Ubuntu in der Standardkonfiguration macht.
Arch Linux überlässt die Konfiguration des Systems bekanntlich komplett dem Nutzer: So gleicht kaum ein Arch-System dem anderen. Die im Test genutzte Installation nutzte bereits TLP zum Stromsparen. Ein Blick auf die Taktraten während des Stresstests zeigte aber auch hier, dass das System in der aktuellen Konfiguration den Turbo-Boost-Modus der CPU ignoriert. Egal, ob am Netzteil angehängt oder über die Batterie mit Energie versorgt, die CPU arbeitet mit maximal 2,8 GHz. Als Governor bleibt, so lange man TLP nicht über die /etc/tlp.conf entsprechend konfiguriert, ebenfalls immer unverändert Performance aktiviert.
Auto-cpufreq fügt sich ohne weitere Konfiguration sofort harmonisch in das System ein. Die Installation gelingt hier dank des AUR sogar etwas einfacher. Wie bei Ubuntu übernimmt das Programm das Setzen des Governors und aktiviert Intels Turbo-Boost-Option. Da TLP nicht automatisch den Governor steuert, ergänzen sich beide Programme, ohne sich in die Quere zu kommen. Sie sollten jedoch darauf achten, dass Sie nicht bereits die entsprechenden Funktionen CPU_SCALING_GOVERNOR_ON_AC und CPU_SCALING_GOVERNOR_ON_BAT in der Konfiguration von TLP innerhalb der /etc/tlp.conf aktiviert haben.
Immer im Blick
Als Dienst verrichtet Auto-cpufreq seine Aufgabe im Hintergrund. Wann es welches Profil aktiviert und wann die Rechenkerne wie schnell arbeiten, erschließt sich erst, wenn man entsprechende Tools im Terminal öffnet. Es gibt jedoch auch eine Reihe von Widgets oder Panel-Applets, über die sich die CPU-Last und weitere Systemangaben visualisieren lassen. Dazu zählt zum Beispiel der System Monitor and Power Manager für die Gnome Shell [7]. Ein Mausklick genügt, um diese Shell-Erweiterung im System zu verankern. Danach zeigt das Tool die Last pro Kern sowie Details wie etwa den Turbo-Boost-Modus an (Abbildung 4).

Abbildung 4: Der System Monitor and Power Manager für die Gnome Shell zeigt in Echtzeit an, mit welcher Taktrate die CPU arbeitet und welcher Governor gerade aktiv ist.
Fazit
Es fällt schwer, ein generelles Fazit zu ziehen, da sich die Anwendungsszenarien, Rechnertypen und die Verhaltensweisen eines Nutzers einfach zu sehr unterscheiden. In unseren Versuchen verlängerte Auto-cpufreq die Batterielaufzeit des Testgeräts jedoch.
Unser Rat lautet: einfach mal ausprobieren. Auto-cpufreq lässt sich ohne große Veränderungen in ein bestehendes System integrieren und bei Missfallen auch wieder ohne Spuren entfernen. Dazu rufen Sie Auto-cpufreq-installer einfach ein zweites Mal auf und wählen mit [R] die Option zum Entfernen des Programms. So besteht keine Gefahr, das eigene System zu verschlimmbessern. (cla)
Glossar
-
Turbo Boost
-
Dieser Modus übertaktet Intel-CPUs kurzzeitig, sofern das System innerhalb definierter Grenzwerte für Strom und Temperatur bleibt. Das AMD-Pendant heißt Turbo Core.
Infos
-
Auto-cpufreq: https://github.com/AdnanHodzic/auto-cpufreq
-
Snap Store: https://snapcraft.io/auto-cpufreq
-
“Massive CPU usage!”: https://github.com/AdnanHodzic/auto-cpufreq/issues/110
-
Intel Turbo Boost: https://www.intel.de/content/www/de/de/architecture-and-technology/turbo-boost/turbo-boost-technology.html
-
“CPU frequency and voltage scaling code in the Linux kernel”: https://www.kernel.org/doc/Documentation/cpu-freq/governors.txt
-
System Monitor and Power Manager: https://github.com/konkor/cpufreq





