L’outil Green Metrics Tool (GMT) est un cadre open source qui permet de mesurer, de comparer et d’optimiser la consommation d’énergie des logiciels dans le but de permettre aux ingénieurs logiciels et aux utilisateurs de prendre des décisions éclairées concernant les bibliothèques, les extraits de code et les logiciels. afin d’économiser de l’énergie et des émissions de carbone.
Alors que le micrologiciel des appareils embarqués alimentés par batterie et le système d’exploitation fonctionnant sur votre smartphone sont généralement optimisés pour une faible consommation d’énergie afin de prolonger la durée de vie de la batterie, on ne peut pas en dire autant de la plupart des logiciels fonctionnant sur des SBC, des ordinateurs de bureau et des serveurs. Mais il y a toujours des avantages à avoir des programmes optimisés en puissance sur ce type de matériel, notamment des factures d’électricité plus faibles, une empreinte carbone plus faible et des appareils potentiellement plus silencieux, car le ventilateur de refroidissement peut ne pas avoir à être allumé aussi souvent. Le Green Metrics Tool vise à aider à cet égard.
Les développeurs expliquent comment cela fonctionne :
Toute application sera conteneurisée puis analysée par ses parties logiques. L’outil open source mesure les mesures de performance classiques ainsi que les mesures liées à l’énergie telles que la puissance, la température et l’efficacité de refroidissement pour comprendre quelle partie du logiciel est responsable de quelle partie de la consommation d’énergie.
Grâce au concept de scénarios d’utilisation, nous créons une interface que les développeurs peuvent tester/développer. En fin de compte, cela rend les produits logiciels complexes comparables les uns aux autres et permet ainsi aux développeurs de sélectionner des bibliothèques en fonction de leur profil de fonctionnalité-énergie (par exemple, messages par watt ou similaire).
Green Metrics Tool nécessite un hôte Linux, et il semble assez intéressant, alors j’ai essayé de l’installer sur Ubuntu 20.04 et 22.04 . J’ai suivi les instructions d’installation à partir de mon ordinateur portable exécutant Ubuntu 20.04 avec la commande suivante installant certaines dépendances :
sudo mkdir /var/www sudo chown $USER.$USER /var/www -R git clone https://github.com/green-coding-berlin/green-metrics-tool /var/www/green-metrics-tool sudo apt update sudo apt upgrade sudo apt install make gcc python3 python3-pip libpq-dev sudo python3 -m pip install -r /var/www/green-metrics-tool/requirements.txt
sudo mkdir /var/www sudo chown $UTILISATEUR.$UTILISATEUR /var/www –R git cloner https://github.com/green-coding-berlin/green-metrics-tool/var/www/green-metrics-tool sudo apte mettre à jour sudo apte améliorer sudo apte installer Fabriquer gcc python3 python3–pépin libpq–développeur sudo python3 –m pépin installer –r /var/www/vert–métrique–outil/exigences.SMS |
L’étape suivante consistait à installer Docker :
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg –dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo « deb [arch=$(dpkg –print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable » | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt update sudo apt remove docker docker-engine docker.io containerd runc sudo apt install ca-certificates curl gnupg lsb-release sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
boucle –fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg –dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg écho « deb [arch=$(dpkg –print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable » | sudo tee /etc/apte/sources.liste.ré/docker.liste > /développeur/nul sudo apte mettre à jour sudo apte éliminer docker docker–moteur docker.io conteneur courir sudo apte installer Californie–certificats boucle gnupg lsb–Libération sudo apte installer docker–ce docker–ce–cli conteneur.io docker–composer–brancher |
Nous pouvons vérifier que docker est installé et fonctionne correctement en tapant :
Il affichera une vue avec l’ID de conteneur, le nom et les statistiques, qui sont tous vides pour le moment.
J’ai dû exécuter la commande avec sudo, mais GMT est conçu pour fonctionner uniquement avec Docker en mode sans root, et j’ai dû installer quelques packages supplémentaires :
sudo systemctl disable –now docker.service docker.socket sudo apt install uidmap sudo apt update sudo apt-get install -y docker-ce-rootless-extras dbus-user-session dockerd-rootless-setuptool.sh install
sudo systemctl désactiver —maintenant docker.un service docker.prise sudo apte installer uidmap sudo apte mettre à jour sudo apte–obtenir installer –y docker–ce–sans root–Suppléments dbus–utilisateur–session docker–sans root–outil de configuration.sh installer |
Il se termine par :
[INFO] Faire Bien sur les Suivant environnement variables sont Positionner (ou alors ajouter leur pour ~/.bashrc): exportation CHEMIN=/usr/poubelle:$CHEMIN Certains applications peut exiger les Suivant environnement variable aussi: exportation DOCKER_HOST=unix:///exécuter/user/1001/docker.sock |
J’ai donc édité ~/.bashrc en conséquence en ajoutant les deux lignes d’exportation.
Enfin, veuillez exécuter les commandes suivantes pour que le démon docker soit toujours en attente :
systemctl –user enable docker sudo loginctl enable-linger $(whoami)
systemctl —utilisateur permettre docker sudo connexionctl permettre–s’attarder $(qui suis je) |
La prise en charge de cgroup2 doit également être activée. Il est activé par défaut dans Ubuntu 21.10 et supérieur, mais comme je suis toujours sur Ubuntu 20.04, j’ai dû l’activer manuellement avec la délégation CPU, CPUSET et I/O comme expliqué sur rootlesscontainer.rs. Pour activer cgroup2, j’ai dû créer le fichier /etc/default/grub.d/50-cloudimg.settings.cfg avec la ligne :
GRUB_CMDLINE_LINUX= »systemd.unified_cgroup_hierarchy=1″
GRUB_CMDLINE_LINUX=« systemd.unified_cgroup_hierarchy=1 » |
Ensuite, mettez à jour la configuration de grub avec :
Pour activer la délégation, j’ai dû exécuter quelques commandes supplémentaires :
$ sudo mkdir -p /etc/systemd/system/user@.service.d $ cat <
> Delegate=cpu cpuset io memory pids > EOF $ sudo systemctl daemon-reload
$ sudo mkdir –p /etc/systemd/système/utilisateur@.un service.ré $ chat <<EOF | sudo tee /etc/systemd/système/utilisateur@.un service.ré/déléguer.conf > [Service] > Déléguer=CPU processeur io Mémoire pids > EOF $ sudo systemctl démon–recharger |
Une fois cela fait, j’ai dû redémarrer mon ordinateur et j’ai pu vérifier que tout était configuré comme prévu :
$ ls /sys/fs/cgroup/cgroup.controllers /sys/fs/cgroup/cgroup.controllers $ cat /sys/fs/cgroup/user.slice/user-$(id -u).slice/user@$( id -u).service/cgroup.controllers cpuset cpu io mémoire pids
$ ls /système/fs/groupe de contrôle/groupe de contrôle.contrôleurs /système/fs/groupe de contrôle/groupe de contrôle.contrôleurs $ chat /système/fs/groupe de contrôle/utilisateur.tranche/utilisateur–$(identifiant –tu).tranche/utilisateur@$(identifiant –tu).un service/groupe de contrôle.contrôleurs processeur CPU io Mémoire pids |
La dernière étape consistait à exécuter le script d’installation pour configurer la base de données, créer quelques fichiers, installer encore plus de dépendances et créer les fournisseurs de métrique :
cd /var/www/green-metrics-tool/ ./install.sh
CD /var/www/vert–métrique–outil/ ./installer.sh |
J’ai eu quelques erreurs : « g_string_replace » undeclare et les binaires sgx ne se construisaient pas car le répertoire est vide. La première erreur ne se produit que dans Ubuntu 20.04, et non dans Ubuntu 22.04, et il semble que ce soit une nouvelle fonction dans la glibc, et la seconde se produit dans les deux, donc je commente simplement cette partie pour terminer la construction. Nous pouvons maintenant exécuter le conteneur Docker avec :
cd docker docker composer
CD docker docker composer en haut |
Il a fallu environ 20 minutes pour créer l’image Docker et je peux maintenant accéder au tableau de bord à l’adresse http://metrics.green-coding.local:9142/index.html
L’outil Green Metrics prend en charge divers fournisseurs de métriques en C ou Python qui mesurent la consommation d’énergie (powerstat), signalent diverses métriques d’utilisation du processeur, collectent des données pour les capteurs lm, exploitent l’interface Running Average Power Limit (RAPL) pour l’utilisation de l’énergie du processeur et de la mémoire, etc.
L’outil Green Metrics prend en charge divers fournisseurs de métriques en C ou Python qui mesurent la consommation d’énergie (powerstat), signalent diverses métriques d’utilisation du processeur, collectent des données pour les capteurs lm, exploitent l’interface Running Average Power Limit (RAPL) pour l’utilisation de l’énergie du processeur et de la mémoire, etc. Mais après avoir examiné la documentation GMT, la courbe d’apprentissage peut être plus longue que prévu initialement, et j’ai remarqué qu’une démo publique est déjà en cours d’exécution avec divers tests disponibles. Voyons donc la sortie du premier projet : « Fujitsu TX1330 M2 – Stress-Interval with powerspy ».
Nous pouvons voir des informations sur le projet et sa durée, et si nous faisons défiler vers le bas, nous avons des widgets avec diverses « métriques au niveau du système » suivies de métriques composées.
En faisant défiler plus loin, nous avons une gamme de graphiques pour chaque métrique, telle que la consommation d’énergie du processeur au fil du temps.
L’analyse des données nécessite également une certaine expertise et du temps pour apprendre, et si vous souhaitez vérifier certains résultats pratiques, les développeurs ont rédigé quelques études de cas avec différents formats de fichiers image, WordPress vs Hugo, etc… Si votre logiciel est situé dans un référentiel public sur GitHub et que vous avez fait quelques optimisations, il sera éventuellement certifiable sur la base de divers schémas tels que Green-Coding-Berlin, Blue Angel (Blauer Engel en allemand) et SCI de la Green Software Foundation.
Vous trouverez le code source du logiciel expérimental et plus de détails sur le repo GitHub. Vous pouvez également assister à la présentation FOSDEM 2023 d’Arne Tarara intitulée « Génie logiciel vert » où il donnera un aperçu de l’outil et présentera la feuille de route avec éventuellement l’objectif d’avoir « une base de données publique et ouverte d’informations sur l’énergie pour des configurations matérielles arbitraires, des blocs de code, des bibliothèques et une bibliothèque standard verte/complétion de code vert ».
Retrouvez l’histoire de Raspberry Pi dans cette vidéo :