Joule-Profiler measures energy use of software build steps

Joule-Profiler: Profiling the Energy Consumption of Build Automation Tools Made Easy

Software Engineering

Summary

Software builds use energy, but it is hard to see where and how much. The authors created Joule-Profiler, a tool that tracks energy used by different parts of a build process on Linux computers. It looks at the CPU and GPU energy and matches that to specific phases in a build. They tested it using a Java project’s builds to show how energy changes when dependencies are new or cached.

What this means in practice

  • For software developers: Identify which parts of a build pipeline consume the most energy to optimize for better efficiency in software development workflows.
  • For hardware performance engineers: Use measured hardware energy data to evaluate and improve energy efficiency of build automation on different hardware setups.

Authors

Jérémy Woirhaye, François Gibier, Romain Rouvoy

Abstract

Build pipelines are integral to modern software development, yet their energy footprint remains largely invisible to practitioners. Existing CI energy tools either rely on model-based estimation (due to hardware access restrictions in cloud runners) or report only total pipeline energy without decomposing it into meaningful phases. Joule-Profiler is an open-source command-line tool for Linux that measures hardware energy consumption via Intel RAPL (CPU), NVML (NVIDIA GPU), and attributes it to user-defined program phases by monitoring standard output. In this tool paper, we demonstrate Joule-Profiler in the context of Maven build pipelines using Google Gson as a case study. By applying a token pattern-matching Maven plugin invocations, we analyze builds across the 5 most recent Gson releases into per-phase energy profiles, comparing cold builds (empty local repository) and warm builds (cached dependencies).