Intel Energy Checker - Tutoriel

    * Editeur / créateur : Intel

   * Site / Sources: http://software.intel.com/en-us/articles/intel-energy-checker-sdk

    * Compatibilité : Windows, Linux, Solaris 10, MacOS? X, MeeGo?

    * Technologies : Les langages supportés par l'API sont C / C++, C#, Objective C, Java, PHP, Perl et autres langages de script

 

Présentation du SDK

        Intel Energy Checker SDK fournit un ensemble d'outils facilitant la remontée, la centralisation et la visualisation d'informations sur la consommation énergétique d'un logiciel. Ceci dans le but d'aider au développement d'applications moins énergivores.
        
        Il ne permet pas de mesurer directement la consommation d'une application mais simplement d'exporter ces données, mesurées par un appareil (wattmètre), sous forme de "compteurs". Un compteur permet de suivre l'évolution d'une grandeur au cours du temps, qu'il s'agisse de l'énergie consommée, de la puissance instantanée ou de données propres à l'application elle-même comme la quantité de travail réalisée (par exemple le nombre de pixels calculés pour un logiciel de rendu 3D). Une API fournie dans le SDK permet aux applications l'utilisant d'exporter sous forme de compteurs toute grandeur qu'elle souhaite remonter à travers un lien appelé "Productivity Link" (PL). Ces compteurs seront alors rendus disponibles via ce PL à d'autres applications qui pourront les exploiter pour les afficher, les logger, les manipuler (faire des calculs). Le développeur peut alors visualiser ou logger ces compteurs au moyen d'applications fournies dans le SDK ou bien développer lui-même ses propres logiciels de visualisation.
        
        Pour exporter sous forme de compteurs la consommation ou la puissance instantanée d'une machine, le SDK fournit également un petit serveur appelé "Energy Server" (ESRV) qui peut s'interfacer avec n'importe quel wattmètre au moyen d'un driver. Le développeur pourra ensuite instrumenter au moyen de l'API l'application qu'il souhaiter faire "maigrir" pour remonter sous forme de compteurs également des informations sur l'état d'exécution de l'application ou la quantité de travail réalisé. Ainsi, il pourra mettre en corrélation toutes ces données dans une application lisant tous ces compteurs.
        
        Bien sûr, il est tout à fait possible de collecter et d'afficher toutes ces informations sans avoir recours à l'IEC SDK. Celui-ci ne comporte pas d'intelligence particulière pour l'exploitation des données, sa principale valeur ajoutée est:
        - de fournir une interface simple et uniforme pour l'import / export des informations (compteurs)
        - de permettre la collecte et l'exploitation de données se trouvant sur plusieurs machines d'un réseau tout aussi simplement que sur un poste "standalone" (l'API est la même, l'aspect réseau est caché)

 

Contenu du SDK

        Le SDK comprend:

        - Intel EC API: une API (et son implémentation) permettant l'import / export par les applications de "compteurs", grâce auquel on va pouvoir suivre périodiquement toute grandeur variant au cours du temps (comme l'énergie consommée ou la puissance).
        - ESRV: un serveur interfaçable avec un wattmètre, permettant de remonter tout un ensemble de compteurs concernant la consommation énergétique.
        - TSRV: un serveur interfaçable avec un capteur d'humidité et de température, permettant de remonter tout un ensemble de compteurs concernant l'humidité et la température.
        - PL GUI Monitor: un outil de visualisation graphique des compteurs
        - PL CSV Logger: un outil permettant de logger les compteurs
        - outils divers (pour scriptage de l'API et inter-opérabilité)
        - de nombreux samples sur la mise en place de l'API

 

License

    Les sources sont fournis pour l'API et son implémentation, les PL CSV Logger et les autres samples et outils. En ce qui concerne ESRV, TSRV et PL GUI Monitor, seusl les binaires sont fournis.
    
    Le code source fourni est soumis à une license n'autorisant pas la redistribution du code modifié. La modification n'est permise que pour des besoins personnels et tant que le code modifié n'est pas rendu public. Cependant, la question a été posée aux auteurs du SDK si ces conditions s'appliquaient uniquement à l'API ou bien également aux samples et outils (attente de réponse) car ces conditions nous paraissent peu excessives pour ce type de code, d'autant que la documentation conseille de se servir du code source de PL CSV Logger comme base pour développer des outils de visualisation personnalisés.

 

Intel EC API

        L'API permet à une application d'exporter des compteurs mis à jour périodiquement afin que d'autres applications puissent lire leur contenu. Les compteurs permettent ainsi de suivre des données comme la consommation énergétique ou la puissance instantanée, qui nous intéressent dans le cadre de la réduction de la consommation des applications, mais est également utilisable dans un cadre beaucoup plus large pour suivre n'importe quelle grandeur fonction du temps. Intel identifie trois grands cas d'utilisation intéressants de cette API:

        1) "Lab Usage": instrumentation d'une application dans le but d'optimiser ses performances énergétiques (ou autres). C'est a priori l'utilisation qui nous intéresse le plus dans le cadre du Green Code Lab. La généricité des compteurs permet dans ce cadre de corréler des grandeurs comme la consommation énergétique avec des grandeurs reflètant la quantité de travail réalisée par l'application ou l'état de l'application, afin d'utiliser plus facilement les gains d'énergie potentiels.

        2) Génération et collecte de données et d'indicateurs sur le fonctionnement d'une application en cours d'exploitation (par exemple dans un data center)

        3) Gestion dynamique et en temps réel d'applications, en fonction de données et d'indicateurs remontées par celles-ci, par des applications de monitoring lisant ces données.

        Fonctionnement: Les compteurs sont exportés / importés via des "Productivity Link", qui sont ouverts pour écriture / lecture ou fermés par les applications qui utilisent l'API (un peu comme des ouvertures / fermetures de fichier). Dans l'implémentation actuelle de l'API, les "Productivity Link" sont matérialisés par des fichiers dans un répertoire dédié, mais cette implémentation est transparente pour l'utilisateur.

 

ESRV

        Le serveur ESRV est conçu pour s'interfacer avec un wattmètre. Il remonte sous forme de compteurs exportés tout un ensemble de données sur ce qui est mesuré par le wattmètre, tels que la consommation énergétique, la puissance instantanée ou l'intensité du courant. L'interfaçage avec un wattmètre se fait via un "driver" propre au wattmètre utilisé. Le SDK fournit des drivers pour quelques modèles de wattmètres mais il est possible de développer ses propres drivers pour d'autres modèles sans trop de difficultés.

        Il existe également un mode "simulation" permettant de lancer ESRV sans wattmètre: le logiciel calcule alors une consommation basée sur la charge CPU. Le modèle énergétique est cependant assez grossier puisqu'il s'agit d'une simple fonction affine, paramétrable par l'utilisateur. Ce mode peut cependant être intéressant pour mettre au point un protocole ou un outil de visualisation avant de le connecter à un appareil réel, ou bien en tant que première approche pour quelqu'un ne disposant pas de wattmètre. Mais l'impact de l'utilisation de "Green Patterns" se mesure souvent au mW près et de nombreux exemples montrent que la consommation et la charge CPU ne sont pas nécessairement directement corrélés. C'est pourquoi il nous apparaît indispensable, pour disposer de mesures fiables et précises, d'utiliser un wattmètre.

 

Téléchargement et Installation du SDK

        Le SDK a été testé avec une version de Linux ubuntu 64 bits. La procédure pour l'installer est la suivante:

    1) Télécharger le package sur le site:

      http://software.intel.com/en-us/articles/intel-energy-checker-sdk

      Les fichiers téléchargeables sont:
        - une archive zip complète des sources / binaires / documentation: Intel_R__Energy_Checker_SDK_--_2010.12.15.zip
        - la documentation au format pdf, qui est également téléchargeable séparément: User Guide (documentation de base), Companion Applications User Guide (documentation décrivant les applications "avancées" fournies dans le package), Device Kit User Guide (documentation décrivant les serveurs ESRV et TSRV permettant de remonter les informations sur la consommation d'énergie et la température)

    2) Dézipper l'archive Intel_R__Energy_Checker_SDK_--_2010.12.15.zip dans le répertoire d'installation souhaité (noté ci-après <repertoire_d_installation_iecsd>)

    3) Créer le répertoire /opt/productivity_link en veillant à lui assigner les droits de lecture / écriture pour tous les utilisateurs exécutant le sdk et les applications instrumentées par celui-ci.

    Note: pour l'installation sur un OS différent, la procédure est la même à l'exception de l'étape 3 où le répertoire doit être créé à l'endroit indiqué dans la Table 7 du User Guide (cf. p. 109).

 

Compilation

    Un certain nombre de binaires et de bibliothèques sont déjà fournies et n'ont pas besoin d'être compilés: il s'agit de tout ce qui se trouve dans <repertoire_d_installation_iecsdk>/bin. Les autres binaires doivent être compilés à partir des fichiers sources fournis. La procédure est la suivante:

    1) Builder l'ensemble du projet:
        - aller dans le répertoire <repertoire_d_installation_iecsdk>/build/linux
        - modifier le Makefile comme indiqué p. 115; Vérifier également que IECSDK_ADDRESSING a la bonne valeur (32 pour un système 32 bits, 64 pour un système 64 bits)
        - make all -> tout est généré dans <repertoire_d_installation_iecsdk>/build/linux
 
      Problèmes rencontrés:
        - pour la compilation du sample pl2ganglia, ganglia et ganglia-dev doivent être installés

    2) Builder également le répertoire utils
        - aller dans le répertoire <repertoire_d_installation_iecsdk>/utils/device_driver_kit/build/linux
        - modifier le Makefile (ici, uniquement changer IECSDK_ROOT et IECSDK_ADDRESSING)
 
      Problèmes rencontrés:
        - pour la compilation sur un système 64 bits, veiller à ce que les bibliothèques et headers GNU C 32-bits pour systèmes 64 bits sont installés (sous ubuntu, package libc6-i386 et libc6-dev-i386)

 

Lancement d'ESRV

    Voici comment lancer ESRV sans wattmètre:

    1) Copier dans un même répertoire (ou créer des liens symboliques):
        - le binaire <repertoire_d_installation_iecsdk>bin/energy_server/linux/x64/esrv (x64 doit être remplacé par x86 sur un système 32-bits)
        - la bibliothèque <repertoire_d_installation_iecsdk>/utils/device_driver_kit/build/linux

    2) Dans ce répertoire, lancer la commande:
        ./esrv --start --library ./esrv_cpu_indexed_simulated_device.so

    3) Pour visualiser les résultats dans l'interface graphique "PL GUI Monitor" fournie avec le SDK, il faut connaître l'UUID de l'instance d'ESRV qui est lancée (affiché dans la console) et lancer la commande:

        ./pl_gui_monitor /opt/productivity_link/esrv_<UUID>/pl_config.ini

    Avec un wattmètre, il suffit de préciser via l'option --library le nom du .so du driver correspondant au modèle de wattmètre utilisé. Voir la documentation pour plus de détails.

 

Visualiser les compteurs avec LiveGraph

    L'outil PL CSV Logger fourni dans le SDK permet de logger les valeurs des compteurs remontés par ESRV, sur la sortie standard ou bien dans un fichier au format CSV. Il est alors possible de visualiser sur une courbe en temps réel l'évolution temporelle de ces compteurs en utilisant un outil tel que LiveGraph?. LiveGraph? est un outil en java qui permet de représenter graphiquement le contenu d'un fichier CSV mis à jour en temps réel.

        Pour cela, il faut:

    1) Compiler pl_csv_logger: voir le paragraphe Compilation ci-dessus.

    2) Télécharger LiveGraph? à l'adresse suivante: http://www.live-graph.org/download.html et l'installer (il suffit pour cela de dézipper le package .zip)

    3) Télécharger le script de lancement de la suite ESRV + PL CSV Logger + LiveGraph? sur GIT Hub à partir du repository: git@github.com:GreenCodeLabGroup/Tool?-Intel_Energy_Checker.git. Dans le répertoire launch_esrv se trouve un petit script de lancement "launch_esrv.sh" permettant de lancer les trois applications en faisant le lien entre elles.

    4) Adapter le script de lancement pour pointer vers les bons répertoires d'installation de IECSDK et de LiveGraph? (vous pourrez être amenés à modifier les variables LIVE_GRAPH_INSTALL_DIR, LIVE_GRAPH_JAR_NAME, IECSDK_INSTALL_DIR, PL_DIR_NAME, ESRV_BIN_DIR)

    5) Lancer le script: ./launch_esrv.sh

 

Catégorie: 

Commentaires

Bonjour, Tout d'abord merci beaucoup pour ce tutoriel bien détaillé, en suivant la documentation de Intel on ne sait pas trop par où commencer. Je me demande juste si au lieu d'utiliser le serveur ESRV ce n'est pas plus simple de créer un programme en utilisant les fonctions pl_open/write/close du SDK. Par exemple avec les "wattmètres" de Plugwise on ouvre un compteur plugwise_ qui contiendrait la puissance et les autres données énergétiques souhaitées (calculées à partir de la puissance).

Ajouter un commentaire