Energieverbrauchsmessung mittels jPowerMonitor Java Agent
In Ergänzung zu den vorangegangenen Artikeln über die Energieverbrauchsmessung von Software wird in diesem Beitrag genauer beschrieben, wie der Energieverbrauch von Java Programmen mit Hilfe des in jPowerMonitor integrierten Java Agenten gemessen werden kann.

In dieser Collection enthalten:
Collection öffnen
Nachhaltige Konsumentenkredite: Eine Chance für das Retail-Banking, Teil 1

Energetische Sanierung – ein zentrales Geschäftsfeld für Banken

Die wiederaufflammende ESG-Datenlücke bei Banken: Einfluss der Omnibus-Initiative und digitale Lösungsansätze

ESG-Risiken strategisch managen: Neue EBA-Anforderungen und die Rolle von (Transitions-)Plänen

Risiken im Fokus der BaFin 2025

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
jPowerMonitor – Java Agent
Im Beitrag „Green Coding – Energieverbrauch von Software messen“ haben wir dargestellt, was jPowerMonitor ist und, dass mit diesem Tool der Energieverbrauch von Java Programmen auf Methodenebene gemessen werden kann. Der Artikel „Energieverbrauchsmessung von JUnit Tests durch die jPowerMonitor Extension“ hat die JUnit Extension vorgestellt, die in jPowerMonitor enthalten ist. Der folgende Beitrag geht nun genauer auf die Java Agent Funktionalität von jPowerMonitor ein.
Java Agents
Java Agents sind Teil der Java Instrumentation API. Die Instrumentation API1 bietet die Möglichkeit, Java Bytecodes zu ändern sowie dynamisch Code zu einem Programm hinzuzufügen. Beispielsweise nutzen Profiling Tools zur Messung von Performance und Speicherverbrauch Java Agents. jPowerMonitor implementiert ebenfalls einen Java Agent und klinkt sich somit in den bestehenden Quellcode ein, ohne dass dieser Code angepasst werden muss. jPowerMonitor protokolliert den Energieverbrauch der gerade laufenden Methode in dem Java Programm, an das der Agent angehängt wird.
Startup und Konfiguration
Der Java Agent wird mit der Option -javaagent:./jpowermonitor-0.1.0-all.jar an den Java Prozess übergeben. jPowerMonitor sucht per Default nach einer Konfigurationsdatei jpowermonitor.yaml im aktuellen Verzeichnis und im Classpath. Die Konfiguration kann alternativ auch direkt übergeben werden, indem sie mit einem Gleichheitszeichen an den Jar-Namen angehängt wird:
-javaagent:./jpowermonitor-0.1.0-all.jar=my-config.yaml
Die Konfiguration legt fest, mit welchem Strommesstool gemessen wird. Aktuell kann hier „ohm“ für Open Hardware Monitor oder „csv“ für ein beliebiges Tool, das CSV-Dateien erzeugt (z. B. HWiNFO) und die Messwerte darin ablegt, eingetragen werden.
Die Messwerte aus dem Open-Hardware-Monitor werden über die JSON-Schnittstelle des Tools abgefragt. In der Konfiguration muss demnach der Pfad zum gewünschten Messwert hinterlegt werden. Beispielsweise würde der Pfad [‚<Computername>‘, ‚Intel Core i7-9850H‘, ‚Powers‘, ‚CPU Package‘] den CPU Package Stromverbrauch auf einem Intel-Prozessor auslesen. Die genauen Bezeichnungen müssen dem Tool Open-Hardware-Monitor entnommen werden.
Für die CSV-Datei muss zum einen die Spaltennummer (0-basiert) in der CSV-Datei angegeben werden und zum anderen, ob die aktuellen Messwerte in der ersten oder letzten Zeile der CSV-Datei stehen. In der Konfiguration des Java Agents kann darüber hinaus angegeben werden, wie oft die Messwerte ausgelesen werden. Es ist möglich, die Messung auf Java-Packages einzuschränken. So können zum Beispiel nur Klassen aus dem Package group.msg.* gemessen werden.
Weitere Konfigurationsdetails können Sie der Dokumentation des jPowerMonitor Tools entnehmen. Beispielsweise ist es auch möglich, das Abfrageintervall oder den CO2-Emissionsfaktor für den Strommix von Wh in Gramm CO2 zu konfigurieren.
Das Aufrufbeispiel zeigt die Verwendung des Java Agents mit einer Spring-Boot-Batch-Applikation:

Abbildung 1: Verwendung des Java Agents mit einer Spring-Boot-Batch-Applikation

Beim Beenden des Java-Prozesses wird eine Zusammenfassung der verbrauchten Energie ausgegeben:

Abbildung 2: Zusammenfassung der verbrauchten Energie

Im vorliegenden Fall wurden ca. 0,32 Wh Strom bzw. 0,16 g CO2 für den Programmlauf verbraucht.
Fazit für die Energieverbrauchsmessung
jPowerMonitor ist ein praktikables Tool zur Messung des Stromverbrauchs von Java Programmen. Wie im Beitrag „Energieverbrauchsmessung von JUnit Tests durch die jPowerMonitor Extension“ beschrieben, kann der Strom beim Testen oder mittels Java Agent zur Laufzeit gemessen werden.
jPowerMonitor hilft Entwicklern daher, herauszufinden, an welchen Stellen des eigenen Programms der meiste Strom verbraucht wird. Dies gibt Entwicklern die Möglichkeit, den Code im Sinne von Green Coding zu optimieren und der Reduzierung von CO2-Emissionen beizutragen.

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.