Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Sources Overview

Joule Profiler is designed to be simple, portable, and focused on monitoring the components responsible for the majority of energy consumption, such as the CPU, GPU, and SoC. While it does not aim to support every possible energy source on every device, the profiler can be extended by implementing custom sources for specific devices or components.

Also, it implements several source unrelated to energy consumption such as perf_event, cgroup or procfs.

Supported Architectures

  • CPU: The only target is Intel and AMD x86 architecture at the moment.
  • GPU: We support NVIDIA and AMD GPUs.
  • OS: Only Linux-based systems are officially supported at the moment.

Available Sources

  • Intel RAPL: Measures CPU energy consumption.

    • Available on most Intel CPUs since Sandy Bridge architecture in 2011, and most AMD CPUs since Zen microarchitecture in 2017.
    • Implemented using either perf_event or Powercap on Linux systems.
    • For details, see RAPL.
  • perf_event: Measures various performance counters like hardware or software on Linux systems, see perf_event.

  • Nvidia GPUs (NVML): Provides energy and performance metrics for Nvidia GPUs through the Nvidia Management Library, see NVML.

  • AMD GPUs (AMDSMI): Provides energy and performance metrics for AMD GPUs using the AMDSMI library, see amdsmi.

  • Cgroup: Measures several CPU, memory and I/O metrics available with the CgroupV2 Linux API, see cgroup.

  • Procfs: Provides memory and I/O metrics using the Linux /proc file system, see procfs.

Extending Joule Profiler

Users can implement new metric sources allowing the monitoring of additional devices or components beyond the default set. For guidance, see adding a new source.