  Every day, we experience the effects of the global warming: extreme weather
events, major forest fires, storms, global warming, etc. The scientific
community acknowledges that this crisis is a consequence of human activities
where Information and Communications Technologies (ICT) are an increasingly
important contributor. Computer scientists need tools for measuring the
footprint of the code they produce. Running Average Power Limit (RAPL) is a
low-level interface designed by Intel that provides a measure of the energy
consumption of a CPU (and more) without the need for additional hardware. Since
2017, it is available on most computing devices, including non-Intel devices
such as AMD processors. More and more people are using RAPL for energy
measurement, mostly like a black box without deep knowledge of its behaviour.
In this paper, we propose to come back to the basic mechanisms that allow to
use RAPL measurements and present a critical analysis of their operations. For
each mechanism, we release a reference implementation in Rust that avoids the
pitfalls we detected in existing tools, improving correctness, timing accuracy
and performance. In addition to long-established methods, we explore the
suitability of the recent eBPF technology for working with RAPL. We also
provide an experimental study with multiple benchmarks and processor models in
order to evaluate the efficiency of the various mechanisms and their impact on
parallel software. Our experiments show that no mechanism provides a
significant performance advantage over the others. However, they differ
significantly in terms of ease-of-use and resiliency. We believe that this work
will help the community to develop correct, resilient and lightweight
measurement tools, based on the mechanism that suits their needs.
