green pattern & architecture

Post on 18-May-2015

177 Views

Category:

Technology

3 Downloads

Preview:

Click to see full reader

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 tleboucq@kaliterre.fr 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 contact@olivierphilippot.fr 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 keelan.clech@sogeti.com Directeur du Centre de Services Microsoft Sogeti et .NET Ranger

Eric MITTELETTE ericmitt@microsoft.com 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

top related