Les outils pour programmer vert

25/05/2009 à 08:20 par Loic Duval

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).

Sous le nom Parallel Studio Intel propose tout un pack d outils pour optimiser les programmes et les rendre plus respectueux des idle timesOn 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.

Liens commerciaux
Commentaires
Trusty77240 25/05/2009 09:00
Masquer
-1+

Le lien ne marche pas !

dmatter 25/05/2009 09:27
Masquer
-0+

lien ne fonctionne pas

iksarfighter 25/05/2009 09:45
Masquer
-1+

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.

youcki80 25/05/2009 12:29
Masquer
-1+

+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"

youcki80 25/05/2009 12:32
Masquer
-1+

iksarfighter :
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 !

Anonyme 25/05/2009 12:45
Masquer
-0+

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

magellan 25/05/2009 13:47
Masquer
--1+

Veovis153 :
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...)

DMA 25/05/2009 16:14
Masquer
-0+

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..

eat your potato 25/05/2009 16:18
Masquer
-2+

Image de synthèse ou image pas de synthèse page 4 ?

turlupin en ptard 25/05/2009 18:43
Masquer
-3+

Citation :l'emprunte CO2 d'une entreprise.
:sarcastic:

Anonyme 25/05/2009 19:43
Masquer
-2+

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)

Anonyme 29/05/2009 12:13
Masquer
-0+

"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.

Daredare 29/05/2009 13:24
Masquer
-0+

"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"...

veovis153 30/05/2009 13:44
Masquer
-0+

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)

veovis153 30/05/2009 14:00
Masquer
-0+

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)

Mictateur 18/07/2009 00:09
Masquer
-0+

DMA a écrit :

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. :D



turlupin en ptard a écrit :

Citation :l'emprunte CO2 d'une entreprise.
:sarcastic:



Assieds-toi, respire un grand coup ! :o

Enfin, depuis ce temps, tu as peut-être même dormi une bonne vingtaine de fois...

Ce sujet ne peut plus être commenté.
Liens commerciaux

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é ?

Publicité

Les offres du moment

Tout sur les Logiciels
 Derniers articles sur les Logiciels
Tous les articles Logiciels

Newsletters


  • Besoin d'aide ? Publiez votre question
  • Publier