Mesure de la conso d'énergie

Bonsoir ici,

je suis tombé sur ce billet qui parle de mesure de conso énergétique de serveurs : https://bpetit.nce.re/fr/2021/01/scaphandre-v0.1.1-mesurer-la-consommation-dénergie-des-coulisses-du-numérique/ je n’ai pas encore mis en place, mais ça me semble un outil pertinent pour mesurer et donc pouvoir agir.

3 Likes

Excellent article. Merci

J’avais vu ça, mais je suis resté perplexe.

Si j’ai bien compris, scaphandre exploite des features des processeurs permettant de calcule la conso électrique de coeurs de façon très fine.

C’est sûrement utile pour mesure directement l’impact de l’exécution de code sur le CPU, et cela ne ferait pas de mal qu’une telle info puisse faire partie des tests unitaires ou d’intégration pour un feedback direct auprès des développeurs.

C’est très « micro »… et ça oublie un peu aussi toute la conso « macro ».

Les I/O ça a un impact énergétique. Les SSD se mettent en veille quand ils peuvent. Les HDD par contre ne peuvent pas économiser grand chose sur la rotation du disque, mais peuvent sur les déplacements de têtes…

L’accès à la RAM… là je n’ai aucune idée de l’impact énergétique, et pour le réseau non plus.

Et il y a le reste… par exemple, les ventilateurs sur un serveur consomment vraiment une part importante. On le voit sur un serveur en idle, il y a une consommation plancher constante.
Une double alim dans un serveur consomme un peu plus qu’une alim simple.

Tout ceci est loin d’être négligeable, mais semble hors du scope de scaphandre, non ?

2 Likes

Sans compter l’énergie grise. J’ai détaillé ici des éléments : https://linuxfr.org/news/mesurer-la-consommation-d-energie-des-projets-informatique-depuis-les-serveurs-avec-scaphandre

Bonsoir,

Je n’y connais strictement rien en électronique et ce que je vais dire est peut-être complètement à côté de la plaque.
Je suis très étonné qu’en 2021 (et même bien avant), les différents composants comme la carte mère, l’alimentation …etc. ne soient pas capables d’envoyer via un quelconque bus de donnée, leurs consommations électriques instantanées.
C’est techniquement complexe à mesurer ou bien c’est juste qu’aucun constructeur ne s’y intéresse (j’ai quand même des doutes sur cette seconde raison) ?

Tout dépend à quel niveau de granularité on veut descendre et dans quel but.

Sur mes serveurs Dell, on peut interroger par l’IPMI la consommation électrique au niveau des alimentations. Il y a de plus un compteur qui cumule l’énergie utilisée par le serveur depuis sa fabrication.

Exemple:

Statistic      : Cumulative Energy Consumption
Start Time     : Tue Feb 16 17:24:31 2016
Finish Time    : Wed Jan 20 01:56:11 2021
Reading        : 977.1 kWh

Statistic      : System Peak Power
Start Time     : Tue Feb 16 12:23:30 2016
Peak Time      : Fri Sep 25 16:52:12 2020
Peak Reading   : 437 W

Statistic      : System Peak Amperage
Start Time     : Tue Feb 16 12:23:30 2016
Peak Time      : Wed Mar 18 13:26:22 2020
Peak Reading   : 1.9 A

Pour les sous ensembles, c’est bien plus rare… je n’ai jamais vu de disque dur fournir ce type d’info, et encore moins un ventilateur qui est un bête moteur piloté qui ne renvoie qu’une info: la vitesse à laquelle il tourne pour vérifier qu’il tourne comme attendu.

Côté CPU, le problème est pris dans l’autre sens… granularité très fine avec si j’ai bien compris des consommations mesurées par coeur.

On peut réduire la consommation au moment de la conception même du hardware, ce qui est quand même largement fait, pour faire baisser le chiffre globalement.

L’autre amélioration possible c’est sur la partie logicielle… ce qui s’exécute et les conséquences. Le CPU peut donner des indications directes pour ce qui le concerne, mais toutes les conséquences dans le reste de la machine sont bien difficiles à mesurer car il faudrait tracer que tel code exécuté génère telle I/O sur tel disque ou bus et donc telle consommation.
A part en labo expérimental, je vois difficilement un truc pareil se généraliser.

Le kernel produit énormément de statistiques sur l’activité à partir desquelles on peut (quand on s’en donne la peine) évaluer indirectement l’impact de l’exécution de code.
Rien que comparer la conso globale à la prise au repos, puis en plein calcul permet d’évaluer les Wh pour réaliser telle ou telle tâche.

Il y a un champ énorme de progrès dans ces domaines… surtout quand on voit l’empilement de couches logicielles et de code non compilé tourner sur une machine actuelle, sans parler de tout le code dont on déporte l’exécution sur les clients :wink:

Pour un développeur, ça commence par le choix du langage… et donc aussi des langages dans lesquels sont écrits les autres éléments qu’il va utiliser.

Une étude sur le sujet compare quelques algo de base et la conso engendrée en fonction du langage dans lesquels ils ont été implémentés (plus ou moins bien): https://stefanos1316.github.io/my_curriculum_vitae/GKS17.pdf

Rust (qui a la cote) et Java sont les moins bien placés des langages compilés, Go arrive en tête de cette étude qui n’est pas forcément une référence quand on y lit « From all these studies it seems that Java and Python consume a lot of energy and perform slowly in comparison with C/C++ and Assembly. ». Autant dire que la pluie ça mouille !

Désolé, j’ai largement divergé, mais c’est un sujet passionnant.

3 Likes