Bencher CLI runner
Бинарный файл runner — это агент, который выполняет benchmark Job на Bare Metal.
Это подробный справочник по настройке Self-Hosted Runner.
Бинарный файл предоставляет две подкоманды:
runner up: Запускает runner, который опрашивает сервер и выполняет benchmark Job.runner run: Загружает Image и запускает его один раз на локальном хосте, для тестирования.
🐰 Бинарный файл
runnerотличается от подкомандbencher runner. Бинарный файлrunnerуправляет хостом Runner, тогда какbencher runnerуправляет ресурсами Runner через REST API.
runner up
Запускает runner, который опрашивает сервер и выполняет benchmark Job. Это долго работающая команда, используемая для работы с Self-Hosted Runner. Runner открывает одно WebSocket-соединение с API-сервером, берёт Job, соответствующие его Spec, выполняет их и сообщает результаты обратно.
runner up [OPTIONS]Опции
--host <HOST>
API-сервер Bencher, к которому подключаться.
По умолчанию используется https://api.bencher.dev.
Также может быть задано переменной окружения BENCHER_HOST.
--runner <RUNNER>
UUID или slug Runner, от имени которого работать.
Также может быть задано переменной окружения BENCHER_RUNNER.
--key <KEY>
Ключ аутентификации Runner (bencher_runner_...),
возвращённый при создании Runner.
Также может быть задано переменной окружения BENCHER_RUNNER_KEY.
--poll-timeout <POLL_TIMEOUT>
Тайм-аут длинного опроса в секундах при ожидании Job, от 1 до 900.
По умолчанию используется 55.
--danger-allow-no-sandbox
Разрешить выполнение Job без Sandbox.
Без этого флага Job, чей Spec не имеет Sandbox, отклоняется во время выполнения.
Не изолированные Job выполняются напрямую на хосте, поэтому включайте это только для доверенных нагрузок.
Также может быть задано переменной окружения BENCHER_DANGER_ALLOW_NO_SANDBOX.
--sandbox-log-level <SANDBOX_LOG_LEVEL>
Уровень логирования для процесса sandbox.
По умолчанию используется warning.
--no-auto-update
Отключить автоматические обновления с сервера.
По умолчанию runner обновляет себя между Job, когда сервер предлагает новую версию.
Также может быть задано переменной окружения BENCHER_NO_AUTO_UPDATE.
--max-download-size <MAX_DOWNLOAD_SIZE>
Максимальный размер загрузки в байтах для бинарных файлов самообновления.
По умолчанию используется 500 MiB.
Конфликтует с --no-auto-update.
--max-output-size <MAX_OUTPUT_SIZE>
Максимальный размер в байтах для собираемых stdout и stderr.
По умолчанию используется 25 MiB.
--max-file-count <MAX_FILE_COUNT>
Максимальное количество выходных файлов для декодирования.
По умолчанию используется 255.
--max-symlinks <MAX_SYMLINKS>
Максимальное количество символических ссылок, по которым следует переходить при разрешении путей,
соответствующее ограничению MAXSYMLINKS ядра Linux.
По умолчанию используется 40.
Используется только в не изолированном режиме.
--grace-period <GRACE_PERIOD>
Льготный период в секундах после завершения бенчмарка перед итоговым сбором вывода.
Тонкая настройка хоста
Перед каждым бенчмарком runner применяет тонкую настройку хоста, чтобы снизить шум измерений.
По умолчанию он отключает ASLR, NMI watchdog, SMT / hyper-threading и turbo boost;
устанавливает регулятор масштабирования частоты CPU в performance, swappiness в 10, а perf_event_paranoid в -1.
Флаги ниже вместо этого оставляют отдельные оптимизации на значениях хоста по умолчанию.
--no-tuning
Отключить все оптимизации тонкой настройки хоста.
--aslr
Оставить ASLR включённым (по умолчанию: отключён для бенчмарков).
--nmi-watchdog
Оставить NMI watchdog включённым (по умолчанию: отключён для бенчмарков).
--smt
Оставить SMT / hyper-threading включённым (по умолчанию: отключён для бенчмарков).
--turbo
Оставить turbo boost включённым (по умолчанию: отключён для бенчмарков).
--swappiness <SWAPPINESS>
Установить значение swappiness.
По умолчанию используется 10.
--governor <GOVERNOR>
Установить регулятор масштабирования частоты CPU.
По умолчанию используется performance.
--perf-event-paranoid <PERF_EVENT_PARANOID>
Установить значение perf_event_paranoid.
По умолчанию используется -1.
--help
Вывести справку.
runner run
Загружает Image, создаёт rootfs и запускает его один раз на локальном хосте.
В отличие от runner up, это не подключается к API-серверу и не берёт Job.
Команда запускает один Image напрямую, что удобно для тестирования и отладки хоста Runner
или Image перед отправкой реальных Job.
runner run --image <IMAGE> [OPTIONS]Опции
--image <IMAGE>
OCI Image для запуска, в виде локального пути или ссылки на реестр.
--token <TOKEN>
JWT-токен для аутентификации в реестре при загрузке Image.
--sandbox <SANDBOX>
Режим sandbox для выполнения бенчмарка.
Используйте firecracker для Firecracker microVM (только Linux).
Опустите для не изолированного выполнения на хосте.
--timeout <TIMEOUT>
Тайм-аут выполнения в секундах.
По умолчанию используется 300.
--iter <ITER>
Количество итераций бенчмарка для выполнения.
По умолчанию используется 1.
--allow-failure
Разрешить сбой бенчмарка без короткого замыкания остальных итераций.
--entrypoint <ENTRYPOINT>
Переопределить точку входа контейнера. Может быть указано несколько раз.
--cmd <CMD>
Переопределить команду контейнера. Может быть указано несколько раз.
--env <ENV>
Задать переменную окружения в формате KEY=VALUE.
Может быть указано несколько раз.
--network
Включить сетевой доступ внутри VM.
--output <OUTPUT>
Путь к выходному файлу внутри гостевой системы для сбора. Может быть указано несколько раз.
--vcpus <VCPUS>
Переопределить количество vCPU (для тестирования).
--memory <MEMORY>
Переопределить память в MiB (для тестирования).
--disk <DISK>
Переопределить размер диска в MiB (для тестирования).
--max-output-size <MAX_OUTPUT_SIZE>
Максимальный размер в байтах для собираемых stdout и stderr.
По умолчанию используется 25 MiB.
--max-file-count <MAX_FILE_COUNT>
Максимальное количество выходных файлов для декодирования.
По умолчанию используется 255.
--max-symlinks <MAX_SYMLINKS>
Максимальное количество символических ссылок, по которым следует переходить при разрешении путей,
соответствующее ограничению MAXSYMLINKS ядра Linux.
По умолчанию используется 40.
Используется только в не изолированном режиме, поэтому конфликтует с --sandbox.
--grace-period <GRACE_PERIOD>
Льготный период в секундах после завершения бенчмарка перед итоговым сбором вывода.
По умолчанию используется 1.
--sandbox-log-level <SANDBOX_LOG_LEVEL>
Уровень логирования для процесса sandbox.
Требует --sandbox.
По умолчанию используется warning.
Тонкая настройка хоста
Перед каждым бенчмарком runner применяет тонкую настройку хоста, чтобы снизить шум измерений.
По умолчанию он отключает ASLR, NMI watchdog, SMT / hyper-threading и turbo boost;
устанавливает регулятор масштабирования частоты CPU в performance, swappiness в 10, а perf_event_paranoid в -1.
Флаги ниже вместо этого оставляют отдельные оптимизации на значениях хоста по умолчанию.
--no-tuning
Отключить все оптимизации тонкой настройки хоста.
--aslr
Оставить ASLR включённым (по умолчанию: отключён для бенчмарков).
--nmi-watchdog
Оставить NMI watchdog включённым (по умолчанию: отключён для бенчмарков).
--smt
Оставить SMT / hyper-threading включённым (по умолчанию: отключён для бенчмарков).
--turbo
Оставить turbo boost включённым (по умолчанию: отключён для бенчмарков).
--swappiness <SWAPPINESS>
Установить значение swappiness.
По умолчанию используется 10.
--governor <GOVERNOR>
Установить регулятор масштабирования частоты CPU.
По умолчанию используется performance.
--perf-event-paranoid <PERF_EVENT_PARANOID>
Установить значение perf_event_paranoid.
По умолчанию используется -1.
--help
Вывести справку.