L’impact énergétique et environnementale de la couche logicielle est souvent mal connue et ignorée. Pourtant certain choix d’implémentation ont des impacts fort sur la performance et l’impact énergétique des solutions logicielles. La mise en oeuvre de solutions ou de services dans une ferme de serveur amplifie rapidement l'impact économique de la consomation énergétique... Code interprété versus code compilé, code parallèle, architecture service… seront les sujets abordés lors de cette session, ou nous présenterons l’état de l’art en matière de d’eco conception logicielle et la recherche de green pattern.
3. Intro
L’innocent Chat potté
70 Millions d’heure de calcul, 25 TJoules
http://dwave.wordpress.com/2011/11/20/fun-with-puss-n-boots/
If you could eat 500 bananas per day, 23 minutes
it would take you 327 years
4. Présentation
Jeune Entreprise Innovante basée à Nantes, spécialisée dans l’informatique
Durable, l’éco-conception des logiciels et la RSE dans les entreprises
www.kaliterre.fr
Thierry LEBOUCQ tleboucq@kaliterre.fr 06 88 71 50 50
Co-auteur du livre Green Patterns : http://greencodelab.fr/Livre
Groupe d'utilisateurs qui souhaite rendre le développement logiciel plus
durable et plus vertueux http://greencodelab.fr/
Olivier Philippot contact@olivierphilippot.fr 06 63 09 06 90
Auteur du livre « Green IT » et co-auteur du livre « Green Patterns »
Co-fondateur groupe eco-conception logiciel
Sogeti compte 20 000 collaborateurs répartis dans 15 pays. 6000 d’entre
eux sont dédiés aux technologies Microsoft.
Les .NET Rangers : groupe d’experts avec un fort ancrange dans
l’écosystème Microsoft (plusieurs MVP) http://www.dotnetrangers.net
Keelan CLECH keelan.clech@sogeti.com
Directeur du Centre de Services Microsoft Sogeti et .NET Ranger
Eric MITTELETTE ericmitt@microsoft.com
Relation Technique Développeur & IT
5. Fausses idées
Performance = efficace = efficient
2000 tr/mn ?= faible consommation
Le cloud s’est le futur
Lavoisier : « Rien se perd… »
Eco-conception = efficacité énergétique
Pas uniquement
6. Périmètre
2 Dimensions:
Cycle de vie : du berceau à la tombe
Domaines : 3 piliers du développement durable
Social
Environnemental
Economique
Source Kaliterre
7. Processus plus vert
Processus logiciel inefficace
Etude CHAOS : 20% de réussite
Développement quick-and-dirty
Dette technique et environnementale
8. La mesure
« Ce qui ne peut pas être mesuré ne peut pas être géré».
Peter Drucker
10. Optimisation de la qualité de
service
Logiciel suréquipé
Exemple : étude Standish Group
Solutions
Optimiser la qualité de service
Exemple étude Microsoft avec Bing :
20 résultats Gain de 80% en conso
Installation modulaire
Voire intelligente et transparente
pour l’utilisateur !
Mieux identifier l’expression de besoin
12. Langage, matériel et
compilation
Langage
Back to basics ou …
… meilleure connaissance du runtime
Exemple : Facebook avec le projet
Hip-Hop qui compile le code PHP en C++
Scalabilité = course à l’armement
Scalabilité inverse
Exemple node.js
Support des plateformes Light (ARM..)
Oubliez la synchronisation
Loi de Moore : prophétie
2 1
auto-réalisatrice
13. Efficacité d'architecture
Répartition des calculs entre client/serveur
Mettre les calculs dans l’endroit où l’on peut optimiser
Dans un serveur … mais maîtrisé
Provisionning et de-Provisionning
Comment et à quel moment répartir les job sur plusieurs
châssis /VM
Monitoring application, publier son état, quota...
15. Efficacité de calcul
Optimiser le traitement des algos
Intelligent ET optimisé !
Eviter le polling
Pas de sleep mais des interruptions ...
Optimisez les boucles
Sortie en cas d'erreur par exemple
Sortir le plus de calcul
Traitement parallèle
Eviter les traitements non concurrents
Danger de consommer plus qu’en mono-coeur
17. Fréquence & CPU
Oubliez le % CPU, focalisez vous sur les timers et les
fréquences
Transition Cstate to idle coûteux
Métriques : Fréquence & durée d’éxécution
Source : Energy-Efficient Platforms – Considerations for
Application Software & Services -
http://software.intel.com/file/38273
18. Timers
SetWaitableTimerEx(
__in HANDLE hTimer,
__in const LARGE_INTEGER *lpDueTime,
__in LONG lPeriod,
__in_opt PTIMERAPCROUTINE pfnCompletionRoutine,
__in_opt LPVOID lpArgToCompletionRoutine,
__in_opt PREASON_CONTEXT WakeContext,
__in ULONG TolerableDelay
);
Indiquez votre tolérance pour votre timer
2 ticks -> 32 ms
Timers de plusieurs secondes --> jusqu'à 1 s de
tolerance !
19. Demo
Demo sous Intel Battery Life Analyser et Microsoft
Windows Performance Analyzer
20. Efficacité des données
Localisation des données
Registre - 1 cycle
Cache L1 - 3 cycles
Cache L2 - 10 cycles
Mémoire RAM - ~100 cycles
Disque dur - ~ 1 millions de cycle
Coût des données
struct { bool b;
double d; La structure va donc occuper: 1 (bool) + 7 (padding) + 8
(double) + 2 (short) + 2 (padding) + 4 (int) = 24 bytes
short s;
int i;}
struct { double d;
int i;
short s; La taille sera de 8 (double) + 4 (int) + 2 (short) + 1
(bool) + 1 (padding) = 16 bytes.
bool b;};
Interfaces de marshalling pour améliorer le placement en managé
[StructLayout(LayoutKind.Sequential, Pack = 1)]
[StructLayout(LayoutKind.Explicit)] avec des champs [FieldOffset(0)]
21. Prise en compte du contexte
Un logiciel n’est pas une unité indépendante
Il doit communiquer avec l’extérieur
Une programme « context-aware » sera plus intelligent
et prendra mieux en compte les impacts
environnementaux
Prise en compte de la gestion d’énergie (Power-Aware)
Power Management API
Events, Api…
22. Exemple de surveillance
const int WM_POWERBROADCAST = 0x0218;
const int PBT_APMQUERYSUSPEND = 0x0000;
const int PBT_APMQUERYSTANDBY = 0x0001;
const int PBT_APMQUERYSUSPENDFAILED = 0x0002;
const int PBT_APMQUERYSTANDBYFAILED = 0x0003;
const int PBT_APMSUSPEND = 0x0004;
const int PBT_APMSTANDBY = 0x0005;
const int PBT_APMRESUMECRITICAL = 0x0006;
const int PBT_APMRESUMESUSPEND = 0x0007;
const int PBT_APMRESUMESTANDBY = 0x0008;
const int PBT_APMBATTERYLOW = 0x0009;
const int PBT_APMPOWERSTATUSCHANGE = 0x000A;
const int PBT_APMOEMEVENT = 0x000B;
const int PBT_APMRESUMEAUTOMATIC = 0x0012;
protected override void WndProc(ref Message m)
{
base.WndProc(ref m);
if (WM_POWERBROADCAST == m.Msg)
{
// Réalisez les actions en fonction des messages.
}
}
23. Fin de vie du logiciel
Eviter le bloatware
Ne pas perturber les autres logiciels
Mieux gérer les données
Fichiers temporaires
Registres…
Site web inactifs
Désinstallation automatique
Exemple Thunderbird
24. Social / Accessibilité
Répondre au besoin de tous
Eviter la fracture numérique et la cyber fracture
Respecter les normes d’accessibilité et recommandation
W3
Livre Blanc TiC & Senior
Généraliser l’accessibilité et l’ergonomie pour tout les
logiciels et pas uniquement sur une segmentation
Non aux logiciels pour informaticiens fait par des
informaticiens !
25. Ressource et call to action
Actions et initiatives
Réflexion AFNOR et ISO : normalisation et guideline
Green Software Engineering : Recommandations Web
Green Challenge USI
Projet Code Vert : Outil d’analyse des green patterns
Green Code Lab : Actions sur l’éco-conception
Livre Green Code Lab disponible !