Les outils pour programmer vert
Sommaire
- 1 – Introduction
- 2 – Compilateurs, languages et frameworks
- 3 – 3 outils de développement verts
- 4 – Un univers de logiciels verts
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
La 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).
On 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.
Articles relatifs
-
Les outils pour programmer vert
Après avoir vu l'importance d'adopter des techniques de programmation plus économe en ressources, nous allons ici aller plus loin et passer en revue les nouveaux outils logiciels et matériels qu'il convient d'utiliser pour "programmer vert".
-
Les développeurs aussi doivent se mettre au vert
Lorsque l'on associe les mots écologie et informatique on pense avant tout matériel, mise en veille, mémoire, processeur et par conséquence constructeurs. Mais des regards accusateurs se tournent désormais aussi vers d'autres acteurs : les...
-
Le PC vert selon VIA
Les cartes mères équipées de cartes mère Via sont courantes, mais est-ce que le C7 est intéressant ? Et quand Via insiste sur la consommation, est-ce une réalité ?
Le lien ne marche pas !
lien ne fonctionne pas
Je voudrais un limiteur de FPS inclut dans DirectX et OpenGL. 30-35 FPS sont largement suffisants pour la majorité des jeux et applis 3D.
+1 sur le web 3.0 et les animations. Je vous suggère d'ailleurs de lire cet article "5 règles pour un site web plus respectueux de l'environnement"
Je voudrais un limiteur de FPS inclut dans DirectX et OpenGL. 30-35 FPS sont largement suffisants pour la majorité des jeux et applis 3D.
Ça devrais être une fonctionnalité standard dans tous les jeux. Surtout que que le nombre de d'image par seconde est directement proportionnel à la consommation électrique !
Faut être débile pour mentionner le wattmètre ou PowerTop.
Au niveau d'une application, les critères de consommation sont le temps processeur utilisé, et les I/O
Faut être débile pour mentionner le wattmètre ou PowerTop.Au niveau d'une application, les critères de consommation sont le temps processeur utilisé, et les I/O
Ce raisonnement est plus qu'insuffisant pour "programmer vert". Si l'on se cantonne à cette façon de raisonner, alors un programme qui tourne 8H à 3% d'utilisation processeur est plus écolo que sa version qui consomme 70% en deux heures... ce qui est bien entendu faux. Arriver à une programmation écolo, c'est à mon sens trouver un équilibre entre performances brutes et indispensables (temps de calculs pour l'environnement pro notamment), et surconsommation ridicule de ressources (processus en tâche de fond qui ne servent à rien, non libération mémoire...)
Et si on commencait par avoir des systèmes moins gourmands et des exigeances moins grande en matière de PC ?
Avoir un QuadCore pour faire du Word 2007 est particulièrement inutile..
Image de synthèse ou image pas de synthèse page 4 ?
Je voudrais un limiteur de FPS inclut dans DirectX et OpenGL. 85 FPS sont largement suffisants pour la majorité des jeux et applis 3D
En dessous c'est pas la peine, surtout a 30/35fps c'est carrement injouable (je prends exemple de Unreal et Trackmania ou ca commence a etre jouable a partir de 60 FPS)
"Si l'on se cantonne à cette façon de raisonner, alors un programme qui tourne 8H à 3% d'utilisation processeur est plus écolo que sa version qui consomme 70% en deux heures..."
=> Une fonctionnalité devrait prendre toutes les ressources disponibles pour exécuter sa tâche, et non pas prendre un peu de ressource de temps en temps.
=> La libération de mémoire ne va pas diminuer la consommation électrique (sauf si cela impose l'utilisation du SWAP) puisqu'une barrête mémoire ne peut pas se mettre en veille.
"Si l'on se cantonne à cette façon de raisonner, alors un programme qui tourne 8H à 3% d'utilisation processeur est plus écolo que sa version qui consomme 70% en deux heures...
=> Une fonctionnalité devrait prendre toutes les ressources disponibles pour exécuter sa tâche, et non pas prendre un peu de ressource de temps en temps."
C'est un peu moins schématique que cela : tout dépend de la conso. au repos et de la configuration en charge de la configuration, de la durée d'exécution avec une faible conso de ressources proc et de la durée d'exécution avec le maximum de ressources proc utilisées. Sans oublier l'heure d'exécution (si, si ! car si on est sur un période de pointe en demande d'énergie, EDF doit faire tourner des centrales plus polluantes, donc l'impact green n'est pas le même ;-) )
Ceci dit, dans l'exemple de magellan, la version 2h/70% de ressources est celle qui consommera le moins sur une majorité de palteformes "grand public"...
C'est au système d'exploitation de savoir gérer les ressources allouées
(sauf choses superflus comme rendu graphique, interface graphique géré par le programme)
DareDare: pour la France au moins les centrales nucléaires rendent caduques les changements d'heures été/hiver, car modifier leur production électrique est un processus lent (1~2 semaines). Du coup on s'en fiche aussi de l'heure d'exécution.
Pour le CPU à 2% ou 70%: sauf les tout derniers Core i7, un CPU consomme autant, qu'il soit utilisé ou pas (je ne parle pas de la modification dynamique du voltage présent notamment sur les portables)
Et si on commencait par avoir des systèmes moins gourmands et des exigeances moins grande en matière de PC ?
Avoir un QuadCore pour faire du Word 2007 est particulièrement inutile..
On a inventé les mini-notebooks pour ça.
Assieds-toi, respire un grand coup !
Enfin, depuis ce temps, tu as peut-être même dormi une bonne vingtaine de fois...