Comment nous mesurons
Chaque chiffre que nous publions ou livrons est accompagné de son contexte : ce qui a été mesuré, où, quand, avec quelle charge et avec quel outil. Cette page décrit la procédure que nous suivons et les modèles que nous utilisons.
Trois classes de chiffres
- Benchmark. Mesure dans un environnement contrôlé avec une charge synthétique. Le matériel, le système d’exploitation, le profil d’énergie, les versions et le générateur de charge sont déclarés. Elle sert à comparer des implémentations ou des configurations dans les mêmes conditions ; elle ne prédit pas la performance sur un autre matériel ni avec du trafic réel.
- Production. Mesure sur du trafic réel, avec l’outil qui l’a enregistrée, la période et le système. Elle sert à fixer la référence de départ et à vérifier l’effet d’un changement.
- Estimation. Calcul à partir d’hypothèses explicites, par exemple la taille des messages et le taux de succès attendu. Elle est présentée avec ses hypothèses et jamais comme un résultat mesuré.
Ce que nous instrumentons et avec quoi
| Grandeur | Comment nous l’enregistrons | Outils |
|---|---|---|
| Latence par requête | Histogramme avec percentiles p50, p90, p99, p99,9 et maximum ; jamais seulement la moyenne | Histogrammes log-linéaires du harnais de benchmarks |
| Débit | Requêtes achevées par seconde pendant la période mesurée, hors échauffement | Compteurs du harnais ; en production, les métriques du service lui-même (Prometheus ou autre) |
| Travail évité par un cache | Appels réels au backend par rapport aux requêtes reçues ; succès et échecs selon les compteurs de la bibliothèque | Compteurs du harnais et de la bibliothèque mesurée |
| Processeur et mémoire | Profil du processeur et mémoire résidente (RSS) à la fin de chaque exécution | /proc, perf, pprof en Go ; sanitizers (TSAN, ASAN) et valgrind pendant les diagnostics de code |
| Erreurs | Réponses en échec ou saturations pendant la période mesurée | Compteurs du harnais ; en production, les journaux du service |
| Variabilité | Trois répétitions au minimum ; la médiane et l’intervalle minimum–maximum sont publiés | scripts/summarize.py du harnais |
Avant et après une intervention
- Référence de départ. Avant de changer quoi que ce soit, nous mesurons le système tel qu’il est, avec la même charge ou la même période de trafic, et nous enregistrons la date, l’outil et l’environnement.
- Un changement à la fois. Nous appliquons une intervention et nous la mesurons. S’il y en a plusieurs, chacune est mesurée séparément.
- La même mesure. Nous répétons la procédure de la référence de départ : même charge, même environnement, mêmes outils.
- Répétitions et intervalle. Trois exécutions au minimum ; nous rapportons la médiane et l’intervalle. Si l’intervalle de la référence et celui du résultat se chevauchent, nous n’affirmons pas d’amélioration.
- Conditions déclarées. Matériel, système, profil d’énergie, versions et configuration figurent dans le rapport. Nous ne comparons pas des chiffres obtenus sur des matériels différents.
- Livraison. Le rapport suit le modèle ci-dessous et comprend les données brutes.
Le premier principe est de ne pas vous tromper vous-même ; et vous êtes la personne la plus facile à tromper.
Benchmarks publiés
Le protocole, les scripts, les données brutes et l’environnement de chaque mesure sont dans le dépôt simylresearch/simyl-benchmarks. La fiche de résultats en vigueur est dans Benchmarks. N’importe qui peut répéter la mesure avec les commandes du README et comparer avec l’environnement déclaré.
La même rigueur pour ce site
Avant chaque publication, ce site passe par un protocole de laboratoire : une construction qui échoue au moindre avertissement ; deux lints maison qui vérifient les liens, les ancres, les métadonnées, les données structurées, les formulaires, les images sociales, les phrases retirées et la parité entre les langues ; un parcours automatisé dans le navigateur qui teste le clavier, les thèmes clair et sombre, les ancres, le consentement à la mesure d’audience, la validation du formulaire et le fonctionnement sans JavaScript ; et une vérification automatique du site publié après chaque fusion et une fois par mois. Chaque vérification est consignée avec sa date.
Modèles
- Modèle de rapport de mesure (Markdown).
- Modèle de critères d’acceptation (Markdown).
Nous les utilisons dans chaque diagnostic et dans chaque projet par jalons ; vous pouvez les utiliser tels quels dans votre équipe.
Vous voulez que nous mesurions votre système avec cette méthode ? Demandez l’appel exploratoire