Joule Profiler ⚡
A modular tool for measuring energy consumption and performance metrics of programs on Linux systems.
Key Features
- Multiple Metric Sources: RAPL (powercap/perf), perf_event counters, NVIDIA GPU (NVML)
- Phase-Based Profiling: Measure energy consumption by program phases
- Extensible Architecture: Easy to add custom metric sources
- Low Overhead: Minimal impact on measured programs
- Multiple Output Formats: Terminal, JSON, CSV
Quick Start
Installation
# Quick install with cargo
# Quick install with binaries
|
# Or build from source
Basic Usage
# Phase-based profiling
# JSON output
# GPU profiling (NVIDIA)
Documentation
What Makes Joule Profiler Different?
Phase-Based Energy Profiling
Unlike traditional profilers, Joule Profiler can measure energy consumption of specific program phases, helping identify which sections contribute most to energy usage.
# example.py
# initialization code
# heavy computation
Multiple Metric Sources
| Source | Metrics | Requirements |
|---|---|---|
| RAPL (powercap) | RAPL domains energy | Intel CPU, kernel 3.13+ |
| RAPL (perf) | RAPL domains energy | Intel CPU, perf_event support |
| perf_event | Performance counters | Linux perf support |
| NVML | GPU energy | NVIDIA GPU |
Platform Support
- OS: Linux (kernel 3.13+)
- CPU: Intel (RAPL)
- GPU: NVIDIA (NVML support)
- Permissions: Root or appropriate capabilities required
Common Use Cases
- Energy optimization: Identify energy-intensive code sections
- Performance analysis: Correlate energy with performance counters
- Green computing: Measure and reduce carbon footprint
- Benchmarking: Compare energy efficiency across implementations
Contributing
Contributions are welcome! Please see our Contributing Guide for details.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments
- JouleIt by @powerapi-ng for inspiration
Contact
- Issues: GitHub Issues
- Author: @jwoirhaye, @FrancoisGib