Une programmation économe
⏱ 6 min[vc_row][vc_column][vc_column_text]Certes, le codage a un impact en termes de consommation énergétique, mais c’est surtout la compilation en instructions machine, puis leur exécution, finement mesurable, qui influencent la consommation énergétique. Des solutions existent désormais pour « programmer responsable ».
Les développeurs ont longtemps travaillé dans un monde sans limite où les capacités de stockage et de calcul du matériel, sans cesse croissantes (et à bas coût), occultaient l’obésité grandissante des logiciels. L’efficience logicielle est apparue comme une préoccupation critique plus récemment, en partie liée à l’essor des tablettes et smartphones dont le fonctionnement sur batterie impose des économies. Mais comme le rappelle Frédéric Bordage, consultant en écoconception de services numériques et créateur du site GreenIT.fr : « La phase de développement de code ne représente que 10 à 20 % des gains environnementaux potentiels, c’est l’utilisation qui concentre les impacts (voir article « L’impact énergétique du numérique » de notre dossier). L’objectif est de créer des logiciels sobres, centrés sur l’essentiel et qui ont besoin du minimum en termes de ressources informatiques (serveurs, bande passante, puissance des terminaux) pour réaliser une tâche comme réserver un billet de train (on parle d’unité fonctionnelle). »
De manière générale, les développeurs de logiciels déployés dans le cloud gagneraient à porter plus d’attention aux aspects énergétiques, confirme Romain Rouvoy, professeur à l’université de Lille 1 et chercheur chez Inria : « Leur priorité concerne aujourd’hui la fonctionnalité. À l’image des bugs informatiques, considérés comme du domaine de la maintenance, ils perçoivent encore la consommation énergétique comme une préoccupation mineure. Or, celle-ci augmente avec la complexité croissante des logiciels. Il faut donc se poser ces questions à tous les niveaux de développement, et prendre des décisions avisées dès les premières phases, pas seulement au moment de payer la facture au data center pour constater les ressources consommées par les logiciels qui y sont déployés ! »
Mesurer les performances
L’optimisation passe d’abord par la mesure des performances énergétiques. Comment ? À l’échelle d’un ordinateur en y branchant un wattmètre, une solution certes précise mais chère et complexe. À celle du processeur grâce à des sondes d’énergie comme celles des processeurs Intel (technologie RAPL La technologie RAPL (Running Average Power Limit) n’est pas, à proprement parler, un mesureur de puissance. Elle estime la puissance consommée sur la base d’un modèle de puissance logicielle. depuis la génération SandyBridge). Suite à ces mesures, des solutions d’économie d’énergie ont été rapidement mises en œuvre comme le DVFS (Dynamic Voltage and Frequency Scaling) ou le power capping, rappelle Romain Rouvoy, professeur à l’université de Lille 1 et chercheur chez Inria : « cela consiste à limiter la consommation des processeurs en fixant un plafond de vitesse d’exécution ou de consommation, la machine adapte sa vitesse de traitement et par conséquent bride sa consommation. Cela existe par exemple dans les architectures récentes d’Intel, depuis la génération Skylake. »
« Le plus efficace consiste néanmoins à réduire la couverture et la profondeur fonctionnelle des applications,ajoute Frédéric Bordage. Autrement dit à ne conserver que les fonctionnalités nécessaires, à supprimer le code superflu qui consomme inutilement. Cela peut consister à réduire le nombre d’éléments affichés, bien choisir le taux de compression des images, le temps de réponse de l’application, etc. » Autant d’impacts des applications que l’on peut désormais mesurer. De fait, les différences en consommation de ressources (CPU, mémoire, espace disque, etc.) entre deux logiciels peuvent être énormes pour une même unité fonctionnelle. Parmi les premiers outils de mesure, citons le kit de développement Intel Energy Checker, développé en 2010, un compteur d’unité de « travail utile » (envoi de mail, requête, calcul de rendu d’un pixel) connecté à un wattmètre qui permet aux développeurs d’évaluer l’efficience énergétique de leurs logiciels.
À la même période, Microsoft proposait son JouleMeter remplacé depuis par l’Energy Consumption Tool, un outil de Visual Studio, l’atelier de développement de Microsoft, qui estime la consommation à partir d’un modèle de puissance logicielle calibré sur des périphériques de référence : l’outil permet de savoir précisément quel composant (CPU, réseau, écran) consomme de l’électricité et quand, lors de l’exécution d’une application sur une plateforme Windows. Des logiciels comme Greenspector, de la startup française éponyme, permettent d’auditer le code lors du développement d’un logiciel pour identifier les surconsommations à la source.
« En 2012, nous avons développé notre propre wattmètre virtuel, ajoute Romain Rouvoy. Baptisé PowerAPI, il permet d’estimer en temps réel la consommation de chaque logiciel qui s’exécute sur une machine en lien avec ses différents composants (processeur, mémoire, disque). L’évaluation repose sur un calcul à base de formules énergétiques, donc sans avoir recours à un wattmètre matériel. L’outil permet également aux opérateurs de data centers de centraliser les informations sur la consommation de leurs logiciels et de les analyser plus finement. » Comme pour l’outil de Microsoft, la base de données des consommations énergétiques des divers composants doit être maintenue à jour.[/vc_column_text][vc_empty_space][/vc_column][/vc_row][vc_row][vc_column][vc_cta h2= » »]
Les labels Green de référence
Concernant les sites web, le collectif conception numérique responsable (80 organisations) a développé ecoindex.fr pour évaluer la performance environnementale d’une url à partir d’éléments techniques objectifs (poids, complexité, etc.), l’empreinte environnementale associée (gaz à effet de serre et eau) et en donnant une mesure de performance (sur 100) et un indice de classement (de A à G). « Il faudrait faire de même chose pour chaque IA », avance Christophe Denis, ingénieur EDF R&D, co-lauréat du prix Drim’in Saclay (voir l’encadré de l’article « L’impact énergétique du numérique » de notre dossier). Depuis 2008, les data centers européens ont, eux aussi leur label, le Code of Conduct.
[/vc_cta][/vc_column][/vc_row][vc_row][vc_column][vc_column_text]
Le langage de programmation importe peu
Parmi les éléments en cause dans la surconsommation énergétique du numérique, quel est l’impact du langage de programmation ? Des chercheurs portugais ont analysé 27 langages de programmation en termes de rapidité d’exécution, de consommation énergétique et de mémoire. Selon eux, sur la base de l’analyse de 10 problèmes de programmation du Computer Language Benchmarks Game, le moins gourmand en énergie et le plus polyvalent resterait le langage C. Les autres langages les plus efficaces sur le plan énergétique seraient C++, RustRust est un langage de programmation compilé opensource ultra-rapide développé depuis 2009 au sein de la fondation Mozilla, notamment pour les architectures multi-cœurs. Les objectifs affichés par la communauté de développeurs sont : rapidité, sécurité (en mémoire notamment) et partage des données sécurisé entre tâches. et Ada . A contrario, Ruby, Python et Perl se révèlent très gourmands. JavaScript étant en milieu de classement. Et le langage le plus rapide ne serait pas forcément le moins gourmand.
« Avec PowerAPI, complète Romain Rouvoy, nous avons mesuré que, pour une même application, un langage interprété comme Python peut consommer jusqu’à 100 fois plus qu’un langage compilé comme Java. C’est d’autant plus inquiétant que la tendance actuelle est que le Python, comme le JavaScript, s’emploient de plus en plus sur les serveurs applicatifs hébergés dans des data centers. Nous avons également pu mettre en évidence des différences notables entre deux langages du même type. Par exemple, pour les langages compilés orientés objets, Java peut consommer moins que C++. » Le chercheur met en garde contre les effets de mode technologique concernant ces langages promus dans les formations ou les médias mais dont l’empreinte environnementale n’est pas des moindres.
Surtout, il ne faut pas perdre de vue que les codes exprimés au travers des langages de programmation ne sont qu’un formalisme d’expression d’un algorithme, pour qu’il puisse être exécuté par une machine. Cette exécution de l’algorithme requiert une étape de compilation et/ou d’interprétation en instructions machines qui peuvent induire des empreintes énergétiques bien différentes. Autrement dit avoir un impact bien plus important que le choix du langage de programmation. L’exemple le plus retentissant en la matière est celui de Facebook qui avait divisé par 2 la consommation électrique de ses serveurs en compilant le code PHP de son site web en C++ bien plus efficacement interprétable en instructions machines (travaux menés dans le cadre du projet HipHop for PHP en 2010, devenu HHVM). Quand on sait que près de 80 % des sites web utilisent PHP, un langage pratique et facile à manipuler par les développeurs, on mesure l’impact de cette étape de compilation dite source to source, particulièrement efficace d’un point de vue énergétique. C’est d’ailleurs ce qui a poussé la communauté PHP à sortir PHP7.
« C’est pour ces raisons que nous étudions également l’efficience énergétique des substrats d’exécution et des mécanismes d’optimisation associés, par exemple en analysant l’impact de l’interpréteur quand on développe un algorithme en Python, poursuit Romain Rouvoy, ou encore des mécanismes de compilation en ligne ou de compilation source to source. L’objectif est de mieux caractériser le bénéfice d’un point de vue énergétique et de fournir des recommandations aux développeurs quant aux langages et aux substrats d’exécution les plus propices pour réduirela consommation énergétique en fonction des usages ciblés. »
Isabelle Bellin
[/vc_column_text][vc_empty_space][/vc_column][/vc_row][vc_row][vc_column][vc_cta h2= » »]
Manycore adapte le code aux architectures multicoeur
Cette start-up créée fin 2016 par le français Nicolas Toper dans le célèbre incubateur californien Y Combinator (YC) où sont nés DropBox ou AirB’nB propose une solution prometteuse adaptée aux les applications numériques à base d’architecture multicoeur. « Notre but est de booster les ordinateurs, smartphones et toutes les applications à base d’architecture multicoeur sans consommer plus d’énergie », avance Nicolas Toper. Un bond en avant digne de celui des années 80-90 selon lui. Comment ? « Grâce à des progrès en informatique théorique, nous détectons automatiquement l’ordonnancement des règles dans la programmation, répond-t-il. Nous identifions celles qui peuvent être exécutées en parallèle et nous réécrivons le code machine pour qu’il s’exécute sur tous les cœurs de processeurs simultanément. Nous avons ainsi montré qu’un bout de code de l’application Uber s’exécutait 20 fois plus vite. À l’échelle de toute l’application, nous misons sur une rapidité accrue d’un facteur 2 à 5. » Difficile de dire pour l’instant si leur solution, qui serait installée sur les divers équipements pour fonctionner automatiquement, apportera de réelles économies d’énergies. En tout, elle devrait apporter de l’efficience.
[/vc_cta][/vc_column][/vc_row][vc_row][vc_column][vc_column_text]
[/vc_column_text][/vc_column][/vc_row]