Les outils pour programmer vert

Introduction

Après avoir vu l’importance d’adopter des techniques de programmation plus économe en ressources et étudié quelques pistes dans notre précédent dossier, nous allons ici aller plus loin et passer en revue les outils logiciels et matériels qu’il convient d’utiliser. Au-delà des techniques de programmation, le développeur est en effet de moins en moins livré à lui-même dans sa lutte contre le gaspillage énergétique. On commence à voir se multiplier les initiatives pour lui faciliter la tâche même si la plupart sont encore embryonnaires, immatures et probablement insuffisantes.

Le Wattmètre

Image 1 : Les outils pour programmer vertLa première et meilleure arme du développeur dans sa lutte contre le gaspillage énergétique, c’est le Watt Mètre. Cet appareil, qui ne coûte que quelques euros (environ 15 €) est indispensable pour comprendre l’impact d’un algorithme, d’un timer plus lâche, d’une animation, ou ne serait-ce que d’un choix de couleurs sur la consommation de la machine. C’est d’ailleurs une chose assez surprenante de découvrir comment quelques actions simples peuvent influencer la consommation du PC.

Les API de gestion de la consommation

Un bon programme “vert” devrait être à l’écoute des messages de gestion de l’alimentation en provenance du système. Par exemple sous windows, tout programme devrait écouter les évènements WM_POWERBROADCAST. En mettant vos programmes à l’écoute des messages du système vous pourrez par exemple supprimer les animations graphiques ou adapter les couleurs de l’écran lorsque l’ordinateur est sur la batterie.

Autre élément important, Windows 7 introduit au cœur du système la gestion des “capteurs” comme les capteurs de lumière. Reliés à la gestion ACPI, ils permettent par exemple au système d’ajuster automatiquement la luminosité de l’écran en fonction de la lumière environnante. Mais les programmes peuvent également tirer parti de ces capteurs au travers des nouvelles API (ISensorManager, ISensorEvents, ISensorDataReport). Ainsi, le développeur peut, par exemple, choisir d’appliquer des thèmes de couleurs différents selon les conditions de lumière et de lisibilité (par exemple un thème très contrasté pour une utilisation en extérieur, et un thème plus économe pour une utilisation en intérieur).

Image 2 : Les outils pour programmer vertOn l’a vu précédemment, l’une des principales causes de sur-consommation d’un programme est l’emploi de timers multiples et à intervalles ultra-faibles qui tendent à pousser le CPU à 100 % et à l’interrompre dans ces “Idles”. Pour contrer ces phénomènes, Microsoft a introduit une nouvelle technologie de fusion des timers (Timer coalescing). Si celle-ci agit en partie automatiquement, elle n’est vraiment intéressante que si les programmeurs exploitent les nouvelles API. Les nouveaux paramètres de RegisterPowerSettingNotification donnent davantage de souplesse dans la gestion des timers, le développeur autorisant le système à quelques largesses dans la gestion des intervalles.

SetWaitableTimerEx (qui remplace l’ancien mécanisme de Timer SetWaitableTimer) possède deux nouveaux paramètres : WakeContext and TolerableDelay. On utilise WakeContext seulement lorsqu’on définit un timer qui doit réveiller le système lorsqu’il est dans un état d’attente. TolerableDelay permet de spécifier une tolérance dans le déclenchement du timer.

Compilateurs, languages et frameworks

Compilateurs et langages

Pour l’instant, il n’existe pas vraiment de langages spécifiquement conçus et dédiés aux économies d’énergie. Certains s’en revendiquent comme le langage “D”. Mais la mode étant plutôt à l’augmentation des niveaux d’abstraction, les problématiques d’économie d’énergie sont mises en arrière-plan. Toutefois, les centres de recherche d’IBM et de Microsoft ont publié différents papiers sur les moyens d’implémenter des “patterns” écologiques qui devraient se concrétiser dans les prochaines générations d’outils de modélisation.

Il en va un peu de même des compilateurs. Aucun ne propose d’options “-green” qui optimiserait la compilation dans le sens d’une meilleure gestion de l’énergie. Cependant tous les compilateurs disposent d’options qui permettent de calibrer le binaire pour les générations les plus récentes de processeurs (en utilisant par exemple les jeux d’instruction SSE) et de privilégier la vitesse d’exécution sur la compacité. Les développeurs devraient systématiquement utiliser ces options de compilation (O2/O3 en GCC) même si elles contribuent à davantage de consommation mémoire et nuisent à la compacité du code binaire. En matière de “Green”, la performance l’emporte.

L’une des évolutions qui se montrera la plus probante est probablement l’insertion d’outils de vérification formelle dans les outils de développement et les compilateurs. Leur objectif ? S’assurer que le code du développeur ne comporte pas de bugs ! Ainsi, MS Research a développé un Vista Static Driver Verifier qui prouve mathématiquement que le pilote est bien écrit. De tels vérificateurs devraient se généraliser dans les prochaines générations d’outils de développement et devraient concourir à la création d’applications qui ne plantent plus. Or on l’a vu, la stabilité d’un programme est l’une des meilleures assurances écologiques qui soient.

Vers des frameworks Verts ?

En 2004 déjà, une étude montrait comment la machine virtuelle Java influait sur la consommation électrique et quels étaient les OpCodes les plus consommateurs. L’étude montrait également le rôle fondamental de l’utilisation de la mémoire dans la consommation d’énergie et le poids conséquent imposé par l’interpréteur. L’étude suspectait dès lors que toutes les techniques de JIT permettraient de diminuer notablement la consommation électrique des applications Java. Cette étude peut s’extrapoler à JavaScript et à la nécessité d’utiliser aujourd’hui des navigateurs possédant des compilateurs JavaScript performants.

Image 3 : Les outils pour programmer vert

Universités et centres de recherche se penchent aujourd’hui sérieusement sur les moyens d’automatiser les économies d’énergie au travers de nouveaux frameworks. L’université d’Harvard s’intéresse notamment au potentiel des “many cores” (ces futurs processeurs qui embarquent de multiples cœurs hétérogènes). Ses chercheurs imaginent un nouveau paradigme logiciel sensible à la fois au comportement des différents threads et aux détails de l’environnement dans lequel ils s’exécutent. Ils proposent ainsi un environnement d’exécution dynamique qui co-existe avec le système d’exploitation. Celui-ci surveille et modifie dynamiquement le flux d’instructions des threads en cours d’exécution afin de rester dans les limites de consommation électrique définies et de s’assurer que la quantité de puissance consommée par chaque thread est bien proportionnelle à son efficacité (travaux de David Brooks, A Synergistic Approach To Adaptive Power Management).

Dans un même ordre d’idées, le projet Sooner de l’université de l’Oklahoma (dirigé par Ronald Barnes) est un framework de simulation qui fournit de nombreuses informations sur la performance et la consommation d’énergie durant l’exécution simulée des programmes. Différents modèles permettent d’évaluer les variations de consommation en fonction du placement des instructions dans les différents cœurs (là encore l’université vise principalement les many cores). L’objectif à terme est de simplifier la création de compilateurs et de systèmes d’exploitation prenant en compte la consommation énergétique.

Image 4 : Les outils pour programmer vert

3 outils de développement verts

Tout développeur “vert” devrait connaître les trois outils suivants. Ils sont actuellement ses meilleures armes (avec le Watt Mètre) pour comprendre le comportement de son programme et son influence sur la consommation d’énergie du PC.

  • PowerTOP

PowerTOP est un outil d’Intel pour Linux qui analyse la consommation énergétique des logiciels en cours d’exécution. Il affiche le pourcentage de temps écoulé dans les différents modes de consommation des processeurs et fournit une liste détailles des processus qui réveillent le plus souvent le processeur. Ce programme aide les développeurs à tester le comportement de leurs applications et leur suggère des optimisations pour améliorer la consommation d’énergie.

Image 5 : Les outils pour programmer vert

  • PowerCFG

Vista avait introduit une nouvelle commande de gestion de l’alimentation, PowerCfg. Particulièrement utile aux développeurs de drivers, celle-ci a été complétée et améliorée sous Windows 7 afin d’aider les développeurs à diagnostiquer leurs pilotes et les problèmes de consommation énergétique :

powercfg  -energy  output c:power-report.html

Pour être efficace, cette commande doit être lancée sur un système inactif (mode idle) au moins 10 minutes après le lancement du système et sans aucune application en cours d’exécution. Le rapport fournit signale tous les évènements “graves” (en termes de manquement à l’économie d’énergie) et notamment tous les périphériques/pilotes qui ne respectent pas les règles de veille, fournit différentes alertes reposant sur des compteurs systèmes anormalement élevés (tâches sur-consommatrices, processus excessifs, problèmes de timers) et différentes informations sur les capacités d’économie d’énergie du PC.

  • XPerf

XPerf s’adresse lui à tous les développeurs Windows. Ce module qui appartient au Windows Performance Toolkit permet une analyse à postériori de l’exécution d’un programme. Il fournit de nombreux graphiques sur la consommation CPU, l’utilisation des coeurs, les IO, et les évènements liés à la gestion de la consommation.

Un univers de logiciels verts

Mais le rôle des développeurs ne s’arrête pas à l’optimisation de leurs codes et de leurs drivers. On se tourne désormais vers eux pour créer les outils susceptibles d’influencer l’écologie à l’échelle de la planète. Après tout, la consommation énergétique de l’industrie informatique n’est que de 2% (certes c’est déjà beaucoup). Mais comme le disait Rob Bernard (Microsoft’s chief environmental strategist) lors de l’ouverture de la conférence “Green:net 2009”, la vraie question est de savoir ce que l’industrie du logiciel peut faire pour les 98% restants.

Car les domaines dans lesquels les logiciels peuvent contribuer à diminuer l’empreinte carbonne de nos activités sont très nombreux. Et c’est aux développeurs d’aujourd’hui de créer, imaginer et inventer les applications qui modifieront l’influence de l’activité humaine sur l’environnement.

  • Communications unifiées, Télétravail, Live Meeting, Round Table

L’un des axes de développement les plus prometteurs tournent autour du télétravail et des moyens de communication. Tous les outils qui facilitent la réalisation de réunions à distance sans que personne n’ait à se déplacer vont forcément dans le bon sens et réduisent l’empreinte CO2 d’une entreprise. Exemple parlant : Microsoft, l’une des entreprises avec Google à posséder les plus gigantesques DataCenter au monde, a établi que, sur la totalité de ses émissions globales de CO2, 30% provenaient de ses datacenters et 40% provenaient des déplacements de ses employés ! Cela donne une bonne idée de l’impact que peuvent avoir les outils de conférence sur l’écologie.

  • Les logiciels de modélisation

Parce qu’ils réduisent les temps de construction, évitent les fabrications de maquettes, limitent le nombre de prototypes, les logiciels de modélisation ont un impact fort sur l’amélioration du bilan carbone des entreprises. A titre d’exemple, on retiendra que les 3 dernières acquisitions d’Autodesk ont un rapport direct avec l’écologie : Carmel Software offre des outils de simulation des besoins en chauffage et climatisation, Green Building Studio analyse la consommation energétique et les émissions CO2 de l’immeuble en construction et Ecotect simule la façon dont le soleil, l’ombre et la circulation d’air affecte la consommation d’énergie des futurs locataires.

Image 6 : Les outils pour programmer vert

D’autres logiciels verts

  • Le e-commerce, la VOD et la dématérialisation

L’étude Smart 2020 évalue l’économie de CO2 réalisable mondialement grâce au e-commerce à 30 Millions de tonnes. Parallèlement, une étude du CGTI de 2007 estimait que la pratique du télé-achat pour les courses ménagères hebdomadaires pourrait réduire d’un facteur 10 les émissions de dioxyde de carbone (soit un gain de 3 kg par semaine par foyer pratiquant ce mode d’achat).

Tout ce qui est dématérialisation contribue à améliorer le bilan carbone de nos civilisations. Il en va de la distribution de la musique et des vidéos comme de la dématérialisation des procédures administratives de l’état (comme les impôts en ligne).

  • Des systèmes pour mieux gérer l’énergie

Autre axe très en vogue, tous les logiciels qui permettent aux entreprises d’évaluer et optimiser leur “bilan carbone”. SAP et Oracle vont lancer cette année de nouveaux logiciels pour aider les entreprises à mieux mesurer et surveiller leur consommation d’énergie dans leurs différentes activités. En février, Microsoft a ajouté à sa gamme Dynamics AX un “tableau de bord environnemental” qui agrège les indicateurs permettant de suivre la consommation en carburant et en électricité et fournit une estimation des émissions CO2. Le cabinet d’étude AMR estimait à 3,6 milliards de dollars en 2008 le marché des logiciels et services permettant aux entreprises de collecter et analyser leurs émissions carbone.

Image 7 : Les outils pour programmer vert

De même une étude publiée en début d’année par Forrester montrait que 13% des entreprises avaient déjà adopté des outils de gestion de la consommation des PC et que 30% étaient en phase pilote sur de telles pratiques. Chez IBM, l’initiative “Smarter Planer” cherche à adresser plus directement les problématiques de changement climatique en fournissant des solutions logicielles comme celles mises en œuvre à Stockholm qui ont permit de redéfinir les plans des bus pour réduire d’un cinquième le trafic et diminuer de 12% les émissions de carbone.

Image 8 : Les outils pour programmer vert

Image 9 : Les outils pour programmer vert

Conclusion

Nous l’avons vu, les développeurs ont bien un rôle essentiel à jouer dans la nécessaire lutte contre les gaspillages et la préservation de notre planète. Et tout reste encore à faire, ce qui ouvre d’intéressantes perspectives dans le contexte économique actuel.

Les développeurs ont un devoir quant au respect écologique du code qu’ils écrivent. Ils ont également un impact fondamental dans la création de nouveaux outils pour aider les entreprises à mieux gérer leur consommation d’énergie dans toutes leurs activités et non uniquement dans leurs activités informatiques.

Image 10 : Les outils pour programmer vertEnfin, ils ont aussi à jouer un rôle social et évangélisateur auprès du grand public. Dans son livre “Saving the World At Work (What Companies and Individuals Can Do to Go Beyond Making a Profit to Making a Difference)“, Tim Sanders prône l’avènement d’un Web 3.0. Pour lui, si le Web 1.0 était celui de la liberté d’information et le Web 2.0 celui des communautés, le Web 3.0 sera celui de la responsabilité sociale et de la responsabilité écologique des applications Web produites. Il suggère notamment de n’utiliser les animations que lorsqu’elles sont vraiment utiles au lieu de les employer à tire larigot simplement pour faire plus joli. Il reproche à la plupart des animations d’être essentiellement des pertes de temps qui ralentissent le processus global. Mieux vaut être directement productif et rapide. Selon lui, une application peut être incroyablement visuelle et ergonomique sans déborder d’animation. Mais les impacts écologiques de ce Web 3.0 s’étendent au-delà de la technique. Au travers des initiatives comme celles des Labs de DoTheGreenThing ou les API “vertes” de Wattzon.com, ce Web 3.0 espère éduquer tout internaute (et l’amener inconsciemment) aux idées de préservation de la planète…