Vers un web 2, 3, 10 ou …109 fois moins énergivore ? Quelle est la marge d’amélioration ?

Quel peut être l'impact d'une démarche d'éco-conception sur la consommation électrique induite par le fonctionnement du web ? Quelle est le domaine du possible ? Dans cet article, où nous présentons 6 incarnations techniques d'une même page web, nous indiquons l'ordre de grandeur de ce que l'on peut réaliser, dès aujourd'hui, côté serveur....

 

Des chiffres pour promouvoir une éco-conception du web

 Le web est le secteur le plus visible voire le plus populaire de l'industrie informatique et c'est certainement le plus économiquement dynamique...

Mais les acteurs d'internet sont également culturellement très éloignés des problématiques d'éco-conception. "Les développeurs sont chers, le hardware est bon marché", "n'optimisez que lorsque vous ne pouvez faire autrement" sont des credos typiques de cette branche dont la réactivité des développements aux exigences du marketing demeure, à quelques exceptions près, l'unique graal.

Y faire progresser les principes d'une informatique responsable s'avère donc à la fois particulièrement décisif et particulièrement difficile.

Pour étoffer l'argumentaire green-IT, il serait souhaitable d'évaluer régulièrement et suivant un protocole standardisé les bénéfices que le web peut espérer des différentes stratégies d' écoconception.

Concevoir et évaluer des pages web de référence

Il n'existe hélas pas de banc d'essai web reconnu de tous. Le traitement d'une page "hello world!" reste excessivement minimaliste.Melvenn s'est lancé (modestement mais joyeusement) dans l'aventure en produisant sa propre "page web de référence".Elle encode l'affichage d'un graphe de quatre courbes dont les points sont issus de l'exploitation de deux fichiers de valeurs.Tous les détails (description des traitements, sources, scripts de génération et de mesures) sont disponibles ici.

Cette page est en fait le recyclage (green-IT oblige !;-) d'une maquette interactive. Même si son fonctionnement a le mérite d'être très dépendant de la taille des données d'entrée,  il serait sans doute plus pertinent de définir par consensus ce que pourrait être une page web ou plutôt un série de pages web "représentatives".

On pourrait s'inspirer de l'esprit d'un site tel que :  http://benchmarksgame.alioth.debian.org/ qui, depuis des années, compare les performance d'une vingtaine de langages de programmation utilisés dans l'implémentation d'une quinzaine de programmes...

Explorer les différentes pistes d'amélioration

Une fois que

  • Les besoins fonctionnels (les spécifications de la page web) ont été clairement définis
  • Que l'on a implémenté ces besoins fonctionnels avec différentes technologies et évalué l'effort de développement qu'a nécessité chacune de ces implémentations (les critères objectifs restent à préciser : nb de lignes ?)
  • Qu'un scénario de test a été rédigé, qui permet de mesurer les critères classiques : niveau de service, consommation énergétique, mémoire et CPU  lorsque l'on soumet la page à divers tests de charge ( en faisant par exemple varier la taille des données à traiter ).

deux types de question méritent des réponses chiffrées et argumentées :

1) Quel est le classement des différentes implémentations, c'est à dire des différents couples technologiques serveurs HTTP + langage  ?

2) Pour un couple technologique donné (par exemple apache + PHP) quelle est la marge d'amélioration sur les différents critères d'évaluation ? Plus précisément :

  • Quelle amélioration peut on attendre de l'optimisation du code ? Grâce à quelles règles de programmation ?
  • Que peut-on espérer de la modification du paramétrage des applications serveurs ?
  • Qu'attendre de l'utilisation de modules additionnels (dans le cas de PHP, des accélérateurs PHP) ?

Un premier axe d'optimisation : le choix de la technologie serveur

Nous avons commencé à répondre à la première question avec une liste restreinte de concurrents :  les couples

  • PHP+apache
  • PHP+apache+apc
  • PHP+apache+xcache
  • PHP+hiphop
  • Cawen+mongoose
  • Cawen+nxweb

Utilisation mémoire et CPU, temps de traitement, consommation énergétique, les résultats sont disponibles ici :

L'écart entre la meilleure solution technique (Cawen + nxweb) et la pire (apache + php) se décline ainsi :

  • division au minimum par 3,4  et jusqu’à 109 de la consommation électrique
  • division au minimum par 3,7 et jusqu’à 12 de l’utilisation moyenne du processeur
  • division au minimum par 8,5 et jusqu’à 23,5 de la mémoire utilisée
  • division au minimum par 4,5 et jusqu’à 48,3 des temps d’exécution

Ces résultats ont été obtenus avec un code 9% plus court que la page PHP de référence.

Même si les solutions Cawen + serveurs légers l'emportent sur tous les critères, on notera les belles performances de Hiphop, une technologie développée par Facebook et bien connue de greencodelab. On constate également l'apport plutôt modeste des accélérateurs PHP. On peut sans doute imputer leur relative inefficacité à la nature de notre page web qui présente un très faible rapport temps de parsing/ temps d'exécution.

Nous convions chaleureusement les green-code laborantins qui le souhaitent à :

  • étoffer la liste des couples technologiques testés
  • à optimiser le code PHP disponible (nous allons de notre côté faire progresser le code Cawen)
  • à optimiser la configuration apache : paramètres de apache.conf ? d'autres modules accélérateurs ?
  • à proposer leur(s) propre(s) page(s) web référence !

Vous trouverez tout ce dont vous avez besoin pour exécuter notre maquette sur vos propres serveurs (source php et Cawen, code C généré, scripts shells de tests et fichiers de résultats bruts) dans cette archive : cwn_web_benchmark.tgz.

 
Technologie: 
Catégorie: 

Commentaires

Bravo les gars ! C'est une belle démonstration du potentiel de l'éco-conception logicielle (et donc web) : diviser par 4 à 40x les temps d'exécution tout en divisant par 3 à 109 fois la consommation électrique : chapeau !
Cawen commence à faire son chemin, même si ça fait déjà un moment qu'il existe et qu'il aurait du vraiment décoller (http://www.hellocoton.fr/cawen-un-langage-de-programmation-plus-ecolo-et-performant-que-c-7221508). Pas de doute qu'il soit dans le futur incontournable, en tout cas je l'espère

Ajouter un commentaire