Bare Metal Overview
Большинство инструментов для отслеживания бенчмарков позволяют запускать бенчмарки только из одной среды. Вы либо запускаете бенчмарки локально, либо запускаете их в CI. Даже если они поддерживают и локальное выполнение, и выполнение в CI, вы не можете сравнивать результаты между ними.
Bencher Bare Metal позволяет получить лучшее из обоих миров. Вы можете запускать бенчмарки с локальной машины и выполнять их на выделенном оборудовании, а также запускать бенчмарки из CI и выполнять их на точно том же выделенном оборудовании. Это позволяет иметь согласованную среду выполнения бенчмарков независимо от того, откуда вы их запускаете.
Bencher Bare Metal работает на оборудовании bare metal, чтобы исключить вариативность и обеспечить более точные и надёжные результаты бенчмарков.
Runner
Runner — это удалённый исполнитель бенчмарков, работающий на выделенном оборудовании bare metal. Runner опрашивает API-сервер Bencher на наличие ожидающих Job на основе связанных с ним Spec. Как только Job принят, Runner загружает указанный для Job Image, распаковывает Image, выполняет команду бенчмарка и отправляет результаты обратно на API-сервер Bencher. В каждый момент времени выполняется только один Job, чтобы гарантировать, что бенчмарки не подвержены влиянию других рабочих нагрузок.
| Runner | Платформа | Область | Управляется | Sandbox | Доступ к сети | Тарифный план |
|---|---|---|---|---|---|---|
| Shared | Bencher Cloud | Сервер | Bencher | Обязателен | Нет | Free, Team, Enterprise |
| Dedicated | Bencher Cloud | Организация | Bencher | Опционален | Нет | Enterprise |
| Custom | Bencher Cloud | Организация | Пользователь | Опционален | Опционален | Enterprise |
| Self-Hosted Server | Bencher Self-Hosted | Сервер | Пользователь | Опционален | Опционален | Free, Team, Enterprise |
| Self-Hosted Organization | Bencher Self-Hosted | Организация | Пользователь | Опционален | Опционален | Enterprise |
Spec
Spec — это спецификация оборудования, описывающая ресурсы, доступные Runner:
- Операционная система (ОС)
- Linux
- macOS
- Windows
- Архитектура процессора
- x86_64
- ARM64
- Sandbox
- Firecracker microVM
- Без Sandbox
- Количество ядер процессора
- Объём памяти (RAM)
- Размер диска
- Доступ к сети
Spec имеют область действия либо на уровне сервера, либо на уровне организации, поэтому один и тот же Spec может использоваться несколькими Testbed на одном сервере или в одной организации соответственно.
Порядок приоритета при выборе Spec при использовании bencher run следующий:
- Опция
--spec - Spec, назначенный Testbed
- Spec по умолчанию на уровне организации
- Spec по умолчанию на уровне сервера
Выбранный Spec будет затем назначен текущему Testbed.
Sandbox
Sandbox — это механизм изоляции, обеспечивающий безопасную мультитенантность на Runner.
Bencher Bare Metal использует микровиртуальные машины Firecracker microVM в качестве реализации Sandbox по умолчанию.
Работа без Sandbox требует Dedicated или Custom Runner на Bencher Cloud (свяжитесь с поддержкой Bencher Plus для получения дополнительной информации) или Bencher Self-Hosted.
Когда Runner настроен на использование Sandbox, каждый Job выполняется внутри этого Sandbox.
Смотрите документацию runner для полного обзора.
Job
Job отслеживает жизненный цикл запроса на удалённое выполнение бенчмарка.
Для каждого Job можно задать пользовательский тайм-аут с помощью опции --job-timeout.
Однако следующие тайм-ауты Job и лимиты параллелизма всегда применяются:
| Тарифный план | Тайм-аут Job | Параллелизм Job |
|---|---|---|
| Unclaimed | 1 минута | 1 на исходный IP |
| Free | 5 минут | 1 на Организацию |
| Team | Без ограничений (по умолчанию: 60 минут) | Неограничено |
| Enterprise | Без ограничений (по умолчанию: 60 минут) | Неограничено |
Смотрите документацию Job для полного обзора.
Image
Image — это OCI-образ контейнера, содержащий ваш код бенчмарка и его зависимости. Когда Runner выполняет Job, он загружает Image, распаковывает Image и выполняет команду бенчмарка, указанную в Job. Смотрите документацию Image для получения информации о создании Image для вашего проекта.