Energie sparen im Homelab
Energieverbrauch von Proxmox-Servern mit Powertop und CPU-Governor steuern

Ich überarbeite derzeit meine Serverinfrastruktur im Keller. Trotz deutlich gestiegener Anforderungen – insbesondere durch den Einsatz lokaler KI – ist es mein Ziel, den Energieverbrauch so gering wie möglich zu halten. Dabei möchte ich möglichst vollständig auf den Zukauf von Energie verzichten und stattdessen den Strom so lange wie möglich ausschließlich aus meinem Solarspeicher beziehen.
Grundlagen der Energieverwaltung unter Linux
Unter Linux wird die Energieverwaltung der CPU maßgeblich durch CPU-Frequenz-Governor gesteuert. Diese Governor sind Algorithmen im Kernel, die entscheiden, mit welcher Taktfrequenz die CPU zu einem bestimmten Zeitpunkt betrieben werden soll, um entweder maximale Leistung oder minimale Leistungsaufnahme zu erzielen.
Die gängigsten Governor sind:
performance
: Zwingt die CPU, immer mit ihrer höchsten möglichen Taktfrequenz zu arbeiten. Dies bietet maximale Leistung, ist aber energieineffizient, da die CPU auch im Leerlauf Volllast fährt.powersave
: Hält die CPU statisch auf der niedrigsten möglichen Frequenz. Dies maximiert die Energieeinsparungen, geht jedoch zulasten der Leistung.ondemand
: Skaliert die CPU-Frequenz dynamisch basierend auf der Systemlast. Bei hoher Last springt die Frequenz hoch, bei geringer Last sinkt sie.conservative
: Ähnlich wieondemand
, passt die Frequenz aber gradueller an, anstatt sprunghaft zwischen Min- und Max-Frequenz zu wechseln. Dies kann in batteriebetriebenen Umgebungen vorteilhaft sein.schedutil
: Ein modernerer Governor, der eng mit dem Linux-Scheduler zusammenarbeitet, um Frequenzen effizienter zu steuern.
Der Standard-Governor auf vielen Proxmox-Installationen ist oft auf performance
eingestellt. Dies kann zu einem höheren Stromverbrauch führen, selbst wenn der Server nicht ausgelastet ist. Um den aktuell aktiven CPU-Governor und die verfügbaren Frequenzschritte zu überprüfen, kann der Befehl cpupower frequency-info
verwendet werden:

Die Ausgabe zeigt, dass der performance
-Governor aktiv ist und die CPU derzeit bei 2.40 GHz läuft, obwohl Frequenzen bis 1.50 GHz verfügbar wären. Für einen energieeffizienten Betrieb wäre hier ein Wechsel zu powersave
oder ondemand
oft sinnvoller.
Powertop
Powertop, ein von Intel entwickeltes Werkzeug, ist eine umfassende Lösung zur Diagnose und Optimierung des Stromverbrauchs auf Linux-Systemen. Es analysiert die Energieverbraucher auf Hardware- und Softwareebene und schlägt Optimierungen vor, sogenannte "Tunables".
Installation
Die Installation von Powertop und des dazugehörigen linux-cpupower
-Pakets ist unter Debian-basierten Systemen wie Proxmox unkompliziert:
root@proxmox:~ # apt install powertop linux-cpupower
===================================================================
Installing
===================================================================
Package: Version: Size:
libcpupower1 6.1.140-1 1.0 MB
linux-cpupower 6.1.140-1 1.1 MB
powertop 2.14-1+b2 204 KB
===================================================================
Suggested, Will Not Be Installed
===================================================================
Package: Version: Size:
cpufrequtils 008-2 37 KB
laptop-mode-tools 1.74-1.2 112 KB
===================================================================
Summary
===================================================================
Install 3 Packages
Total download size 2.3 MB
Disk space required 3.1 MB
Analyse und Optimierung der Energieeinstellungen
Powertop bietet einen interaktiven Modus, in dem die aktuellen Energieeinstellungen und Verbesserungsmöglichkeiten unter dem Tab "Tunables" eingesehen werden können.
Der Ausgangszustand: "Bad" Tunables
Im ursprünglichen Zustand, ohne spezifische Optimierungen, werden viele Energieeinstellungen als "Bad" (schlecht) markiert, was auf ein suboptimales Energieprofil hinweist. Dies betrifft typischerweise Bereiche wie SATA-Link-Power-Management, USB-Autosuspend und allgemeine Laufzeit-Power-Management-Optionen für PCI-Geräte.

Automatisierte Optimierung mit powertop --auto-tune
Um diese "schlechten" Einstellungen schnell und effizient zu optimieren, bietet Powertop die Option --auto-tune
. Dieser Befehl versucht, alle identifizierten Tunables automatisch auf ihren "Good"-Zustand zu setzen, was zu signifikanten Energieeinsparungen führen kann.
root@proxmox:~ # powertop --auto-tune
modprobe cpufreq_stats failedLoaded 0 prior measurements
Cannot load from file /var/cache/powertop/saved_parameters.powertop
File will be loaded after taking minimum number of measurement(s) with battery only
RAPL device for cpu 0
RAPL Using PowerCap Sysfs : Domain Mask 5
RAPL device for cpu 0
RAPL Using PowerCap Sysfs : Domain Mask 5
Devfreq not enabled
glob returned GLOB_ABORTED
Cannot load from file /var/cache/powertop/saved_parameters.powertop
File will be loaded after taking minimum number of measurement(s) with battery only
Leaving PowerTOP
Die im obigen Beispiel gezeigten Meldungen wie "modprobe cpufreq_stats failed" oder "Cannot load from file" sind oft informativ und deuten nicht zwangsläufig auf einen Fehler hin, der die Funktionalität von --auto-tune
beeinträchtigt. Der Befehl wird die Optimierungen in der Regel erfolgreich anwenden.
Bestätigung der Optimierungen: "Good" Tunables
Nach der Ausführung von powertop --auto-tune
zeigt ein erneuter Blick in den "Tunables"-Tab von Powertop, dass die meisten, wenn nicht alle, zuvor als "Bad" markierten Einträge nun den Status "Good" aufweisen. Dies bestätigt, dass die energieeffizienten Einstellungen angewendet wurden.

Überprüfung des CPU-Frequenz-Governors
Obwohl powertop --auto-tune
viele Einstellungen optimiert, ändert es nicht zwingend den CPU-Frequenz-Governor. Wie bereits erwähnt, wird der performance
-Governor auf Proxmox häufig standardmäßig verwendet. Für maximale Energieeinsparungen auf einem Server, der nicht ständig unter Volllast steht, ist es oft ratsam, den Governor auf conservative
oder ondemand
umzustellen.
Dies kann temporär mit folgendem Befehl geschehen:
cpupower frequency-set -g conservative
Dieser Befehl setzt den Governor für alle CPU-Kerne auf conservative
.

Persistenz der Einstellungen und weitere Überlegungen
Es ist wichtig zu beachten, dass die von powertop --auto-tune
vorgenommenen Änderungen nicht persistent sind; sie gehen bei einem Neustart des Systems verloren. Um die Energieoptimierungen dauerhaft anzuwenden, muss der Befehl bei jedem Systemstart ausgeführt werden. Eine bewährte Methode hierfür ist die Erstellung eines systemd
-Dienstes.
Beispiel für einen systemd
-Dienst zur automatischen Anwendung der Powertop-Tunables:
Man erstellt die Datei /etc/systemd/system/powertop.service
:
# systemd service für MMs Powertop
# Stellt sicher, dass die Kiste schön sparsam ist, auch nach dem Booten.
[Unit]
Description=PowerTOP auto tune
After=network-online.target
[Service]
Type=oneshot
Environment="TERM=dumb"
ExecStart=/usr/sbin/powertop --auto-tune
RemainAfterExit=true
[Install]
WantedBy=multi-user.target
Aktivieren und starten Sie des Dienstes:
systemctl daemon-reload
systemctl enable --now powertop.service
Dieser Dienst sorgt dafür, dass powertop --auto-tune
bei jedem Systemstart ausgeführt wird und die Energieeinstellungen automatisch angewendet werden.
Zusätzlich kann auch der CPU-Governor permanent geändert werden, falls gewünscht. Dies kann über die Crontab mit einem @reboot
-Eintrag oder ebenfalls über einen systemd
-Dienst realisiert werden. Ein Beispiel für Crontab sieht so aus:
crontab -e
# Füge am Ende der Datei diese Zeile hinzu:
@reboot cpupower frequency-set -g conservative
Es ist ratsam, die Auswirkungen von Energieoptimierungen auf die Systemleistung zu überwachen, insbesondere bei Workloads, die eine hohe CPU-Leistung erfordern.
In der Console ist gut zu erkennen, dass die Leistungsaufnahme der CPU sofort sinkt, als der Governor auf conservative
gestellt wurde. Auch die kurzen Momente, zu denen offensichtlich höhere Leistung benötigt wird, sind leicht zu sehen.

In den meisten Fällen für Heimserver oder leicht ausgelastete Proxmox-Installationen überwiegen die Vorteile der Energieeinsparung
Ein Blick auf die Steckdose, an der mein Haupt-Proxmox-Server hängt zeigte vor der Optimierung einen Verbrauch von 192 W:

Dieser sank direkt nach der Optimierung auf zirka 132 W:

Die Leistung konnte in Summe also um rund 60 Watt reduziert werden.
In meinem Keller laufen derzeit fünf Server, von denen der oben vorgestellte die Hauptlast trägt, da er auch für KI zuständig ist. Am deutlichsten fiel der Unterschied jedoch bei einem Mainboard auf, das extrem gute Performance bietet, auf dem jedoch Lpatop-Hardware verbaut ist: Das Minisforum BD770i:
root@proxmox-3:~ # pveperf
CPU BOGOMIPS: 114982.72
REGEX/SECOND: 7303538
HD SIZE: 843.13 GB (rpool/ROOT/pve-1)
FSYNCS/SECOND: 1206.77
DNS EXT: 14.87 ms
DNS INT: 0.54 ms (meister.world)
Verbraucht dieses Board mit den voreingestellten Settings direkt nach der Proxmox-Installation noch 115 W ...

... so pendelt sich der optimierte Verbrauch sogar bei nur 16 W ein:

Zwar gibt es dieses Mainboard inzwischen nicht mehr zu kaufen, aber die Nachfolger sind ebenso beeindruckend.
Fazit
Die Optimierung des Stromverbrauchs auf Proxmox-Servern ist ein effektiver Weg, Betriebskosten zu senken und die Umwelt zu schonen. Mit nur zwei Befehlen konnte der Verbrauch an die angeforderte Leistung angepasst werden:
powertop --auto-tune
cpupower frequency-set -g conservative
Das sollte einem Rechenzentrum den Aufwand wert sein.