Mesure et modélisation de l énergie logicielle Adel Noureddine, Romain Rouvoy, Lionel Seinturier Green Days @ Lille 29 novembre 2013
Plan Contexte! Problèmes et limitations! Mesure énergétique des logiciels avec Jalen! Benchmarking de la variation énergétique
Énergie, c est quoi le problème?
Prix du pétrole Energy Information Administration and Bureau of Labor Statistics, 2013
Consommation des TICs 1600 2007-2008 1200 800 400 0 7% Consommation électrique (GW) 2% Empreinte carbone (MtCO2e)
Consommation des TICs 2020 1600 1200 Consommation et empreinte x2 800 400 14% 0 Consommation électrique (GW) Empreinte carbone (MtCO2e)
Il faut optimiser la consommation énergétique des ordinateurs et des logiciels.
Il faut optimiser la consommation énergétique des ordinateurs et des logiciels. Mesurer Optimiser
Ça n existe pas déjà?
Problèmes et limitations Mesure l énergie? Granularité Modification OS ou application Utilisation d un wattmètre Wattmètres Matérielle PowerScope Processus OS ptop Processus OS pour le réseau Energy Checker Code source Application Profilers OS Processus Profilers logiciels Code source Dépend du profiler
Problèmes et limitations Mesure l énergie? Granularité Modification OS ou application Utilisation d un wattmètre Wattmètres Matérielle PowerScope Processus OS ptop Processus OS pour le réseau Energy Checker Code source Application Profilers OS Processus Profilers logiciels Code source Dépend du profiler Idéal Code source
Mesure énergétique des logiciels! et ce que nous faisons avec!
Approches
Mesure du code source
Mesure du code source Application Matériel & OS
Mesure du code source Application Matériel & OS Utilisant des resources matériels
Mesure du code source Modèles énergétiques Consommation énergétique du matériel Application Matériel & OS Utilisant des resources matériels Documentation des fabricants
Mesure du code source Modèles énergétiques Utilisation des resources par le logiciel Consommation énergétique du matériel Application Matériel & OS Utilisant des resources matériels Documentation des fabricants
Mesure du code source Modèles énergétiques Utilisation des resources par le logiciel Utilisation des resources par le code source Consommation énergétique du matériel Application Matériel & OS Utilisant des resources matériels Documentation des fabricants
Mesure du code source Modèles énergétiques Consommation énergétique du process Utilisation des resources par le logiciel Utilisation des resources par le code source Consommation énergétique du matériel Application Matériel & OS Utilisant des resources matériels Documentation des fabricants
Mesure du code source Consommation énergétique du code source du logiciel Modèles énergétiques Consommation énergétique du process Utilisation des resources par le logiciel Utilisation des resources par le code source Consommation énergétique du matériel Application Matériel & OS Utilisant des resources matériels Documentation des fabricants
Benchmarking du code
Benchmarking du code Librairie logicielle
Benchmarking du code Librairie logicielle Détection des classes et méthodes de la librairie
Benchmarking du code Génération de benchmarks pour chaque méthode et paramètre Librairie logicielle Détection des classes et méthodes de la librairie
Benchmarking du code Exécution des benchmarks et mesure de l énergie avec Jalen Mesure niveau code source Génération de benchmarks pour chaque méthode et paramètre Librairie logicielle Détection des classes et méthodes de la librairie
Benchmarking du code Agrégation des résultats et génération du modèle énergétique Exécution des benchmarks et mesure de l énergie avec Jalen Mesure niveau code source Génération de benchmarks pour chaque méthode et paramètre Librairie logicielle Détection des classes et méthodes de la librairie
Jalen: mesure énergétique au niveau code source
Jalen architecture
Jalen architecture Machine virtuelle Java Application Java Matériel et OS
Jalen architecture Machine virtuelle Java Application Java Jalen Matériel et OS
Jalen architecture Consommation énergétique du code source du logiciel Machine virtuelle Java Application Java Jalen Matériel et OS
Échantillonnage statistique
Échantillonnage statistique Jalen Application Java Méthode 1 Méthode n
Échantillonnage statistique Jalen Application Java Méthode 1 Méthode n Données collectées : statistiques sur les méthodes, entrées/sorties, utilisation des APIs, etc.
Échantillonnage statistique Jalen Application Java Méthode 1 Méthode n Données collectées : statistiques sur les méthodes, entrées/sorties, utilisation des APIs, etc. Calculs et corrélation (collecte de mesures et modèles)
Échantillonnage statistique Jalen Application Java Méthode 1 Méthode n Données collectées : statistiques sur les méthodes, entrées/sorties, utilisation des APIs, etc. Calculs et corrélation (collecte de mesures et modèles) Consommation énergétique du code source du logiciel
Échantillonnage statistique Jalen Application Java Méthode 1 Méthode n Boucle de monitoring de l application Données collectées : statistiques sur les méthodes, entrées/sorties, utilisation des APIs, etc. Calculs et corrélation (collecte de mesures et modèles) Consommation énergétique du code source du logiciel
Échantillonnage statistique Jalen Application Java Méthode 1 Méthode n Boucle de monitoring de l application Boucle de monitoring au niveau code Données collectées : statistiques sur les méthodes, entrées/sorties, utilisation des APIs, etc. Calculs et corrélation (collecte de mesures et modèles) Consommation énergétique du code source du logiciel
Arbre d appels
Arbre d appels Méthode 1 Méthode 2
Arbre d appels Méthode 1 Méthode 2 Méthode 3 Méthode 4
Arbre d appels Méthode 1 Méthode 2 Méthode 3 Méthode 4 Méthode 5
Arbre d appels Méthode 1 Méthode 2 Méthode 3 Méthode 4 Méthode 5 Méthode JDK 1 Méthode JDK 2
Arbre d appels Méthode 1 Méthode 2 Résultats filtrées Méthode 3 Méthode 4 Méthode 5 Méthode JDK 1 Méthode JDK 2
Arbre d appels Méthode 1 Méthode 2 Méthode 3 Méthode 4 Méthode 5 Méthode JDK 1 Méthode JDK 2
Benchmarking du code :! Jalen Unit
Benchmarking du code Agrégation des résultats et génération du modèle énergétique Exécution des benchmarks et mesure de l énergie avec Jalen Jalen Génération de benchmarks pour chaque méthode et paramètre Librairie logicielle Détection des classes et méthodes de la librairie
Jalen Code source sur : github.com/adelnoureddine/jalen! Agent Java, utilisation : java -javaagent:jalen.jar -jar program.jar! Caractéristiques matérielles définies dans le fichier config.properties
Demo
Ce qu on fait avec Étudier l impact de l implémentation d algorithmes et de méthodes! Détecter où l énergie est consommée dans les logiciels et au niveau code source! Modéliser la variation énergétique des librairies à la suite de la modification des paramètres d entrées
Des graphes, des chiffres!
Tours de Hanoi: I/O - Print Avec print Sans Print 0 4500 9000 13500 18000 Energie (joule)
Tours de Hanoi: I/O - Print Avec print Sans Print x13 0 4500 9000 13500 18000 Energie (joule)
Serveur web Jetty
Serveur web Jetty Nombre d invocations 45000 33750 22500 11250 Nombre d'invocations Energie (joule) 2100 1575 1050 525 Energie (joule) 0 BlockingArrayQueue.poll JarFileResource.exists JarFileResource.newConnection ManagedSelector.select ChannelEndPoint.flush ServerConnector.accept ManagedSelector.wakeup ChannelEndPoint.shutdownOutput FileResource.normalizeURI FileResource.isDirectory 0
Énergie par invocation 0,6 0,45 Energie (joule) 0,3 0,15 0 BlockingArrayQueue.poll JarFileResource.exists JarFileResource.newConnection ManagedSelector.select ChannelEndPoint.flush ServerConnector.accept ManagedSelector.wakeup ChannelEndPoint.shutdownOutput FileResource.normalizeURI FileResource.isDirectory
Benchmarking de la variation énergétique
Algorithme de chiffrement RSA 1800 1350 Energie (joule) 900 450 0 1024 1280 1536 1792 2048 2304 2560 2816 3072 3328 3584 3840 4096 Taille de la clé de chiffrement RSA
Algorithme de chiffrement RSA 1200 java.math.biginteger.oddmodpow java.math.biginteger.montreduce Autres 900 Energie (joule) 600 300 0 1024 1280 1536 1792 2048 2304 2560 2816 3072 3328 3584 3840 4096 Taille de la clé de chiffrement RSA
La méthode Joiner.join de Guava 4000 com.google.common.base.joiner$2.appendto 3000 Energie (joule) 2000 1000 0 2 6 10 14 18 22 26 30 34 38 42 46 50 Nombre de chaînes de caractères
En conclusion Problématique de l énergie dans les logiciels! Modèles pour mesure la consommation au niveau le plus fin (application, code source)! Développement d un «microscope énergétique» : Jalen! Étude de la variation énergétique en utilisant des benchmarks avec Jalen Unit
Publications Adel Noureddine, Romain Rouvoy, and Lionel Seinturier. Inferring Automatically the Energy Consumption of Software Libraries. In Software Engineering Aspects of Green Computing track of the 29th Annual ACM Symposium on Applied Computing (SAC'14). Gyeongju, South Korea, March 2014.! Adel Noureddine, Aurélien Bourdon, Romain Rouvoy, and Lionel Seinturier. Runtime Monitoring of Software Energy Hotspots. In the 27th International Conference on Automated Software Engineering (ASE'12). Pages 160-169. Essen, Germany, September 2012. Acceptance rate: 15%.! Adel Noureddine, Aurélien Bourdon, Romain Rouvoy, and Lionel Seinturier. A Preliminary Study of the Impact of Software Engineering on GreenIT. In the First International Workshop on Green and Sustainable Software (GREENS'12/ICSE'12). Zurich, Switzerland, June 2012. Acceptance rate: 41%.