stephane-klein / backlog

My public backlog
29 stars 1 forks source link

Est-ce utile de recompiler les containers PostgreSQL, NodeJS et peut-être tout l'OS avec toutes les optimisations du CPU du serveur production ? #326

Open stephane-klein opened 9 months ago

stephane-klein commented 9 months ago

J'ai de nombreuse fois entendu Quentin Adam (exemple ici à 23:25) dire que c'est du gâchis d'exécuter des containers Docker (image binaire) en production, qui n'ont pas été compilés avec les optimisations des CPU cibles, des serveurs de productions. Cette opinion est aussi valable pour les packages binaires de distributions (.deb, .rpm...). Quentin conseille d'utiliser des binaires du kernel Linux, glibc, Postgres... (tous les services qui tournent sur le serveur) compilés avec les optimisations du CPU cible, celui qui tourne sur le serveur de production.

D'un point de vue théorique, je comprends tout à fait cette opinion, je la partage. Toutefois, je n'ai aucune idée du niveau de gain de performance que peut apporter ces optimisations CPU.
J'ai fait quelques recherches, pour le moment, je n'ai rien trouvé.

Quelques ressources :

Dans un premier temps, ce que je peux faire pour mes projets de production, c'est :

Tâche à faire :

stephane-klein commented 9 months ago

Je lis ici de grandes différences de perf :

iterations 1000000000 value 3.14159

  • clang time 5.70893s
  • gcc time 9.08183s
  • clang -O2 time 6.01251s
  • gcc -O2 time 5.13561s
  • clang -march=native -O2 time 1.21312s
  • gcc -march=native -O2 time 4.7192s

Je doute que ce type de benchmark ressemble aux types de tâches que réalise une application web classique :thinking:.