Articles techniques - Green Computing

retour

L'informatique est un vecteur important de consommation. Pendant de nombreuses années, nous avons entendu que la mémoire n'était plus un problème et que lorsque celle-ci venait à se tarir, nous n'avions qu'à acheter une nouvelle barette de RAM ou un nouveau disque dur. Bien sur, pour nous aider dans la voie, les industriels de l'informatique tendent à nous faire remplir de plus en plus d'espace mémoire avec toutes les photos prises et partagées à l'envie mais plus jamais regardées, les montagnes d'informations obsolètes stockées.

Cependant, nous commençons à entrevoir depuis peu que nous vivons dans un monde fini, que la mémoire a un coût, que l'énergie n'est pas inépuisable, et que même si elle l'était, sa consommation met la stabilité de notre planète à mal.

Dans cette espace, je souhaite revenir sur quelques principes de base comme celle du Keep It Simple, Stupid que nous n'embrassons plus que rarement, et poser par écrit quelques unes de mes reflexions.

Ordres de grandeurs

Capacité de stockage

Depuis l'invention de l'écriture il y a près de 5 000 ans, nous stockons de l'information. De simples registres de comptes à la fin de la préhistoire aux encyclopédies, en passant par la littérature, ou le stockage de données numériques, notre capacité à sauvegarder de l'information a considérablement augmenté.

Il y a 2 000 ans, on estime que la bibliothèque d'Alexandrie comportait entre 40 000 et 400 000 ouvrages1. Les ouvrages n'étaient pas encore encyclopédiques. Il fallait plusieurs semaines aux copistes pour recopier un ouvrage. L'ensemble de ces ouvrages tiendrait très vraisemblablement sur un cdrom.
Pour pouvoir commencer à reproduire rapidement des livres, il a fallu, en Europe, attentdre la renaissance. Aujourd'hui, la numérisation complète de la bibliothèque du congès Américain contenant des centaines de millions de références, représenterait environ une vingtaines de téraoctets... soit la capacité d'un [pas si gros] disque dur actuel.
Il s'agit là d'une parie non négligeable de la connaissance mondiale, et elle tient sur un [pas si gros] disque dur.

A en croire Wikipedia2, la capacité mondiale de stockage des données serait passée de 2,6 exaoctets (1 Exaoctets = 1 000 Pétaoctets, 1 Péta = 1 000 Téra) en 1986 à 5 Zettaoctes (= 5 000 Exaoctets) en 2014, soit l'équivalent de 4 500 piles de livres imprimés sur la distance Terre-Soleil.

Nous avons tous des téléphones mobiles d'une capacité de plusiers dizaines de Go, des clouds de plusieurs Go voire To. Nous prenons en quelques heures plus de photo que toute l'humanité jusqu'à l'avènement des appareils numériques. Nous stockons des quantités pharamineuses de données.
Ou encore, à titre d'exemple, nous avons créé 33 zettaoctets en 20183, soit l'équivalent de 660 milliards de disques Blueray. Il semblerait que cette quantité ait été multipliée par 20 en 2020.

  1 mégaoctet (Mo) = 1 million d'octets
  2 Mo = une photo numérique en haute résolution
 10 Mo = 1 minute de son haute fidélité
100 Mo = le contenu d'une pile de livres de 1 mètre de haut
  1 gigaoctet (Go) = 1 milliard d'octets
 20 Go = un enregistrement de l'oeuvre complète de Beethoven
500 Go = le plus gros site FTP
  1 téraoctet (To) = 1000 milliards d'octets
  2 To = tous les ouvrages d'une bibliothèque universitaire
 10 To = tous les imprimés de la bibliothèque du Congrès américain
400 To = la base de données du National Climatic Data Center
  1 petaoctet (Po) = 1 million de milliards d'octets
  2 Po = les fonds de toutes les bibliothèques universitaires des Etats-Unis
  8 Po = les données disponibles sur le Web
 20 Po = l'ensemble des disques durs produits en 1995
200 Po = l'ensemble des bandes magnétiques produites en 1995
  1 exaoctet (Eo) = 1 milliard de milliards d'octets
  2 Eo = le volume annuel des informations générées dans le monde
  5 Eo = tous les mots prononcés depuis le début de l'humanité 
  1 zettaoctet (Zo) = 1 mille milliards de milliards d'octets;
 33 Zo = la capacité de stockage céée en 2018

Si la plupart des connaissance humaines tiennent sur 20 To, et que l'ensemble des mots prononcés depuis le début de l'humanité se mesure en Eo, alors que représente tout le reste de ces données ?
Que peut on qualifer de connaissance, d'information, de donnée ?
Quelle est la part de la connaissance et la part de bruit ? Comment se fait-il que malgré toute l'augmentation de l'espace de stockage, nous en ayons toujours besoin de plus ?

On peut aussi s'interroger sur le coût :

Atomiquement, ces coûts sont mineurs. Mais pour 33 zettaoctets, soit 660 000 000 000 de Bluray ou 330 000 000 de disque de 10To.

Il faut aussi prendre en considération le coût de recherche de l'information pretinente.

Peut-on faire quelque chose pour éviter de consommer trop d'espace ?

Android studio vs vim... Pour coder une appli "hello world" sur Android, Google nous demande de télécharger Android Studio (~1Go) puis toutes les libs nécessaire (~2Go). A coté:

ls /usr/sbin/vim 
-rwxr-xr-x 1 root root 4097888 28 mai   08:58 /usr/sbin/vim
4 mégas !
Certes, il faut ajouter tous les outils de developements nécessaires comme make, gdb,... Mais ce n'est pas tout à fait le même ordre de grandeur.

Et ce qu'il y a de plus intéressant c'est qu'un "hello world" en C fait 15ko, contre 5Mo en apk, soit un facteur 300, avec aucune ressource particulière. Derrière, le programme issu du c est directement compris par le CPU, alors que le code de l'apk est interprêté par une machine virtuelle (la DVM) qui optimise spécifiquement l'image de l'application pour les futures executions (le Dalwik cache).

Ici nous avons la double peine: c'est plus gros et c'est plus lent. Mais globalement, l'idée est là : plus on ajoute de code, plus c'est gros et plus c'est lent.

Les microprocesseurs

A l'instar de l'espace de stockage, la puissanéce des microprocesseurs a subi une forte progression. Du 1er microprocesseur 4004 en 1970, à l'AMD Epyc Rome de 2020, nous somme passés de 2 300 transistors à 50 000 000 000 soit 20 millions de fois plus.

Cette explosion du nombre de transistors s'accompagne d'une augmentation significative du nombre d'opérations qu'un microprocesseur peut effectuer chaque secondes. Du mégablop atteint en 1964, nous comptons maintenants ne centaines de pétaflops, soit des milliars de fois plus...
Pour ceux qui dans les années 80 fantasmaient sur la puissance des Cray 2, sachez que l'Iphone 4 était tout aussi puissant. Oui, aujoud'hui, meme un téléphone relativement bas de gamme est au moins aussi puissant qu'un Super Ordinateur des années 80.

Du coup, avec toute cette augmentation de puissance de calcul, le temps de boot d'un pc est passé de 30 secondes en 1980 à... 30 secondes en 2021. Certes ca dépend de l'OS (sans pour autant vouloir troller), de l'age relatif du PC, de celui du système d'exploitation, etc... mais alors que l'on fait maintenant des milliards de fois plus d'opérations par secondes, ben, ca ne va pas des milliards de vois plus vite, non, ca prend bon an mal an autant de temps aujourd'hui qu'il y a 40 ans.

Comme nous l'avons vu, la vitesse d'augmentation de la capacité de stockage ou de calcul est égale à notre capacité à les consommer !

Le problème, est que cette puissance de calcul réclame de l'énergie. Par exemple, notre jolie Box internet, que nous utilisons presque 24h/24, consomme autant qu'un réfrigérateur (source étude 60 millions de consommateurs - ADEME, reprise dans la publication "La face cachée du numérique", publiée par l'Ademe en janvier 2021).

D'après le même rapport, environ 4% des émissions de gaz à effet de serre proviennent du secteur numérique, qui est en forte augmentation.

Une étude de google datant de 2009, estimait que la quantité de CO2 dégagé par les recherches annuelles d'un utilisateur du moteur de recherche était comparable à celle d'une machine à laver sur la meme période.
Avec juste un box et google search, nous avons 2 frigos et 2 machines à laver !

Equation de coût

Programmons autrement : économisons !

Langages

J'ai l'impression de voir fleurir chaque jour un nouveau langage. J'aime cette marque de créativité. Cependant, je ne pense pas qu'il existe de "mauvais" langages. Il y a des questions de simplicité de mise en oeuvre ou d'usage, des contraintes plus ou moins fortes sur les environnements. Mais tous les langages ont leur efficacité pour "se tirer une balle dans le pied".
Question contraintes de vitesse d'exécution, de taille mémoire ou de coût, on a cependant un petit abaque :

#LanguageEnergy
1C1,00
2Rust1,03
3C++1,34
4Ada1,70
5Java1,98
6Pascal2,14
7Chapel2,18
8Lisp2,27
9Ocaml2,40
10Fortran2,52
11Swift 2,79
12Haskell 3,10
13C# 3,14
14Go 3,23
15Dart 3,83
16F# 4,13
17JavaScript 4,45
18Racket 7,91
19TypeScript 21,50
20Hack 24,02
21PHP 29,30
22Erlang 42,23
23Lua 45,98
24Jruby 46,54
25Ruby 69,91
26Python 75,88
27Perl 79,58
#LanguageTime
1C1,00
2Rust1,04
3C++1,56
4Ada1,85
5Java1,89
6Chapel2,14
7Go2,83
8Pascal3,02
9Ocalm3,09
10C#3,14
11Lisp 3,40
12Haskell 3,55
13Swift 4,20
14Fortran 4,20
15F# 6,30
16JavaScript 6,52
17Dart 6,67
18Racket 11,27
19Hack 26,99
20PHP 27,64
21Erlang 36,71
22Jruby 43,44
23TypeScript 46,20
24Ruby 59,34
25Perl 65,79
26Python 71,90
27Lua 82,91
#LanguageMb
1Pascal1,00
2Go1,05
3C1,17
4Fortran1,24
5C++1,34
6Ada1,47
7Rust1,54
8Lisp1,92
9Haskell2,45
10PHP2,57
11Swift 2,71
12Python 2,80
13Ocaml 2,82
14C# 2,85
15Hack 3,34
16Racket 3,52
17Ruby 3,97
18Chapel 4,00
19F# 4,25
20JavaScript 4,59
21TypeScript 4,69
22Java 6,01
23Perl 6,62
24Lua 6,72
25Erlang 7,20
26Dart 8,64
27Jruby 19,84

article original

outils de programmation

Bas niveau

Applications

Developpement web

Notes bibliographiques

1 Wikipedia bibliothèque d'Alexandrie.
2 Wikipedia Ere de l'information .
3 La totalité des données créées dans le monde équivaut à... Statista.