Bencher runner CLI
runner 바이너리는 Bare Metal 벤치마크 Job을 실행하는 에이전트입니다.
Self-Hosted Runner를 설정하기 위한 심층 참조 자료입니다.
이 바이너리는 두 개의 하위 명령을 제공합니다:
runner up: Runner를 시작하여 벤치마크 Job을 폴링하고 실행합니다.runner run: Image를 풀(pull)하여 로컬 호스트에서 한 번 실행합니다(테스트용).
🐰
runner바이너리는bencher runner하위 명령과 다릅니다.runner바이너리는 Runner 호스트를 운영하는 반면,bencher runner는 REST API를 통해 Runner 리소스를 관리합니다.
runner up
Runner를 시작하여 벤치마크 Job을 폴링하고 실행합니다. Self-Hosted Runner를 운영하는 데 사용하는 장기 실행 명령입니다. Runner는 API 서버로 단일 WebSocket 연결을 열고, 자신의 Spec과 일치하는 Job을 청구(claim)하고, 실행한 후, 결과를 다시 보고합니다.
runner up [OPTIONS]옵션
--host <HOST>
연결할 Bencher API 서버입니다.
기본적으로 https://api.bencher.dev가 사용됩니다.
BENCHER_HOST 환경 변수로도 설정할 수 있습니다.
--runner <RUNNER>
운영할 Runner의 UUID 또는 슬러그입니다.
BENCHER_RUNNER 환경 변수로도 설정할 수 있습니다.
--key <KEY>
Runner를 생성할 때 반환된
Runner 인증 키(bencher_runner_...)입니다.
BENCHER_RUNNER_KEY 환경 변수로도 설정할 수 있습니다.
--poll-timeout <POLL_TIMEOUT>
Job을 기다리는 동안의 롱 폴(long-poll) 타임아웃(초)으로, 1에서 900 사이입니다.
기본적으로 55가 사용됩니다.
--danger-allow-no-sandbox
Sandbox 없이 Job 실행을 허용합니다.
이 플래그가 없으면, Sandbox가 없는 Spec의 Job은 런타임에 거부됩니다.
샌드박스 없는 Job은 호스트에서 직접 실행되므로, 신뢰할 수 있는 워크로드에만 활성화하세요.
BENCHER_DANGER_ALLOW_NO_SANDBOX 환경 변수로도 설정할 수 있습니다.
--sandbox-log-level <SANDBOX_LOG_LEVEL>
샌드박스 프로세스의 로그 레벨입니다.
기본적으로 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>
경로 확인 중 따라갈 심볼릭 링크의 최대 개수로,
Linux 커널의 MAXSYMLINKS 제한과 일치합니다.
기본적으로 40이 사용됩니다.
샌드박스 없는 모드에서만 사용됩니다.
--grace-period <GRACE_PERIOD>
벤치마크 종료 후 최종 출력 수집 전까지의 유예 기간(초)입니다.
호스트 튜닝
각 벤치마크 전에, runner는 측정 노이즈를 줄이기 위해 호스트 튜닝을 적용합니다.
기본적으로 ASLR, NMI 워치독, SMT / 하이퍼스레딩, 터보 부스트를 비활성화하고,
CPU 스케일링 거버너를 performance로, swappiness를 10으로, perf_event_paranoid를 -1로 설정합니다.
아래 플래그는 개별 최적화를 대신 호스트 기본값으로 유지합니다.
--no-tuning
모든 호스트 튜닝 최적화를 비활성화합니다.
--aslr
ASLR을 활성화된 상태로 유지합니다(기본값: 벤치마크에서는 비활성화).
--nmi-watchdog
NMI 워치독을 활성화된 상태로 유지합니다(기본값: 벤치마크에서는 비활성화).
--smt
SMT / 하이퍼스레딩을 활성화된 상태로 유지합니다(기본값: 벤치마크에서는 비활성화).
--turbo
터보 부스트를 활성화된 상태로 유지합니다(기본값: 벤치마크에서는 비활성화).
--swappiness <SWAPPINESS>
swappiness 값을 설정합니다.
기본적으로 10이 사용됩니다.
--governor <GOVERNOR>
CPU 스케일링 거버너를 설정합니다.
기본적으로 performance가 사용됩니다.
--perf-event-paranoid <PERF_EVENT_PARANOID>
perf_event_paranoid 값을 설정합니다.
기본적으로 -1이 사용됩니다.
--help
도움말을 출력합니다.
runner run
Image를 풀(pull)하고, rootfs를 생성한 후, 로컬 호스트에서 한 번 실행합니다.
runner up과 달리, 이 명령은 API 서버에 연결하거나 Job을 청구하지 않습니다.
단일 Image를 직접 실행하며, 실제 Job을 제출하기 전에 Runner 호스트나
Image를 테스트하고 디버깅하는 데 유용합니다.
runner run --image <IMAGE> [OPTIONS]옵션
--image <IMAGE>
실행할 OCI Image로, 로컬 경로 또는 레지스트리 참조입니다.
--token <TOKEN>
Image를 풀할 때 레지스트리 인증에 사용하는 JWT 토큰입니다.
--sandbox <SANDBOX>
벤치마크 실행을 위한 샌드박스 모드입니다.
Firecracker microVM(Linux 전용)을 사용하려면 firecracker를 사용하세요.
샌드박스 없는 호스트 실행을 위해서는 생략하세요.
--timeout <TIMEOUT>
실행 타임아웃(초)입니다.
기본적으로 300이 사용됩니다.
--iter <ITER>
실행할 벤치마크 반복 횟수입니다.
기본적으로 1이 사용됩니다.
--allow-failure
남은 반복을 중단(short-circuit)하지 않고 벤치마크 실패를 허용합니다.
--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>
경로 확인 중 따라갈 심볼릭 링크의 최대 개수로,
Linux 커널의 MAXSYMLINKS 제한과 일치합니다.
기본적으로 40이 사용됩니다.
샌드박스 없는 모드에서만 사용되므로, --sandbox와 충돌합니다.
--grace-period <GRACE_PERIOD>
벤치마크 종료 후 최종 출력 수집 전까지의 유예 기간(초)입니다.
기본적으로 1이 사용됩니다.
--sandbox-log-level <SANDBOX_LOG_LEVEL>
샌드박스 프로세스의 로그 레벨입니다.
--sandbox가 필요합니다.
기본적으로 warning이 사용됩니다.
호스트 튜닝
각 벤치마크 전에, runner는 측정 노이즈를 줄이기 위해 호스트 튜닝을 적용합니다.
기본적으로 ASLR, NMI 워치독, SMT / 하이퍼스레딩, 터보 부스트를 비활성화하고,
CPU 스케일링 거버너를 performance로, swappiness를 10으로, perf_event_paranoid를 -1로 설정합니다.
아래 플래그는 개별 최적화를 대신 호스트 기본값으로 유지합니다.
--no-tuning
모든 호스트 튜닝 최적화를 비활성화합니다.
--aslr
ASLR을 활성화된 상태로 유지합니다(기본값: 벤치마크에서는 비활성화).
--nmi-watchdog
NMI 워치독을 활성화된 상태로 유지합니다(기본값: 벤치마크에서는 비활성화).
--smt
SMT / 하이퍼스레딩을 활성화된 상태로 유지합니다(기본값: 벤치마크에서는 비활성화).
--turbo
터보 부스트를 활성화된 상태로 유지합니다(기본값: 벤치마크에서는 비활성화).
--swappiness <SWAPPINESS>
swappiness 값을 설정합니다.
기본적으로 10이 사용됩니다.
--governor <GOVERNOR>
CPU 스케일링 거버너를 설정합니다.
기본적으로 performance가 사용됩니다.
--perf-event-paranoid <PERF_EVENT_PARANOID>
perf_event_paranoid 값을 설정합니다.
기본적으로 -1이 사용됩니다.
--help
도움말을 출력합니다.