Les goélands lents

Idées, textes et images entre ciel, terre et mer

lang: [ en | fr ]

Bouffi: évolution de la consommation de ressources informatiques

2021-12-15

J’ai récemment commencé un nouveau travail. L’embauche s’est faite relativement rapidement, et j’ai dû commencer à travailler avec un ordinateur personnel, la commande de l’ordinateur professionnel n’ayant pas eu le temps d’arriver. J’ai donc dépoussiéré mon ordinateur d’études, acheté il y a 8 ans (2014). Il était à l’époque au top, je l’avais payé assez cher, mais considérait que ça les valait, car je ne voulais pas en changer 3 ans après. Pari réussi, de fait, puisqu’il reste mon seul ordinateur portable à ce jour.

Pour toute la puissance qu’il déployait à l’époque (Intel i5-4200U 2 cœurs à 2.6GHz hyperthreadés, 8GB de DDR3, Intel HD 4400), je fus très déçu lors de mon usage professionnel.

Consommation de ressources d’un usage professionnel🔗

Je suis {dev,sys,sec}ops. Ce(s) rôle(s) implique(nt) plusieurs choses:

  1. Collaborer, à travers plusieurs outils comme le mail, la messagerie instantanée, un outil de VCS (et ses interfaces, comme GitLab);
  2. Éditer du code, du texte dans un assez large éventail de langages (php, hcl, yml, toml, (ba)sh, markdown, python, go, rust…);
  3. Rédiger de la documentation;
  4. Lancer des commandes et en interpréter les résultats;
  5. Garder un œil sur mes infrastructures via du monitoring.

En comptant tout ce qui tourne ne serais-ce que pour afficher mon bureau et remplir les fonctions de base d’un ordinateur grand public, mon OS utilise déjà 1Go de RAM.

$ free -h
		total	utilisé	libre
Mem:	8Gi		1Gi		7Gi

Collaborer🔗

Pour les mails, ma boite utilise GSuite, donc GMail. L’interface web est plutôt bien faite et la fonctionnalité de classification automatique des messages (disponible uniquement sur cette interface) est extrêmement utile pour augmenter le rapport signal/bruit. Cet onglet, sous Firefox, consomme un peu plus d’1Go de RAM.

$ free -h
		total	utilisé	libre
Mem:	8Gi		2.1Gi	5.9Gi

Pour la messagerie instantanée, le choix a été fait de Slack. Une interface web est disponible, ainsi qu’une application desktop. L’application, basée sur Electron, qui embarque donc un moteur Chrome complet, en plus du code de l’application elle-même.

$ free -h
		total	utilisé	libre
Mem:	8Gi		3.3Gi	4.7Gi

Pour les outils de VCS, c’est un mix entre GitLab et CodeCommit, un outil d’Amazon Web Services (AWS). GitLab est léger, comparé à CodeCommit, qui embarque tout le JavaScript de la console AWS en plus. GitLab prend environ 700 Mo, CodeCommit tourne autour de 900 Mo.

$ free -h
		total	utilisé	libre
Mem:	8Gi		4.9Gi	3.1Gi

Tous ces outils sont très courants, et requièrent d’être actifs en permanence pour remplir leurs fonctions.

Éditer des fichiers textuels🔗

Le principal obstacle rencontré ici est la diversité des langages que doit supporter l’éditeur.

Vim1 est champion là-dedans. Consommant peu de ressources, étant parfaitement intégré à mon environnement de travail usuel (un terminal :D), son système de plugins permet de faire à peu près ce qu’on veut avec, y compris de le transformer en IDE. Il n’est cependant pas très performant en tant qu’IDE dès qu’il s’agit de s’interfacer avec le monde extérieur, à moins de maîtriser le [VimL]. J’en ai toujours au moins un d’ouvert et son impact est négligeable.

Ça se complique lorsque je n’utilise pas Vim. Il m’arrive d’utiliser VSCode, par exemple, que je trouve un bon intermédiaire entre l’éditeur de texte et l’IDE, en termes de fonctionnalité. Très utile pour éditer quelques fichiers d’un projet sans vouloir absolument charger un IDE complet. Et bien lui aussi demande à peu près 1Go.

$ free -h
		total	utilisé	libre
Mem:	8Gi		5.9Gi	2.1Gi

L’IDE quant à lui demande facilement 1.5Go, pour de grosses charges qui demandent l’usage d’outils fait pour faciliter le travail.

$ free -h
		total	utilisé	libre
Mem:	8Gi		7.4Gi	600Mi

MAIS! Il m’est également courant de devoir consulter de la documentation, des articles, ce que je fais sur internet, car imprimer ces ressources semble être du gaspillage de forêt, on nous le répète depuis assez longtemps dans les journaux, les articles scientifiques et même les signatures de mail. Cela correspond donc à 3-4 onglets Firefox ouverts.

$ free -h
		total	utilisé	libre
Mem:	8Gi		8.4Gi	-0.4Gi

Garder un œil sur ses infrastructures🔗

Cela passe souvent par un dashboard web présentant plusieurs graphes et autres. Typiquement assez lourd en JavaScript et couramment avec des fuites mémoire, il m’est courant d’avoir un ou 2 onglets

$ free -h
		total	utilisé	libre
Mem:	8Gi		11.4Gi	-3.4Gi

Collaborer… encore🔗

Quelqu’un m’appelle via Slack ou Google Meet! Il me faut alors ouvrir le micro, la caméra, voir partager mon écran ou regarder celui de quelqu’un d’autre.

$ free -h
		total	utilisé	libre
Mem:	8Gi		12Gi	-4Gi

Pas de bol, on me demande d’ouvrir un .docx, il me faut lancer LibreOffice pour ne serais-ce qu’en lire le contenu.

$ free -h
		total	utilisé	libre
Mem:	8Gi		13.5Gi	-5.5Gi

Mon ordinateur n’a déjà plus de RAM depuis un bon moment et même avec toute la swap du monde, il passe 30 secondes à changer de fenêtre.

Un ordinateur

Ce n’est pas mon ordinateur le problème🔗

Non, mon ordinateur, même du haut de ses 8 ans a plus qu’assez de RAM pour remplir les fonctionnalités fournies par les logiciels ci-dessus, surtout ceux de collaboration.

Une application de messagerie n’a besoin que de très peu de ressources, un client mail lourd n’est en réalité pas lourd pour la machine (surtout avec uniquement des mails en texte pur).

Tous ces logiciels qu’il m’est demandé d’utiliser n’ont pas besoin de grignoter autant de mémoire.

Le problème, c’est que plus de la moitié d’entre eux fonctionnent sur une stack web et ont par conséquent besoin d’à minima un moteur de rendu web pour fonctionner. Ce qui est non seulement très gourmand en RAM, mais également en cycles CPU, alors que rien ne se passe, ils sont au repos.

Je me souviens du temps ou le navigateur internet n’était pas ce qui lançait au max les ventilateurs de ma machine. C’étaient les jeux, c’étaient les logiciels de traitement de texte.

Aujourd’hui, au sein d’une entreprise, une machine de développement sans accès à internet ou de navigateur ne sert pratiquement à rien dans les écosystèmes actuels. Google l’avait pré-senti il y a quelques années avec son ChromeOS.

Nous sommes devenus intégralement dépendant d’un ensemble de spécifications devenues très lourdes, demandant des machines “de guerre” pour les faire tourner. La tendance ne va pas non plus en s’arrangeant2, et il est déjà compliqué d’utiliser confortablement un ordinateur très cher d’il y a 8 ans, tandis que les ordinateurs classiques d’il y a 10 ans peinent à faire tourner les distributions Linux faites spécialement pour être légères.

Pourquoi en sommes-nous là?🔗

Je pense que c’est pour plein de raisons, mais surtout de la démocratisation fulgurante que le JavaScript a connu. Nous nous sommes retrouvés avec pleins de développeurs, créant un écosystème morcelé et unifié par des frameworks toujours plus lourds. La situation est assez bien décrite par Kev Quirk dans The Web Is Fucked. Pour résumer très rapidement: c’est de la faute du capital. Le capital, qui veut vendre de la pub et qui a donc besoin d’avoir les sites web les plus alléchants, souvent au détriment -d’une manière ou d’une autre- du contenu.

Ce système a été nourri par les besoins des entreprises de porter leur application web dans un environnement desktop, sans vouloir s’encombrer de développeurs “système”. Et ça tombe bien, car il y a plein de développeurs JavaScript.

Mais le JavaScript et ses développeurs ne sont pas à blâmer, ce n’est que le prolongement de décennies de sacrifice de la performance sur l’autel du couple facilité/rapidité de développement. Le tout est de savoir où plaçons-nous la barre entre ces deux concepts soi-disant opposés.

Les nouvelles fonctionnalités entraînent de nouveaux usages, qui eux-mêmes entraînent de nouvelles fonctionnalités, qui fait évoluer les protocoles et normes afin de les supporter, ce qui complexifie tous les systèmes en plus de leur faire consommer plus de ressources (et ça a de réelles conséquences dans le monde physique).

La complexification des systèmes est source de la création d’une caste d’experts et de l’exclusion des autres individus dans la capacité à les maîtriser. Ce n’est selon moi pas souhaitable dans le cadre des technologies de communication, puisque cela renforce le pouvoir des uns sur les autres.

Un autre paradigme est-il possible?🔗

Dans l’absolu, bien sûr. On voit d’ailleurs ces dernières années un fourmillement de nouveaux projets allant dans d’autres directions, explorant les possibles.

Go et Rust, par exemple, bien que fondamentalement opposés dans leur approche de la gestion mémoire, tentent de moderniser (comprendre: rendre plus accessible et facile) le développement “système”. Rust a d’ailleurs des performances impressionnantes, toujours avec la promesse de sécurité mémoire.

Plus extrême, uxn est projet artistique sous la forme d’une machine virtuelle contraignante par Hundred Rabbits forçant l’écriture de programmes parcimonieux dans leurs usages de ressources. Elle a déjà rassemblé une quantité surprenante d’adeptes et de programmes.

Dans le registre de l’outillage de code, sourcehut séduit là aussi bon nombre avec sa collection d’outils de collaboration.

Gemini est un entre-deux entre le gopher et l’HTTP, est léger et remet le contenu au centre de l’attention. Il favorise ainsi la transmission de connaissances ou d’information sans la concurrence des agences de pub.

Ces projets sont des exemples d’une tendance plus globale d’envie d’une autre informatique que celle proposée actuellement, voire même d’un autre modèle de société, moins consommateur, plus authentique (par exemple: hors de contrôle des mégacorporations) dans ses propositions et son essence.

Mais cette envie est-elle réellement partagée par une part suffisante de la population? Il existe déjà un schisme entre les utilisateurs de Facebook et ceux refusant ou ne comprenant pas son usage, bien que les usagers savent que Facebook est éthiquement problématique. Ce même comportement se retrouve dans les habitudes de consommation.

Je suis intimement convaincu que les modèles sur lesquels nous produisons et consommons vont déterminer l’avenir de notre espèce. Les tendances actuelles ne vont selon moi pas dans le bon sens, mais l’avenir nous le dira.

Et j’ai déjà eu tort à maintes reprises.


  1. En réalité, j’utilise davantage NeoVim.

  2. «Ceci m’a un jour été révélé dans un rêve.» (The Divine and the Human, Nikolai Berdyaev, 1949)