Skip to content

Commit e650987

Browse files
authored
Merge pull request #531 from powerapi-ng/docs/joss-paper
docs: Add sources of the `joss` paper
2 parents 781b6c9 + 3dcb9ad commit e650987

16 files changed

+239
-296
lines changed

docs/.gitignore

Lines changed: 0 additions & 2 deletions
This file was deleted.

docs/Makefile

Lines changed: 0 additions & 19 deletions
This file was deleted.

docs/generate.sh

Lines changed: 0 additions & 6 deletions
This file was deleted.

docs/joss-paper/.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# Ignore inara output files.
2+
# https://github.com/openjournals/inara
3+
jats/*
4+
paper.pdf

docs/joss-paper/README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# PowerAPI paper for the [Journal of Open Source Software](https://joss.theoj.org/)
2+
This folder contains the source of the [PowerAPI paper submitted to the JOSS journal](https://joss.theoj.org/papers/10.21105/joss.06670).
3+
You can [follow the steps on the official documentation](https://joss.readthedocs.io/en/latest/paper.html#checking-that-your-paper-compiles) to build the pdf of the paper.
278 KB
Loading
340 KB
Loading

docs/joss-paper/paper.bib

Lines changed: 144 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,144 @@
1+
@misc{hwpc-sensor,
2+
author = {G. Fieni and R. Rouvoy},
3+
title = {Hardware Performance Counters (HwPC) Sensor},
4+
year = {2024},
5+
publisher = {GitHub},
6+
journal = {GitHub repository},
7+
url = {https://github.com/powerapi-ng/hwpc-sensor}
8+
}
9+
10+
@misc{powerapi-core,
11+
author = {G. Fieni and D. Romero and R. Rouvoy},
12+
title = {PowerAPI Core},
13+
year = {2024},
14+
publisher = {GitHub},
15+
journal = {GitHub repository},
16+
url = {https://github.com/powerapi-ng/powerapi}
17+
}
18+
19+
@misc{smartwatts,
20+
author = {G. Fieni and D.Romero and R. Rouvoy},
21+
title = {SmartWatts Formula},
22+
year = {2024},
23+
publisher = {GitHub},
24+
journal = {GitHub repository},
25+
url = {https://github.com/powerapi-ng/smartwatts-formula}
26+
}
27+
28+
@inproceedings{fieni:2020,
29+
TITLE = {Smart{W}atts: Self-Calibrating Software-Defined Power Meter for Containers},
30+
AUTHOR = {Fieni, Guillaume and Rouvoy, Romain and Seinturier, Lionel},
31+
URL = {https://inria.hal.science/hal-02470128},
32+
BOOKTITLE = {CCGRID 2020 - 20th IEEE/ACM International Symposium on Cluster, Cloud and Internet Computing},
33+
ADDRESS = {Melbourne, Australia},
34+
YEAR = {2020},
35+
MONTH = May,
36+
DOI = {10.1109/CCGrid49817.2020.00-45},
37+
KEYWORDS = {powerapi ; containers ; Power model ; energy},
38+
PDF = {https://inria.hal.science/hal-02470128/file/smartwatts-paper.pdf},
39+
HAL_ID = {hal-02470128},
40+
HAL_VERSION = {v1},
41+
DOI = {10.1109/CCGrid49817.2020.00-45},
42+
}
43+
44+
@article{pedregosa:2011,
45+
title={Scikit-learn: Machine learning in {P}ython},
46+
author={Pedregosa, Fabian and Varoquaux, Ga{\"e}l and Gramfort, Alexandre and Michel, Vincent and Thirion, Bertrand and Grisel, Olivier and Blondel, Mathieu and Prettenhofer, Peter and Weiss, Ron and Dubourg, Vincent and others},
47+
journal={Journal of machine learning research},
48+
volume={12},
49+
number={Oct},
50+
pages={2825--2830},
51+
year={2011},
52+
}
53+
54+
@manual{intel:2023,
55+
author = {Intel Corporation},
56+
keywords = {Architectures Manual},
57+
month = {December},
58+
organization = {Intel Corporation},
59+
title = {Intel 64 and IA-32 Architectures Software Developer's Manual - Combined Volumes: 1, 2A, 2B, 2C, 2D, 3A, 3B, 3C, 3D, and 4},
60+
year = 2023
61+
}
62+
63+
@inproceedings{hewitt:1973,
64+
author = {Hewitt, Carl and Bishop, Peter and Steiger, Richard},
65+
title = {A universal modular ACTOR formalism for artificial intelligence},
66+
year = {1973},
67+
publisher = {Morgan Kaufmann Publishers Inc.},
68+
address = {San Francisco, CA, USA},
69+
abstract = {This paper proposes a modular ACTOR architecture and definitional method for artificial intelligence that is conceptually based on a single kind of object: actors [or, if you will, virtual processors, activation frames, or streams]. The formalism makes no presuppositions about the representation of primitive data structures and control structures. Such structures can be programmed, micro-coded, or hard wired in a uniform modular fashion. In fact it is impossible to determine whether a given object is "really" represented as a list, a vector, a hash table, a function, or a process. The architecture will efficiently run the coming generation of PLANNER-like artificial intelligence languages including those requiring a high degree of parallelism. The efficiency is gained without loss of programming generality because it only makes certain actors more efficient; it does not change their behavioral characteristics. The architecture is general with respect to control structure and does not have or need goto, interrupt, or semaphore primitives. The formalism achieves the goals that the disallowed constructs are intended to achieve by other more structured methods.},
70+
booktitle = {Proceedings of the 3rd International Joint Conference on Artificial Intelligence},
71+
pages = {235–245},
72+
numpages = {11},
73+
location = {Stanford, USA},
74+
series = {IJCAI'73},
75+
}
76+
77+
@book{agha:1986,
78+
author = {Agha, Gul},
79+
title = {Actors: a model of concurrent computation in distributed systems},
80+
year = {1986},
81+
isbn = {0262010925},
82+
publisher = {MIT Press},
83+
address = {Cambridge, MA, USA}
84+
}
85+
86+
@inproceedings{fieni:2021,
87+
TITLE = {SELFWATTS: On-the-fly Selection of Performance Events to Optimize Software-defined Power Meters},
88+
AUTHOR = {Fieni, Guillaume and Rouvoy, Romain and Seinturier, Lionel},
89+
URL = {https://inria.hal.science/hal-03173410},
90+
BOOKTITLE = {CCGRID 2021 - 21th IEEE/ACM International Symposium on Cluster, Cloud and Internet Computing},
91+
ADDRESS = {Melbourne, Australia},
92+
YEAR = {2021},
93+
MONTH = May,
94+
KEYWORDS = {Powerapi ; containers ; Virtual machines ; power model ; energy},
95+
PDF = {https://inria.hal.science/hal-03173410/file/selfwatts-paper.pdf},
96+
HAL_ID = {hal-03173410},
97+
HAL_VERSION = {v1},
98+
DOI = {10.1109/ccgrid51090.2021.00042},
99+
}
100+
101+
@article{colmant:2018,
102+
TITLE = {The Next 700 {CPU} Power Models},
103+
AUTHOR = {Colmant, Maxime and Rouvoy, Romain and Kurpicz, Mascha and Sobe, Anita and Felber, Pascal and Seinturier, Lionel},
104+
URL = {https://inria.hal.science/hal-01827132},
105+
JOURNAL = {Journal of Systems and Software},
106+
PUBLISHER = {{Elsevier}},
107+
VOLUME = {144},
108+
PAGES = {382-396},
109+
YEAR = {2018},
110+
MONTH = Jul,
111+
DOI = {10.1016/j.jss.2018.07.001},
112+
KEYWORDS = {software toolkit ; energy monitoring ; power models ; software-defined power meters ; open testbed},
113+
PDF = {https://inria.hal.science/hal-01827132v2/file/colmant-jss.pdf},
114+
HAL_ID = {hal-01827132},
115+
HAL_VERSION = {v2},
116+
}
117+
118+
@inproceedings{colmant:2017,
119+
TITLE = {Watts{K}it: Software-Defined Power Monitoring of Distributed Systems},
120+
AUTHOR = {Colmant, Maxime and Felber, Pascal and Rouvoy, Romain and Seinturier, Lionel},
121+
URL = {https://inria.hal.science/hal-01439889},
122+
BOOKTITLE = {17th IEEE/ACM International Symposium on Cluster, Cloud and Grid Computing ({CCGrid})},
123+
ADDRESS = {Madrid, Spain},
124+
EDITOR = {Franck Capello and Geoffrey Fox and Javier Garcia-Blas},
125+
PUBLISHER = {{IEEE}},
126+
SERIES = {Proceedings of the 17th IEEE/ACM International Symposium on Cluster, Cloud and Grid Computing (CCGrid)},
127+
PAGES = {10},
128+
YEAR = {2017},
129+
MONTH = May,
130+
KEYWORDS = {energy ; cluster ; power ; model ; middleware ; power meter},
131+
PDF = {https://inria.hal.science/hal-01439889/file/colmant-ccgrid17-camera-ready.pdf},
132+
HAL_ID = {hal-01439889},
133+
HAL_VERSION = {v1},
134+
DOI = {10.1109/ccgrid.2017.27},
135+
}
136+
137+
@inproceedings{lebeane:2015,
138+
author={LeBeane, Michael and Ryoo, Jee Ho and Panda, Reena and John, Lizy Kurian},
139+
booktitle={2015 27th International Symposium on Computer Architecture and High Performance Computing (SBAC-PAD)},
140+
title={Watt Watcher: Fine-Grained Power Estimation for Emerging Workloads},
141+
year={2015},
142+
pages={106-113},
143+
keywords={Radiation detectors;Program processors;Power measurement;Microarchitecture;Hardware;Power demand;Monitoring},
144+
doi={10.1109/SBAC-PAD.2015.26}}

docs/joss-paper/paper.md

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
---
2+
title: 'PowerAPI: A Python framework for building software-defined power meters'
3+
tags:
4+
- Python
5+
- C
6+
- energy comsuption
7+
- green computing
8+
authors:
9+
- name: Guillaume Fieni
10+
orcid: 0000-0002-0165-6824
11+
affiliation: 1
12+
- name: Daniel Romero Acero
13+
orcid: 0000-0002-5317-2610
14+
affiliation: 1
15+
- name: Pierre Rust
16+
orcid: 0000-0002-2761-4702
17+
affiliation: 3
18+
- name: Romain Rouvoy
19+
orcid: 0000-0003-1771-8791
20+
affiliation: "1,2"
21+
affiliations:
22+
- name: Inria, France
23+
index: 1
24+
- name: University of Lille, France
25+
index: 2
26+
- name: Orange Labs, France
27+
index: 3
28+
date: 26 March 2024
29+
bibliography: paper.bib
30+
---
31+
32+
# Summary
33+
34+
Software that we use daily for accessing digital services from connected devices has a negative impact on the environment as it consumes energy. These digital services, hosted by physical machines around the world, also contribute to planetary pollution. Unfortunately, providers of these online services mostly focus on hardware efficiency to reduce the environmental impact without considering the software they host. For this reason, we propose [`PowerAPI`](https://powerapi.org/) [@powerapi-core], a software-defined solution that delivers real-time estimations of software power consumption to spot opportunities to reduce it and therefore to limit their impact on the planet beyond hardware improvements.
35+
36+
37+
# Statement of need
38+
39+
State-of-the-art power meters only measure the global consumption of power of the machines hosting the software. To deal with this limitation, several software-defined power meters have been proposed. However, they are statically designed and coupled to a specific processor family or they are mainly based on power models that need a lot of data and time to be trained to predict power consumption accurately [@colmant:2018; @lebeane:2015]. Power models designed in this way are only suitable for environmental conditions (i.e., memory usage, CPU usage, kinds of running applications) similar to those when the data for the training was collected. If these conditions change, power models become deprecated and have to be trained again, which make them unsuitable for production environments of Cloud providers.
40+
41+
To deal with this constraint, we developed [`PowerAPI`](https://powerapi.org/) [@powerapi-core], a software toolkit for assembling software power meters, enabling developers/IT administrators to monitor power consumption of software that they write/deploy. Software-defined power meters created with `PowerAPI` enable power consumption estimations at different granularity levels: process, thread, container, virtual machine, etc. Furthermore, power models used by `PowerAPI` are continuously self-calibrated to consider current execution conditions of the machine hosting the software.
42+
43+
\autoref{fig:powerapi-overview} present the general idea behind a Software Power Meter in `PowerAPI`:
44+
45+
1. A Sensor collects raw metrics related to a machine hosting applications/software to be monitored in terms of energy consumption.
46+
2. These metrics are stored in a database to be consumed by a software power model.
47+
3. This power model uses machine learning techniques to estimate energy consumption of applications/software with the raw metrics and it calibrates itself when required.
48+
4. Estimations produced by the power model are stored in another database.
49+
5. The stored estimations are used to optimize concerned applications/software.
50+
51+
![Power consumption estimation in PowerAPI.\label{fig:powerapi-overview}](powerapi-overview.png){ width=80%}
52+
53+
Currently, `PowerAPI` offers a software-defined power meter composed by `Hardware Performance Counter` (`HwPC`) Sensor [@hwpc-sensor] and `SmartWatts` Formula [@fieni:2020; @smartwatts]. `HwPC` Sensor is written in `C` and is based on the _Running Average Power Limit_ (RAPL) interface [@intel:2023], available on Intel and AMD processors, and the `perf` tool and `cgroup` from the Linux kernel. `SmartWatts` Formula, developed in Python, defines a power model based on a linear regression from the [sckit-learn](https://scikit-learn.org/stable/) library [@pedregosa:2011], which is self-calibrated by using suitable performance counters and an error threshold provided by the Power Meter user. It is possible to use a `CSV` files, `MongoDB`, or a `HTTP` Socket to store metrics from Sensors. For storing estimations, `PowerAPI` offers `CSV` files, `MongoDB`, `InfluxDB`, and `Prometheus`.
54+
55+
`PowerAPI` is based on the actor model [@hewitt:1973; @agha:1986], which means that there is a low coupling between different architectural elements in a software-defined power meter. This fosters the creation of new `Formulas` and/or `Sensors` actors to tune software-defined power meters according to requirements.
56+
57+
# Tool Demonstration
58+
59+
A demonstrator of `PowerAPI` is made available to illustrate the deployment of a software-defined power meter on a Xeon CPU E5-2407 Intel processor (Sandy Bridge Family) running Debian 11. The selected configuration includes `MongoDB` for storing metrics and `InfluxDB` for the estimations.
60+
In this demonstration, we monitor, in real-time, the power consumption of two web applications based on a microservice architecture and hosted by a bare-metal server: a social network from [DeathStarBench](https://github.com/delimitrou/DeathStarBench) and [tea store online](https://github.com/DescartesResearch/TeaStore) developed by the [Descartes Research group](https://se.informatik.uni-wuerzburg.de/). \autoref{fig:server-consumption-sn} and \autoref{fig:server-consumption-ts} depicts the [grafana](https://grafana.com/) dashboard for these web applications.
61+
62+
![Social Network Power consumption, server side.\label{fig:server-consumption-sn}](server-consumption-sn.png){width=80%}
63+
64+
![Tea Store Power consumption, server side.\label{fig:server-consumption-ts}](server-consumption-ts.png){width=80%}
65+
66+
In the tool demonstration, we also monitor, in real-time, a client laptop accessing the above-mentioned web applications from Firefox and Chromium. The laptop uses an Intel i5-6300U (Skylake Family) processor and runs Ubuntu 20.04.5 LTS. \autoref{fig:client-consumption-sn} and \autoref{fig:client-consumption-ts} show the grafana dashboard for the client running 2 instances of each browser.
67+
68+
![Social Network Power consumption, client side.\label{fig:client-consumption-sn}](client-consumption-sn.png){width=80%}
69+
70+
![Tea Store Power consumption, client side.\label{fig:client-consumption-ts}](client-consumption-ts.png){width=80%}
71+
72+
73+
74+
# Publications and Projects
75+
The software toolkit has results from contributions described in several publications [@fieni:2021; @fieni:2020; @colmant:2018; @colmant:2017] and is already exploited in several research projects:
76+
77+
- [Distiller ANR project](https://distiller.cloud) searches how to reduce energy consumption of Cloud applications.
78+
- [Défi FrugalCloud](https://www.inria.fr/fr/inria-ovhcloud) includes the optimization of the energy footprint of cloud infrastructures operated by [OVHcloud](https://www.ovhcloud.com/).
79+
- [Défi Pulse](https://www.inria.fr/fr/pulse-defi-qarnot-computing-ademe-calcul-intensif-hpc-environnement) studies how to valorize emissions from High Performance Computing (HPC) using as use case [Qarnot Computing's](https://qarnot.com/) offers.
80+
81+
82+
# Acknowledgements
83+
84+
Currently, the maintenance of the toolkit is funded by [Inria](https://www.inria.fr/en), [Orange Labs](https://lelab.orange.fr/), [OVH Cloud](https://www.ovhcloud.com/en/), [Davidson Consulting](https://www.davidson.fr/) and [La Poste Groupe](https://www.lapostegroupe.com/en).
85+
86+
This work received support from the French government through the _Agence Nationale de la Recherche_ (ANR) under the France 2030 program, including partial funding from the [CARECloud](https://carecloud.irisa.fr) (`ANR-23-PECL-0003`), [DISTILLER](https://anr.fr/Projet-ANR-21-CE25-0022) (`ANR-21-CE25-0022`), and [GreenAct](https://anr.fr/Projet-ANR-21-HDF1-0006) (`ANR-21-HDF1-0006`) projects.
87+
88+
# References
102 KB
Loading

0 commit comments

Comments
 (0)