green pattern & architecture
DESCRIPTION
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.TRANSCRIPT
Vous êtes dans la salle 242B
palais des congrès Paris
7, 8 et 9 février 2012
L’innocent Chat potté 70 Millions d’heure de calcul, 25 TJoules http://dwave.wordpress.com/2011/11/20/fun-with-puss-n-
boots/
Intro
23 minutes If you could eat 500 bananas per day, it would take you 327 years
PrésentationJeune Entreprise Innovante basée à Nantes, spécialisée dans l’informatique Durable, l’éco-conception des logiciels et la RSE dans les entrepriseswww.kaliterre.fr
Thierry LEBOUCQ [email protected] 06 88 71 50 50Co-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 [email protected] 06 63 09 06 90Auteur 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 [email protected] Directeur du Centre de Services Microsoft Sogeti et .NET Ranger
Eric MITTELETTE [email protected] Relation Technique Développeur & IT
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
Fausses idées
2 Dimensions: Cycle de vie : du berceau à la tombe Domaines : 3 piliers du développement durable
Social Environnemental Economique
Périmètre
Source Kaliterre
Processus logiciel inefficace Etude CHAOS : 20% de réussite
Développement quick-and-dirty Dette technique et environnementale
Processus plus vert
« Ce qui ne peut pas être mesuré ne peut pas être géré». Peter Drucker
La mesure
MESURE SOFT
MESURE HARD
Infrastructure et moyens de mesure que nous allons utiliser
Demo
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
Optimisation de la qualité de service
Réduction des updates autosRéduction du jeu de donnée
Demo
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 auto-réalisatrice
Langage, matériel et compilation
12
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...
Efficacité d'architecture
Tri client vs serveur
Demo
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
Efficacité de calcul
Traitement parallèle vs traitement séquentiel
Demo
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
Fréquence & CPU
Source : Energy-Efficient Platforms – Considerations for Application Software & Services - http://software.intel.com/file/38273
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 !
Timers
Demo sous Intel Battery Life Analyser et Microsoft Windows Performance Analyzer
Demo
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éesstruct { bool b;
double d; short s; int i;}
struct { double d;int i;short s;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)]
Efficacité des données
La structure va donc occuper: 1 (bool) + 7 (padding) + 8 (double) + 2 (short) + 2 (padding) + 4 (int) = 24 bytes
La taille sera de 8 (double) + 4 (int) + 2 (short) + 1 (bool) + 1 (padding) = 16 bytes.
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…
Prise en compte du contexte
Exemple de surveillanceconst 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. }}
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
Fin de vie du logiciel
Répondre au besoin de tousEviter 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 !
Social / Accessibilité
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 !
Ressource et call to action
Merci
Vous êtes dans la salle 242B