Measure energy consumption of software per process
How to attribute power consumption on shared resources to processes, containers, or pods?
Finding out how much energy individual processes have consumed is very difficult in practice. The actual energy consumption can initially only be recorded for individual hardware components (e.g. CPU) or the entire system. In order to assign an energy consumption value to an individual process, other metrics are required. Often the utilization of a component is used for this, but this metric is also associated with some challenges.
To understand the challenges of using the CPU utilization as a base, see CPU Utilization as a metric.
Methodologies of Different Tools
- Kepler: uses process-level CPU utilization based on CPU instructions (default, is configurable)
- Scaphandre: uses process-level CPU utilization based on CPU time (docs)
- PowerAPI: uses performance based regression modeling
- Green Metrics Tool:
- uses average cgroup CPU utilization (see pull request #795)
- initially not supported, because GMT follows the philosophy of usage scenarios that should contain all components to reflect actual use cases of the software
🔗 References
sustainable-computing-io/kepler · Discussion #548 · GitHub
green-coding-berlin/green-metrics-tool · Discussion #562 · GitHub
Papers
[50] Hongyu Hè, Michal Friedman, and Theodoros Rekatsinas. Energat: Fine-grained energy attribution for multi-tenancy. In Proceedings of the 2nd Workshop on Sustainable Computer Systems, pages 1–8, 2023.
[51] Franz Christian Heinrich, Tom Cornebize, Augustin Degomme, Arnaud Legrand, Alexandra Carpen-Amarie, Sascha Hunold, Anne-Cécile Orgerie, and Martin Quinson. Predicting the energy-consumption of MPI applications at scale using only a single node. In 2017 IEEE international conference on cluster computing (CLUSTER), pages 92–102. IEEE, 2017.
[66] Norbert Schmitt, Lukas Iffländer, André Bauer, and Samuel Kounev. Online power consumption estimation for functions in cloud applications. In 2019 IEEE International Conference on Autonomic Computing (ICAC), pages 63–72. IEEE, 2019.