Démarrage Rapide Bencher Bare Metal
Qu’est-ce que Bencher ?
Bencher est une suite d’outils de benchmarking continu. Avez-vous déjà eu une régression de performance qui a impacté vos utilisateurs ? Bencher aurait pu empêcher cela de se produire. Bencher vous permet de détecter et de prévenir les régressions de performance avant qu’elles ne soient fusionnées.
- Exécuter: Exécutez vos benchmarks localement ou en CI en utilisant exactement les mêmes runners bare metal et vos outils de benchmarking préférés. La CLI
bencherorchestre l’exécution de vos benchmarks sur bare metal et stocke ses résultats. - Suivre: Suivez les résultats de vos benchmarks au fil du temps. Surveillez, interrogez et graphiquez les résultats à l’aide de la console web Bencher en fonction de la branche source, du banc d’essai et de la mesure.
- Détecter: Détectez les régressions de performances localement ou en CI en utilisant exactement le même matériel bare metal. Bencher utilise des analyses de pointe et personnalisables pour détecter les régressions de performances avant qu’elles ne soient fusionnées.
Pour les mêmes raisons que les tests unitaires sont exécutés pour prévenir les régressions de fonctionnalités, les benchmarks devraient être exécutés avec Bencher pour prévenir les régressions de performance. Les bugs de performance sont des bugs !
Installer le CLI bencher
Sélectionnez votre système d’exploitation et exécutez la commande fournie pour installer le CLI bencher.
Pour plus de détails, consultez la documentation sur l’installation du CLI bencher.
⠀curl --proto '=https' --tlsv1.2 -sSfL https://bencher.dev/download/install-cli.sh | shcurl --proto '=https' --tlsv1.2 -sSfL https://bencher.dev/download/install-cli.sh | shcargo install --git https://github.com/bencherdev/bencher --branch main --locked --force bencher_clipowershell -c "irm https://bencher.dev/download/install-cli.ps1 | iex"⠀Maintenant, vérifions que vous avez le CLI bencher installé. Exécutez :
bencher --versionbencher --versionbencher --versionbencher --versionVous devriez voir :
bencher 0.6.2Créer un Projet
Avant de pouvoir pousser une image de benchmark, vous avez besoin d’un projet Bencher.
La manière la plus simple d’en créer un est d’exécuter la sous-commande CLI bencher run
avec la sous-commande bencher mock. Exécutez :
bencher run "bencher mock --count 0"bencher run "bencher mock --count 0"bencher run "bencher mock --count 0"bencher run "bencher mock --count 0"Cela crée un nouveau projet sur Bencher Cloud.
Regardez l’URL View report dans la sortie.
Le slug de votre projet est le segment de chemin après /perf/ dans l’URL.
Par exemple, si l’URL est :
https://bencher.dev/perf/my-project-abc1234/reports/709d3476-51a4-4939-9584-75d9a2c04c54alors le slug de votre projet est my-project-abc1234.
Vous aurez besoin de ce slug de projet dans les étapes suivantes.
Pousser votre Image de Benchmark
Bencher Bare Metal exécute des benchmarks empaquetés sous forme d’images de conteneurs OCI sur du matériel dédié.
Pour ce démarrage rapide, nous utiliserons l’image Docker du CLI bencher comme image de benchmark.
Aucune image personnalisée n’est nécessaire.
D’abord, récupérez l’image du CLI bencher depuis le GitHub Container Registry.
Exécutez :
docker pull --platform linux/amd64 ghcr.io/bencherdev/bencher:latestdocker pull --platform linux/amd64 ghcr.io/bencherdev/bencher:latestdocker pull --platform linux/amd64 ghcr.io/bencherdev/bencher:latestdocker pull --platform linux/amd64 ghcr.io/bencherdev/bencher:latestEnsuite, retaguez l’image pour le registre OCI de Bencher.
Remplacez YOUR_PROJECT_SLUG par le slug du projet de l’étape précédente :
docker tag ghcr.io/bencherdev/bencher:latest registry.bencher.dev/YOUR_PROJECT_SLUG:latestdocker tag ghcr.io/bencherdev/bencher:latest registry.bencher.dev/YOUR_PROJECT_SLUG:latestdocker tag ghcr.io/bencherdev/bencher:latest registry.bencher.dev/YOUR_PROJECT_SLUG:latestdocker tag ghcr.io/bencherdev/bencher:latest registry.bencher.dev/YOUR_PROJECT_SLUG:latestPuis, connectez-vous au registre OCI de Bencher et poussez l’image :
docker login registry.bencher.devdocker login registry.bencher.devdocker login registry.bencher.devdocker login registry.bencher.devdocker push registry.bencher.dev/YOUR_PROJECT_SLUG:latestdocker push registry.bencher.dev/YOUR_PROJECT_SLUG:latestdocker push registry.bencher.dev/YOUR_PROJECT_SLUG:latestdocker push registry.bencher.dev/YOUR_PROJECT_SLUG:latestPour plus de détails sur la création de votre propre image personnalisée, consultez la documentation sur les Images.
Suivre vos Benchmarks Bare Metal
Vous êtes maintenant prêt à suivre vos résultats de benchmark sur du matériel dédié !
Pour ce faire, vous utiliserez la sous-commande CLI bencher run
pour exécuter vos benchmarks et collecter les résultats.
Remplacez YOUR_PROJECT_SLUG par le slug du projet des étapes précédentes et exécutez :
bencher run --project YOUR_PROJECT_SLUG --image YOUR_PROJECT_SLUG:latest noise --format jsonbencher run --project YOUR_PROJECT_SLUG --image YOUR_PROJECT_SLUG:latest noise --format jsonbencher run --project YOUR_PROJECT_SLUG --image YOUR_PROJECT_SLUG:latest noise --format jsonbencher run --project YOUR_PROJECT_SLUG --image YOUR_PROJECT_SLUG:latest noise --format jsonNous utilisons la sous-commande bencher noise comme commande de benchmark pour générer quelques données d’exemple.
Elle mesure à quel point votre environnement de benchmark est bruyant.
Lorsque nous utilisons l’option --format json, les résultats sont produits au format Bencher Metric Format (BMF).
Si tout fonctionne comme prévu, la fin de la sortie devrait ressembler à ceci :
View report: https://bencher.dev/perf/project-abc4567-wxyz123456789/reports/29d61b7c-5d80-4ac2-a118-f80bc5de431b
View results:- bencher::noise::cache_jitter (Cache Jitter): https://bencher.dev/perf/project-abc4567-wxyz123456789?branches=88d5192d-5cd1-47c6-a817-056e5968737c&heads=657a8ee9-1f30-49d4-bd9b-ceed02576d7e&testbeds=f3a5db46-a57e-4caf-b96e-f0c1111eaa67&benchmarks=6bed122a-b0d1-42e6-93c1-8736a910ec9c&measures=fdee350f-f53a-44bc-af7c-2f4c51415ea8&start_time=1741390156000&end_time=1743982156000&report=29d61b7c-5d80-4ac2-a118-f80bc5de431b- bencher::noise::composite (Noise Score): https://bencher.dev/perf/project-abc4567-wxyz123456789?branches=88d5192d-5cd1-47c6-a817-056e5968737c&heads=657a8ee9-1f30-49d4-bd9b-ceed02576d7e&testbeds=f3a5db46-a57e-4caf-b96e-f0c1111eaa67&benchmarks=a5d0aea8-666f-4554-958a-9ad8acf1a20d&measures=995e8a26-58ee-46c4-8ce7-d0162b7d9d86&start_time=1741390156000&end_time=1743982156000&report=29d61b7c-5d80-4ac2-a118-f80bc5de431b- bencher::noise::compute_jitter (Compute Jitter): https://bencher.dev/perf/project-abc4567-wxyz123456789?branches=88d5192d-5cd1-47c6-a817-056e5968737c&heads=657a8ee9-1f30-49d4-bd9b-ceed02576d7e&testbeds=f3a5db46-a57e-4caf-b96e-f0c1111eaa67&benchmarks=489b1d60-5dbd-43cd-bb96-ba50bcba648a&measures=8b715d47-ed42-4ac5-a380-4fe4143aa159&start_time=1741390156000&end_time=1743982156000&report=29d61b7c-5d80-4ac2-a118-f80bc5de431b- bencher::noise::io_jitter (I/O Jitter): https://bencher.dev/perf/project-abc4567-wxyz123456789?branches=88d5192d-5cd1-47c6-a817-056e5968737c&heads=657a8ee9-1f30-49d4-bd9b-ceed02576d7e&testbeds=f3a5db46-a57e-4caf-b96e-f0c1111eaa67&benchmarks=0a3da391-2fe3-40ec-8a10-983e81231af8&measures=b34f6fd4-60ff-4866-a7a4-60396aab976a&start_time=1741390156000&end_time=1743982156000&report=29d61b7c-5d80-4ac2-a118-f80bc5de431b
Claim this project: https://bencher.dev/auth/signup?claim=d4b0cd5a-8422-40af-9872-8e18d5d062c4Vous pouvez maintenant visualiser les résultats de chacun de vos benchmarks dans le navigateur.
Cliquez ou copiez-collez les liens depuis View results.
Pour revendiquer ces résultats, cliquez ou copiez-collez le lien Claim this project dans votre navigateur.
🐰 Félicitations ! Vous avez suivi vos premiers résultats de benchmark Bare Metal ! 🎉