  In the current high-performance and embedded computing era, full-stack
energy-centric design is paramount. Use cases require increasingly high
performance at an affordable power budget, often under real-time constraints.
Extreme heterogeneity and parallelism address these issues but greatly
complicate online power consumption assessment, which is essential for dynamic
hardware and software stack adaptations. We introduce a novel
architecture-agnostic power modeling methodology with state-of-the-art
accuracy, low overhead, and high responsiveness. Our methodology identifies the
best Performance Monitoring Counters (PMCs) to model the power consumption of
each hardware sub-system at each Dynamic Voltage and Frequency Scaling (DVFS)
state. The individual linear models are combined into a complete model that
effectively describes the power consumption of the whole system, achieving high
accuracy and low overhead. Our evaluation reports an average estimation error
of 7.5 % for power consumption and 1.3 % for energy. Furthermore, we propose
Runmeter, an open-source, PMC-based monitoring framework integrated into the
Linux kernel. Runmeter manages PMC samples collection and manipulation,
efficiently evaluating our power models at runtime. With a time overhead of
only 0.7 % in the worst case, Runmeter provides responsive and accurate power
measurements directly in the kernel, which can be employed for actuation
policies such as Dynamic Power Management (DPM) and power-aware task
scheduling.
