Green Coding – Energieverbrauch von Software messen
Für Green Coding benötigt man Werkzeuge zur Energieverbrauchsmessung von Software. Dieser Beitrag stellt Tools zur Ermittlung des Stromverbrauchs auf Prozess- sowie Einzelfunktionsebene vor.

In dieser Collection enthalten:
Collection öffnen
ESG-Risiken im Kontext von EBA/GL/2025/01 und 2025/02 - die neuen EBA-Vorgaben

Paris Alignment: Strategische Ansätze für Banken zum Erreichen ihrer Klimaziele

Interne Revision trifft ESG: Nachhaltigkeit als Prüfstein der Zukunft

Neuerungen in Phase V der NGFS-Klimaszenarien und deren Auswirkungen im Finanzsektor

Studie Sustainable Banking 2024: Fortschritte und Handlungsbedarf der Institute auf dem Weg zu mehr Nachhaltigkeit

REBAECA - Die neue Beurteilung der Umweltwirkung von Krediten im Retail Banking

Sustainable Banking - Studie 2024

jPowerMonitor Cloud-Toolkit

Transitionspläne und -strategien für den Bankensektor

Green IT: Benchmarking zur Beurteilung von Energie- und CO₂-Effizienz
Die Reduzierung von Treibhausgas-Emissionen hat weltweit höchste Priorität. Auch die IT-Industrie kann hierbei einen nachhaltigen Beitrag leisten. Mittels Green Coding lässt sich der Stromverbrauch von Software und damit der CO2-Ausstoß verringern. Um jedoch herauszufinden, an welchen Stellen im Sourcecode Energie eingespart werden kann, benötigt man die richtigen Werkzeuge zur Energieverbrauchsmessung der Software. Im folgenden Beitrag werden die Tools zur Ermittlung des Stromverbrauchs auf Prozess- sowie Einzelfunktionsebene vorgestellt.
Stromverbrauch auf Prozess-Ebene messen
Windows bringt mit der Windows Energy Estimation Engine (E3)1 ein Werkzeug mit, das den Energieverbrauch auf Prozess-Ebene misst.
Prozess bezeichnet in diesem Kontext die Ausführung eines einzelnen Programms. E3 bedingt, dass es auf einem Gerät ausgeführt wird, das mit Akku betrieben werden kann. Für erste „Gehversuche“ kann auf einem Notebook in einer Kommandozeile mit Admin-Rechten der Befehl powercfg.exe /srumutil aufgerufen werden. Das Ergebnis ist eine srumutil.csv-Datei, die den Energieverbrauch aller Prozesse der letzten 7 Tage auf dem Computer enthält.
Um das Resultat möglichst auf die eigene Anwendung zu beschränken, können folgende Schritte in cmd durchgeführt werden:
- Mit sc stop dps die Datenaufzeichnung stoppen.
- Zur Sicherheit mit move C:\Windows\System32\sru\SRUDB.dat C:\Windows\System32\sru\SRUDB.dat.bak die historischen Daten sichern.
- Mit sc start dps die Datenerhebung erneut starten.
- Jetzt ausschließlich die zu messende Anwendung ausführen.
- Nach Programmende powercfg.exe /srumutil aufrufen.
Aufbereitet und um drei Spalten ergänzt (Messwerte werden von E3 in Millijoule ausgegeben, Umrechnungs-Formeln siehe Abbildung 1) ist erkennbar, dass eine Woche MS Teams gut 0,05kWh und damit, basierend auf dem aktuellen Strommix Deutschland2, ca. 0,02kg CO2 verbraucht.

Abbildung 1: Energieverbrauch MS Teams in ca. einer Arbeitswoche

Es gilt zu beachten, dass die ermittelten Messwerte nicht 1:1 den Verbrauch an der Steckdose wiedergeben, da Faktoren wie Verluste der AC/DC Wandler, Lüfter, GPU Stromverbrauch etc. nicht berücksichtigt werden. Dennoch gibt E3 einen Anhaltspunkt, wieviel Energie ein Prozess benötigt. Eine Alternative für Unix-basierte Betriebssysteme, die wir in unserem Fachartikel „Green Coding – die neue Dimension der Softwareentwicklung“ kurz vorgestellt haben, ist PowerTOP. MacOS bringt ähnliche Werkzeuge mit3.
Energieverbrauchsmessung auf Funktions-Ebene
In einen Prozess „hineinsehen“ kann man mit E3 nicht. Das bedeutet, dass keinerlei Aussage darüber getroffen werden kann, welche Komponente oder Funktion innerhalb des Prozesses am meisten Energie verbraucht. Exakt diese Information ist für Entwickler/-innen jedoch essenziell.
Wie soll gezielt hinsichtlich Energieeffizienz optimiert werden, wenn der genaue Ansatzpunkt unbekannt ist?
Man könnte mit einem Profiler die Funktionen der Applikation mit der höchsten CPU-Last ermitteln. In Kombination mit bekannter TDP4 der CPU oder Messwerten zum Stromverbrauch wäre es möglich, aus den gewonnenen Profildaten Schlüsse auf den Energieverbrauch zu extrapolieren.
Dieses Vorgehen halten wir jedoch für unbequem und ungenau. Um Stromverbrauchsmessungen als festen Bestandteil des Entwicklungsprozesses zu etablieren, muss dies für Entwickler/-innen möglichst komfortabel sein. Die Messwerte sollten in einer passenden Skala einfach ablesbar sein. Ungenau ist das Vorgehen, da Energieverbrauchsmessung und Profiling nicht unmittelbar miteinander korrelieren – man misst jeden Faktor einzeln.
Diese Lücke füllen wir mit der jPowerMonitor Java-Library. Die enthaltenen Komponenten jUnit-Extension und Java Agent ermöglichen direkte Messungen des Energieverbrauchs, auf Unit-Test respektive Methoden-Ebene eines beliebigen Java-Prozesses. Einzig ein ausführbares JAR-File wird benötigt – für Server-Anwendungen muss ein Java Agent konfiguriert werden.
Beide Erweiterungen schreiben während des Messlaufs den Momentan-Verbrauch in Watt sowie den kumulierten Energieverbrauch pro Testfall in Wattstunden bzw. pro Methode in Joule in separate CSV-Dateien.
jUnit-Extension sowie Java Agent werden in ergänzenden Blog-Beiträgen im Detail vorgestellt.
Stromverbrauchmessungs-Backends für jPowerMonitor
jPowerMonitor überwacht zur Laufzeit der Applikation, welche Funktionen gerade aktiv sind und wie viel CPU-Zeit sie in Anspruch nehmen (analog einem Profiler). Die zur Ermittlung des Energieverbrauchs zusätzlich notwendigen Messdaten wie z. B. „CPU Package Power“ (= aktueller Gesamtverbrauch der CPU in Watt) kann jPowerMonitor nicht selbst abgreifen. Zu diesem Zweck ist eine konfigurierbare Schnittstelle implementiert, welche Stand heute die beiden Windows-Tools OpenHardwareMonitor (OHM)5 per REST sowie HWiNFO6 per CSV-Dateischnittstelle anbindet. Die CSV-Schnittstelle ist generisch, so dass sich beliebige Strommess-Tools verwenden lassen, die Messwerte periodisch nach CSV exportieren.
OHM und HWiNFO liefern eine Fülle an Messpunkten. Für Strommesszwecke empfehlen wir „CPU Package Power“ (HWiNFO) respektive „Powers“ – „CPU Package“ (OHM). Rechenintensive Business-Applikationen dürften den Hauptteil ihres Stromverbrauchs durch CPU-Last erzeugen. Ist bekannt, dass die Anwendung eher RAM-, HDD/SSD- oder GPU-lastig ist, kann man stattdessen die korrespondierenden Sensoren oder „Total System Power“ (HWiNFO) konfigurieren.
Damit jPowerMonitor Verbrauchsdaten bekommt, ist bei OHM der „Remote Web Server“ zu aktivieren. Im Fall von HWiNFO ist das CSV-Monitoring einzuschalten. Eine Kurzübersicht der Konfigurationen ist in Abbildung 2 zusammengefasst.

Abbildung 2: Messwert und Konfiguration HWiNFO und OpenHardwareMonitor

Wir empfehlen, die exportierten Sensoren zu minimieren. Standardmäßig schreibt HWiNFO mehr als 100 Spalten pro Zeile – jede Sekunde. Das Logging kann im Einstellungsdialog konfiguriert werden7.
Fazit
Mit jPowerMonitor wird der Stromverbrauch transparent. Abgrenzungen sind die exklusive Verfügbarkeit in Java sowie die Beschränkung auf Windows-Tools als nativ unterstützte Mess-Backends. Das Konzept von jPowerMonitor lässt sich auf weitere Sprachen übertragen, die Introspektion bzw. Reflection unterstützen, wenngleich die Library in der jeweiligen Programmiersprache neu zu implementieren ist.
Mittels CSV-Schnittstelle lassen sich durch Konfigurationsanpassungen Tools für Linux oder MacOS anbinden.
Quellen
-
1. Scott Chamberlin, Measuring Your Application Power and Carbon Impact (Part 1), 14.09.2020
-
2. Umweltbundesamt, Strom- und Wärmeversorgung in Zahlen, 18.05.2022
-
3. power management, Is there a tool similar to powertop for macOS, 2017
-
4. Wikipedia, Thermal Design Power, 23.11.2021
-
5. Open Hardware Monitor
-
6. HWinfo, Free System Information, Monitoring and Diagnostics
-
7. HWiNFO, Forum

Sustainable Banking
Nachhaltigkeit ist aus der Branche Banking nicht mehr wegzudenken. Treiber sind zum einen die Initiativen von Gesetzgebern und Regulatoren. Aber auch Kunden stellen vermehrt nachhaltige, umweltfreundliche und klimaschonende Aspekte in den Mittelpunkt ihrer Finanzentscheidungen. Um den langfristigen ökonomischen Erfolg zu sichern sowie die regulatorischen Hürden zu meistern, müssen Banken frühzeitig ihre Geschäftstätigkeit auf Nachhaltigkeitsziele ausrichten und fit sein für den Umgang mit Nachhaltigkeitsrisiken.
Wie sieht die optimale Vorbereitung auf eine nachhaltige Zukunft in der Branche Banking aus? Dieser Frage gehen wir in unserer Serie Sustainable Banking auf den Grund. Mehr Informationen zu diesem Zukunftsthema finden Sie auf unserer Webseite.
Sie müssen sich anmelden, um einen Kommentar zu schreiben.