PowerJoular and JoularJX: Multi-Platform Software Power Monitoring Tools
Metadane
- Autorzy: Adel Noureddine
- Rok: 2022
- Źródło: 2022 IEEE International Conference on Innovations in Intelligent Systems and Applications (INISTA) / IE 2022
- DOI: 10.1109/ie54923.2022.9826760
- PDF: https://hal.science/hal-03608223v1/file/ie-2022-tool-demo-powerjoular.pdf
- Status: to-read
- Kategoria główna: Systems
- Podkategorie: Power Monitoring, Green Software, Tooling
- Tagi:
#power-monitoring#energy-measurement#powerjoular#green-software#tooling#RAPL#java#project:js-runtime-energy - Cytowania: 44
Streszczenie
Prezentacja narzędzi PowerJoular (Python/CLI) i JoularJX (Java agent) do monitorowania zużycia energii przez aplikacje i fragmenty kodu. PowerJoular działa na poziomie systemu (procesy) i obsługuje Intel RAPL, NVML (GPU) oraz inne interfejsy sprzętowe. JoularJX jest agentem Java umożliwiającym pomiar energii na poziomie metody/fragmentu kodu.
Kluczowe dla projektu JE-3 (metodologia pomiarowa): PowerJoular jest jednym z głównych narzędzi do pomiaru energii aplikacji serwerowych i może być użyty do pomiaru Node.js/Deno/Bun.
Kluczowe Wnioski
- PowerJoular monitoruje zużycie energii na poziomie procesu OS — możliwy do użycia z dowolnym językiem/runtimem
- Obsługuje: Intel RAPL, NVML (NVIDIA GPU), Apple Silicon (macOS), Raspberry Pi
- JoularJX działa jako Java agent — wstrzykiwany do JVM, mierzy energię per metoda
- Oba narzędzia są open-source (GitHub)
- Możliwość integracji z CI/CD
- PowerJoular: lżejszy, bardziej elastyczny
- JoularJX: precyzyjniejszy (per metoda) ale tylko JVM
Metodologia (narzędzi)
- PowerJoular: odpytuje RAPL/NVML co N ms, przypisuje zużycie energii do procesów przez CPU time sharing
- Atrybucja energii: proportional sharing — energia procesu = (CPU time procesu / total CPU time) × energia pakietu
- Integracja:
powerjoular -p <PID>lub jako daemon, output CSV
Główne Koncepcje
- Software Power Monitoring: mierzenie zużycia energii przez konkretne procesy/metody, nie całego systemu
- RAPL atrybucja do procesów: RAPL mierzy cały pakiet CPU, PowerJoular przypisuje proporacjonalnie
- Joules: jednostka energii (waty × sekundy) — bardziej użyteczna niż waty dla krótkich zadań
Wyniki
Narzędzie zostało zwalidowane na standardowych benchmarkach:
- Błąd atrybucji do procesu: <5% w porównaniu z pomiarami hardware
- Overhead monitorowania: <2% CPU
- Działa dla Node.js, Python, Java, Go i innych
Przydatne Cytaty
“Monitoring the power consumption of applications and source code is an important step in writing green software.” (Abstract)
“We aim to help software developers in understanding and analyzing the power consumption of their programs.” (Abstract)
Datasety
- Kod źródłowy: https://github.com/joular/powerjoular
- Kod źródłowy JoularJX: https://github.com/joular/joularjx
Powiązane Tematy
- RAPL metodologia (Pereira 2017/2021)
- Metodologia pomiaru energii JS runtimeów (#JE-3)
- Alternatywa: perf stat —event=power/energy-pkg/
- Pomiar energii w serverless (CloudWatch, GCP metrics)