Overblog Suivre ce blog
Editer l'article Administration Créer mon blog
7 à voir

Utilisation CPU = consommation électrique ?

11 Juin 2010 , Rédigé par Lionel Publié dans #GreenIT, #Overblog

Dans un précédent billet de ce blog, je m'étais intéressé aux fonctionnalités de Windows 7 permettant d'optimiser la consommation électrique. En filigrane de ce billet apparaissait une déduction simple: plus la puissance de l'ordinateur est utilisée, plus il consomme d'électricité. Autrement dit: nos actions et les performances des applications que nous utilisons ont un impact direct sur la consommation électrique de notre poste de travail.

Est-ce vraiment aussi évident que ça ? Voilà qui a aiguisé ma curiosité et j'ai eu envie de le vérifier. Ce billet décrit donc ma tentative pour valider cette hypothèse et en tirer les conclusions qui en découlent.

 

Processus expérimental

Schématiquement, même s'il y a d'autres ressources dans un PC (écran, disque, périphériques, …) j'ai décidé de limiter mon expérimentation à: "démontrer que la consommation électrique est directement liée à l'utilisation du processeur de la machine". Comme, à l'exception des processus système, l'utilisation CPU dépend des applications qui s'exécutent sur la machine, la réponse à cette question me permettra de répondre à mon interrogation de départ.

 

Evidemment, pour démontrer cela il me fallait disposer d'outils de mesure. Mais pas seulement des outils de mesure instantanée (quelle est l'utilisation CPU ou la consommation électrique à un instant T ?) mais des outils de mesure fonctionnant dans la durée.

 

 

Tracer la consommation CPU

Pour la CPU, on pense tout de suite au gestionnaire de tâches que tous les utilisateurs de Windows connaissent.

 

7avoir volt8

 

Pourtant, il ne répond pas à mon besoin car évidemment mon objectif est de pouvoir disposer de données brutes (type Excel CSV) que je pourrais restituer graphiquement. En faisant quelques recherches sur Internet j'ai trouvé différents outils mais aucun ne correspondait exactement à ce que j'attendais. Bref, j'ai donc développé mon propre outil (on ne se refait pas ) avec des fonctionnalités très simples: lire la consommation CPU et l'écrire à l'écran et dans un fichier.

 

7avoir volt4

 

 

Heureusement rien de très compliqué à développer, globalement toute la complexité du programme s'écrit en deux lignes de code .NET: récupérer le compteur de performance du système correspondant à la CPU, et le formater pour ensuite l'enregistrer.

 

7avoir volt6

 

 

Tracer la consommation électrique

Pour récupérer la consommation électrique, je disposais déjà d'un boitier de mesure s'insérant entre la prise et l'appareil électrique à mesurer (voir ici). Mais cet appareil se contente d'un affichage LCD ce qui ne permet évidemment pas de faire une mesure dans la durée. Suite à un article sur GreenIT.fr, j'ai donc fait l'acquisition d'un appareil un peu plus évolué: l'Energy Logger 4000 de Voltcraft.

 

7avoir volt9

 

L'avantage: il dispose d'un affichage LCD mais peut aussi recevoir une carte SD (non fournie et obligatoirement <= 2Go !) pour récupérer un ensemble de mesures sur plusieurs jours, voir plusieurs semaines.

 

Mieux: une petite application fournie avec le boitier (et assez peu ergonomique il faut le dire) permet de visualiser ces informations et aussi de les extraire au format CSV.

 

J'ai donc maintenant la capacité de mesurer à la fois la consommation CPU et la consommation électrique dans la durée: me voilà donc prêt à l'expérimentation.

 

 

Mesure journalière

Assez naïvement, j'ai d'abord voulu étudier si la corrélation entre la consommation électrique et la CPU était visible au quotidien. J'ai donc mis en place le processus expérimental sur ma propre machine (un Dell Latitude E6400) pendant une journée de travail au bureau (ordinateur portable sur son socle). Voici une photo de l'appareillage.

 

7avoir volt7

 

 

J'ai donc lancé les mesures en début de journée et, à la fin de la journée, j'ai récupéré les données brutes et j'ai généré via Excel deux courbes que voici (cliquez sur l'image pour voir le détail).

 

7avoir volt1

 

La courbe du haut indique la consommation en Watt, la courbe du bas la consommation CPU en pourcentage. Disons le franchement: la corrélation entre les deux courbes ne saute pas aux yeux !

 

Deux choses sont quand même à noter :

1) L'échantillonnage n'est pas le même entre les deux outils de mesure. Le Voltcraft réalise une mesure toutes les minutes (c'est peu) alors que j'ai programmé la mesure de la CPU toutes les 10 secondes. C'est ce qui fait que la courbe CPU est très découpée alors que celle de la consommation l'est forcément moins. Il est d'ailleurs tout à fait possible qu'un pic de consommation CPU de moins d'une minute passe complètement inaperçu dans la courbe de consommation.

2) Le Voltcraft ne mesure pas uniquement la consommation CPU mais la consommation de tout l'ordinateur sur son socle. En l'occurrence, il s'avère que le pic de consommation descendant (A sur le schéma) pendant la première heure de consommation est dû… au rechargement de la batterie de l'ordinateur.

 

Une fois ces limites posées et en analysant plus finement les courbes, on constate néanmoins que tous les soubresauts de la courbe de consommation CPU se retrouvent dans la courbe de consommation électrique. Voir en particulier les points B, C et D.

 

Même si le résultat n'est pas tout à fait concluant, il donne donc une bonne indice de la corrélation entre les deux courbes.

 

 

Je stresse

Pour valider plus précisément ces premiers résultats, j'ai décidé de refaire un ensemble de mesures de manière un peu plus "artificielle".

 

Concrètement l'idée est de tester la consommation électrique pour différents niveaux d'utilisation de la CPU. Arbitrairement, j'ai décidé de définir 3 niveaux de consommations:

  • - Usage réduit: 10-15% de CPU,
  • - Occupation moyenne: 50% de CPU,
  • - Pleine charge: 100% de CPU.

 

Pour réaliser cela, il me fallait néanmoins un outil supplémentaire me permettant de charger (on dit aussi "stresser") la CPU de manière précise. J'ai utilisé pour cela deux autres outils.

 

Pour charger la CPU à 100%, j'ai utilisé l'outil Prime95 qui réalise un calcul mathématique pour rechercher des nombres premiers.

 

7avoir volt3

 

 

 

Après plusieurs recherches sur Internet j'ai finalement choisi pour charger la CPU à 50%, l'outil CPU Speed Adjuster qui permet d'indiquer via un curseur la charge souhaitée.

 

7avoir voltA

 

 

Seule contrainte: l'outil qui est assez ancien ne charge pas les deux Core de ma machine (équipée d'un processeur Intel Core Duo). La consommation globale de la CPU est donc la moitié de celle qui est réellement indiquée par le curseur. Il faut donc mettre le curseur à 100% pour avoir 50% d'utilisation...

 

Une fois l'outillage mis en place, voici le scénario que j'ai déroulé:

  • - 10 minutes d'usage réduit,
  • - 10 minutes d'usage moyen,
  • - 10 minutes d'usage réduit,
  • - 10 minutes en pleine charge,
  • - 10 minutes d'usage réduit.

 

La courbe ci-dessous donne les résultats du test. Pour simplifier la lecture j'ai superposé les deux courbes (CPU en rouge, consommation électrique en bleu).

 

 

7avoir volt2

 

 

Voilà les quelques observations que l'on peut faire:

 

  • - Les deux graphiques ont cette fois une forme de courbe très proche avec les deux paliers auquel on peut s'attendre vu le scénario.
  • - La consommation électrique est 30% plus élevée en usage moyen qu'en usage réduit (65W contre 50W).
  • - La consommation électrique est presque 2 fois plus élevée en pleine charge qu'en usage réduit (90W contre 50W).
  • - La consommation électrique monte et descend progressivement lors du changement d'état. Cela est probablement du à la montée en puissance du ventilateur (qu'on entend pendant le test) qui permet de maintenir le processeur à une température convenable. D'ailleurs, lors de l'utilisation en pleine charge, la consommation revient à un niveau normal au bout d'un certain temps avant la fin du test, il est possible que cela soit lié à l'atteinte de cette température optimale (à confirmer par d'autres tests).

 

 

Conclusion

L'expérimentation décrite ici n'a pas valeur de démonstration mais elle permet de concrétiser l'hypothèse que les performances des applications que nous utilisons ont un impact direct sur la consommation énergétique de notre poste de travail. C'est même un élément non négligeable  qui peut entrainer des variations de 30 à 100% de la consommation électrique.

 

Peut-on aller au-delà de ce constat est mettre en place un plan d'action pour optimiser des applications ?

 

L'optimisation des applications doit être une problématique constante des développeurs, d'abord pour satisfaire les besoins de réactivité des utilisateurs mais aussi pour limiter les ressources que ce soit la mémoire, la puissance machine ou, comme c'est le cas ici, la consommation électrique.

 

La question est plutôt de savoir s'il existe des méthodes ou des "Green Pattern" de développements spécifiques pour limiter la consommation électrique et là-dessus, il y a peu de sources aujourd'hui. Il sera donc intéressant d'étudier les résultats du Green Challenge organisé par GreenIT.fr  et l'Université du SI pendant lequel une quinzaine d'équipes de développeurs s'affronteront pour limiter la consommation d'une même application.

 

L'optimisation énergétique des applications est en tout cas un vrai sujet.

Partager cet article

Repost 0

Commenter cet article

amblard 27/01/2012 14:46

Le gain d'energie peut etre considerable : il suffit "simplement" de coder juste.
Exemple: en changeant juste un String en Stringbuilder sur une applcation qui genere des pages HTML, le temps de traitement est passe de 15 minutes (avec une CPU a 70/80%) a 30 secondes. Il me
semble que les entreprises ne sont pas bien conscientes de ces couts et qu'il y a pas mal de progres a faire a ce sujet.

Lionel 30/01/2012 14:01



Vous avez parfaitement raison ! Sur le sujet de l'éco-conception je vous recommande un livre qui vient de paraître auquel j'ai contribué:
http://www.greenit.fr/article/bonnes-pratiques/le-premier-manuel-deco-conception-des-logiciels-4192



Yan 16/09/2011 16:36


Bonjour,

Toujours intéressant de voir que certains y pensent et que d'autres mettent en pratique ...

Dans mon esprit j'avais conservé que deux des arguments pro virtualisation étaient que les machines étaient généralement sous-utilisées et que la consommation électrique était quasi identique entre
un processeur inoccupé (disons 15%) et bien chargé (disons 80%).
D'après vos tests le second argument ne serait pas tout à fait exact (?).

Merci pour l'article.


Lionel 16/09/2011 21:39



Merci.


Non clairement, plus l'utilisation de la CPU augmente, plus la consommation électrique augmente, le deuxième argument ne tiens pas mais le premier reste valable !