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 öffnenESG-Datenmanagement für Leasinggesellschaften: Herausforderungen, Chancen & Lösungen
Green Cloud - Nachhaltigkeit und Effizienz im Banking
Lieferkettenregulierung im Überblick: CSDDD und LkSG aus Sicht der Banken
EBA Konsultation zu ESG-Risiken und 8. MaRisk Novelle
Grüne Kreditvergabe – mehr Schein als Sein?
STE-Meldung und ESG-Offenlegung: Meldepflichten im Nachhaltigkeitsreporting
EZB reagiert auf Klimakrise: Neue Maßnahmen und Schwerpunkte für 2024 und 2025
ESG im Banking: Ein Review des Whitepapers 2023
ESG-Rating: Aussagekraft und Interpretation
EU Green Bond Standard 2024 – Neuer europäischer Goldstandard für Green Bonds
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.