Быстрый старт Bencher Bare Metal
Что такое Bencher?
Bencher - это набор инструментов для непрерывного тестирования производительности. Когда-нибудь регрессия производительности влияла на ваших пользователей? Bencher мог бы предотвратить это. Bencher позволяет вам обнаруживать и предотвращать регрессии производительности до того, как они будут слиты.
- Запустить: Запустите свои тесты производительности локально или в CI, используя точно те же самые bare metal раннеры и ваши любимые инструменты для тестирования. CLI
bencherоркестрирует запуск ваших тестов производительности на bare metal и сохраняет их результаты. - Отслеживать: Отслеживайте результаты ваших тестов производительности со временем. Мониторите, запрашивайте и строите графики результатов с помощью веб-консоли Bencher на основе ветки исходного кода, испытательного стенда и меры.
- Поймать: Отлавливайте регрессии производительности локально или в CI, используя точно то же самое bare metal оборудование. Bencher использует инструменты аналитики, работающие по последнему слову техники, чтобы обнаружить регрессии производительности, прежде чем они будут слиты.
По тем же причинам, по которым модульные тесты запускаются, чтобы предотвратить регрессии функций, тесты производительности должны быть запущены с Bencher, чтобы предотвратить регрессии производительности. Ошибки производительности – это тоже ошибки!
Установка CLI bencher
Выберите вашу операционную систему и выполните указанную команду для установки CLI bencher.
Для получения более подробной информации, смотрите документацию по установке 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"⠀Теперь, давайте проверим, что у вас установлен CLI bencher. Выполните:
bencher --versionbencher --versionbencher --versionbencher --versionВы должны увидеть:
bencher 0.6.2Создание проекта
Прежде чем вы сможете отправить образ бенчмарка, вам нужен проект Bencher.
Самый простой способ его создать — выполнить CLI-подкоманду bencher run
с подкомандой bencher mock. Выполните:
bencher run "bencher mock --count 0"bencher run "bencher mock --count 0"bencher run "bencher mock --count 0"bencher run "bencher mock --count 0"Это создаст новый проект на Bencher Cloud.
Обратите внимание на URL View report в выводе.
Slug вашего проекта — это сегмент пути после /perf/ в URL.
Например, если URL выглядит так:
https://bencher.dev/perf/my-project-abc1234/reports/709d3476-51a4-4939-9584-75d9a2c04c54тогда slug вашего проекта — my-project-abc1234.
Этот slug проекта понадобится вам на следующих шагах.
Отправка образа бенчмарка
Bencher Bare Metal запускает бенчмарки, упакованные как OCI-образы контейнеров, на выделенном оборудовании.
Для этого быстрого старта мы будем использовать Docker-образ CLI bencher в качестве образа бенчмарка.
Пользовательский образ не требуется.
Сначала загрузите образ CLI bencher из GitHub Container Registry. Выполните:
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:latestЗатем перетегируйте образ для OCI-реестра Bencher.
Замените YOUR_PROJECT_SLUG на slug проекта из предыдущего шага:
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:latestПосле этого войдите в OCI-реестр Bencher и отправьте образ:
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:latestДля получения подробной информации о создании собственного пользовательского образа смотрите документацию по образам.
Отслеживание бенчмарков Bare Metal
Теперь вы готовы отслеживать результаты бенчмарков на выделенном оборудовании!
Для этого вы будете использовать CLI-подкоманду bencher run,
чтобы запустить бенчмарки и собрать результаты.
Замените YOUR_PROJECT_SLUG на slug проекта из предыдущих шагов и выполните:
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 jsonМы используем подкоманду bencher noise в качестве команды бенчмарка для генерации примеров данных.
Она измеряет, насколько шумным является ваше окружение бенчмарка.
Когда мы используем опцию --format json, результаты выводятся в Bencher Metric Format (BMF).
Если всё работает как ожидается, конец вывода должен выглядеть примерно так:
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-8e18d5d062c4Теперь вы можете просмотреть результаты каждого из ваших бенчмарков в браузере.
Нажмите или скопируйте ссылки из View results.
Чтобы заявить права на эти результаты, нажмите или скопируйте ссылку Claim this project в свой браузер.
🐰 Поздравляем! Вы отследили свои первые результаты бенчмарков Bare Metal! 🎉