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
2007-2008
0 400 800 1200 1600
Consommation électrique (GW) Empreinte carbone (MtCO2e)
2%
7%
Consommation des TICs
2020
0 400 800 1200 1600
Consommation électrique (GW) Empreinte carbone (MtCO2e)
Consommation et empreinte
x2
14%
“Il faut optimiser la consommation énergétique des
ordinateurs et des logiciels.”
“Il faut optimiser la consommation énergétique des ordinateurs et des logiciels.”
Optimiser
Mesurer
Ç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 ✖️
✔️ Code source ✖️ ✖️
Idéal
Mesure énergétique des logiciels!
…et ce que nous faisons avec !
Approches
Mesure du code source
Mesure du code source
Matériel & OS Application
Mesure du code source
Matériel & OS
Application Utilisant des
resources matériels
Mesure du code source
Modèles énergétiques
Matériel & OS
Application Utilisant des
resources matériels
Consommation énergétique du matériel
Documentation des fabricants
Mesure du code source
Modèles énergétiques
Matériel & OS
Application Utilisant des
resources matériels
Consommation énergétique du matériel Utilisation des resources
par le logiciel
Documentation des fabricants
Mesure du code source
Utilisation des resources par le code source
Modèles énergétiques
Matériel & OS
Application Utilisant des
resources matériels
Consommation énergétique du matériel Utilisation des resources
par le logiciel
Documentation des fabricants
Mesure du code source
Utilisation des resources par le code source
Consommation énergétique du process
Modèles énergétiques
Matériel & OS
Application Utilisant des
resources matériels
Consommation énergétique du matériel Utilisation des resources
par le logiciel
Documentation des fabricants
Mesure du code source
Utilisation des resources par le code source
Consommation énergétique du code
source du logiciel Consommation énergétique du process
Modèles énergétiques
Matériel & OS
Application Utilisant des
resources matériels
Consommation énergétique du matériel Utilisation des resources
par le logiciel
Documentation des fabricants
Benchmarking du code
Benchmarking du code
Librairie logicielle
Benchmarking du code
Détection des classes et méthodes de la librairie Librairie
logicielle
Benchmarking du code
Détection des classes et méthodes de la librairie
Génération de
benchmarks pour chaque méthode et paramètre Librairie
logicielle
Benchmarking du code
Détection des classes et méthodes de la librairie
Exécution des
benchmarks et mesure de l’énergie avec Jalen
Génération de
benchmarks pour chaque méthode et paramètre
Mesure niveau code source
Librairie logicielle
Benchmarking du code
Détection des classes et méthodes de la librairie
Exécution des
benchmarks et mesure de l’énergie avec Jalen
Génération de
benchmarks pour chaque méthode et paramètre
Mesure niveau code source
Librairie logicielle
Agrégation des résultats et génération du modèle
énergétique
Jalen : mesure énergétique
au niveau code source
Jalen architecture
Machine virtuelle Java
Jalen architecture
Matériel et OS Application Java
Machine virtuelle Java
Jalen architecture
Jalen
Matériel et OS Application Java
Machine virtuelle Java
Jalen architecture
Consommation énergétique du code
source du logiciel
Jalen
Matériel et OS Application Java
Échantillonnage statistique
Application Java
Échantillonnage statistique
Jalen
Méthode 1
…
Méthode nApplication Java
Échantillonnage statistique
Jalen
Méthode 1
…
Méthode nDonnées collectées : statistiques sur les méthodes, entrées/sorties, utilisation des APIs, etc.
Application Java
Échantillonnage statistique
Jalen
Méthode 1
…
Méthode nCalculs et corrélation (collecte de mesures et modèles)
Données collectées : statistiques sur les méthodes, entrées/sorties, utilisation des APIs, etc.
Application Java
Échantillonnage statistique
Consommation énergétique du code source du logiciel
Jalen
Méthode 1
…
Méthode nCalculs et corrélation (collecte de mesures et modèles)
Données collectées : statistiques sur les méthodes, entrées/sorties, utilisation des APIs, etc.
Application Java
Échantillonnage statistique
Consommation énergétique du code source du logiciel
Jalen
Méthode 1
…
Méthode nCalculs et corrélation (collecte de mesures et modèles)
Données collectées : statistiques sur les méthodes, entrées/sorties, utilisation des APIs, etc.
Boucle de monitoring de
l’application
Application Java
Échantillonnage statistique
Consommation énergétique du code source du logiciel
Jalen
Méthode 1
…
Méthode nCalculs et corrélation (collecte de mesures et modèles)
Données collectées : statistiques sur les méthodes, entrées/sorties, utilisation des APIs, etc.
Boucle de monitoring de
l’application
Boucle de monitoring au
niveau code
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
Méthode 3 Méthode 4 Méthode 5
Méthode JDK 1 Méthode JDK 2
Résultats filtrées
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
Détection des classes et méthodes de la librairie
Exécution des
benchmarks et mesure de l’énergie avec Jalen
Génération de
benchmarks pour chaque méthode et paramètre Librairie
logicielle
Agrégation des résultats et génération du modèle
énergétique
Jalen
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
Energie (joule)
0 4500 9000 13500 18000
Tours de Hanoi: I/O - Print
Avec print
Sans Print
Energie (joule)
0 4500 9000 13500 18000
x13
Serveur web Jetty
Serveur web Jetty
Energie (joule)
0 525 1050 1575 2100
Nombre d’invocations
0 11250 22500 33750 45000
BlockingArrayQ ueue
.poll
JarFileRes
ource.exists
JarFileRes
ource.newCo
nnecti on
ManagedSelecto
r.select
Cha nnel
EndPoint.flush ServerCo
nnecto
r.accept
ManagedSelecto
r.wakeup
Cha nnel
EndPoint.shutd
ownOutput
FileRes
ource.normalizeURI FileRes
ource.isDirecto ry
Nombre d'invocations Energie (joule)
Énergie par invocation
Energie (joule)
0 0,15 0,3 0,45 0,6
BlockingArrayQ ueue
.poll
JarFileRes
ource.exists
JarFileRes
ource.newCo
nnecti on
ManagedSelecto
r.select
Cha nnel
EndPoint.flush ServerCo
nnecto
r.accept
ManagedSelecto
r.wakeup
Cha nnel
EndPoint.shutd
ownOutput
FileRes
ource.normalizeURI FileRes
ource.isDirecto ry
Benchmarking de la
variation énergétique
Algorithme de chiffrement RSA
Energie (joule)
0 450 900 1350 1800
Taille de la clé de chiffrement RSA
1024 1280 1536 1792 2048 2304 2560 2816 3072 3328 3584 3840 4096
Algorithme de chiffrement RSA
Energie (joule)
0 300 600 900 1200
Taille de la clé de chiffrement RSA
1024 1280 1536 1792 2048 2304 2560 2816 3072 3328 3584 3840 4096
java.math.BigInteger.oddModPow java.math.BigInteger.montReduce Autres
La méthode Joiner.join de Guava
Energie (joule)
0 1000 2000 3000 4000
Nombre de chaînes de caractères
2 6 10 14 18 22 26 30 34 38 42 46 50
com.google.common.base.Joiner$2.appendTo
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%.