セルフホスト型 Bare Metal Runner


セルフホスト型 Runner とは、Bencher が管理する On-Demand または Dedicated Runner を使う代わりに、 自分自身で実行・管理する Bare Metal Runner です。 runner バイナリを Bencher API サーバーに向けると、 自分自身のハードウェア上で Job を要求して実行します。

Runner のセルフホストは、次のような場合に適しています。

  • Bencher Cloud が提供していない特定のハードウェア上でベンチマークを実行したい
  • ベンチマークのワークロードを自分自身のネットワーク内やエアギャップ環境に保ちたい
  • Bencher Self-Hosted をエンドツーエンドで実行したい

このガイドでは、Runner の登録、Spec によるそのハードウェアの記述、両者の連携、 そして runner バイナリの起動までを順に説明します。 Runner、Spec、Sandbox、Job がどのように組み合わさるかの概念的な概要については、 Bare Metal の概要 を参照してください。

🐰 Firecracker のサンドボックス化には、KVM が有効になった Linux が必要です。 サンドボックスなしの Spec のみを提供する Runner は、サポートされている任意のホスト上で実行できます。

Runner を作成する

Runner は、runner バイナリを Bencher API サーバーに対して認証するリソースです。 bencher CLIRunners REST API、 または Bencher Console で作成します。

Terminal window
bencher runner create \
--host https://api.bencher.example.com \
--name "My Runner"

Bencher は新しい Runner をそのキーとともに返します。

{
"uuid": "...",
"key": "bencher_runner_..."
}

キーは一度だけ表示されるため、安全に保管してください。 Runner を起動する際に、このキーを runner バイナリに渡します。 キーを紛失または漏洩した場合は、POST /v0/runners/{runner}/key API でローテーションします。 これにより、以前のキーは直ちに無効化されます。

Spec を作成する

Spec は、Runner が提供するハードウェアを記述します。 オペレーティングシステム、CPU アーキテクチャ、Sandbox の種類、CPU 数、メモリ、ディスク、ネットワークアクセスです。 Job は必要とする Spec を宣言し、Runner はサポートする Spec の Job のみを要求します。

bencher CLISpecs REST API、 または Bencher Console で Spec を作成します。

Terminal window
bencher spec create \
--host https://api.bencher.example.com \
--name "Intel v1" \
--os linux \
--architecture x86_64 \
--sandbox firecracker \
--cpu 4 \
--memory 51539607552 \
--disk 137438953472

サンドボックスなしの Spec を定義するには --sandbox を省略し、 この Spec の Job にネットワークアクセスを許可する場合は --network を渡します。 メモリとディスクはバイト単位で指定します。 Spec の詳細と、Testbed が各 Report で使用された Spec をどのように記録するかについては、 Testbed と Spec を参照してください。

Spec を Runner に割り当てる

Runner Spec は、Spec を Runner に紐付けます。 1 つの Runner は複数の Spec をサポートでき、1 つの Spec は複数の Runner からサポートされ得ます。 Runner は、割り当てられた Spec の Job のみを要求します。

bencher CLI または Runner Specs REST API で Spec を Runner に追加します。

Terminal window
bencher runner spec add my-runner \
--host https://api.bencher.example.com \
--spec intel-v1

後で紐付けを解除するには、DELETE /v0/runners/{runner}/specs/{spec} API を使用します。

Runner を起動する

Runner を作成し、少なくとも 1 つの Spec を割り当てたら、 runner up でハードウェア上の runner バイナリを起動します。 API サーバーのホスト、Runner の UUID またはスラッグ、そして Runner キーを、 フラグまたは環境変数として指定します。

Terminal window
runner up \
--host https://api.bencher.example.com \
--runner my-runner \
--key bencher_runner_...
Terminal window
export BENCHER_HOST=https://api.bencher.example.com
export BENCHER_RUNNER=my-runner
export BENCHER_RUNNER_KEY=bencher_runner_...
runner up

runner バイナリは API サーバーへの単一の WebSocket 接続 を開き、 自身の Spec に一致する Job をポーリングし、それぞれを実行して結果を報告します。 接続は複数の Job にわたって開いたままになり、 新しいバージョンが利用可能になると、バイナリは Job の合間に 自身を更新します

デフォルトでは、Runner は Sandbox のない Spec の Job をすべて拒否します。 Runner にサンドボックスなしの Job をホスト上で直接実行させるには、 --danger-allow-no-sandbox フラグ を付けて起動します。

  • runner up

    runner up

    Runner を起動し、ベンチマーク Job をポーリングして実行します。 これは セルフホスト型 Runner を運用するために使う、長時間実行コマンドです。 Runner は API サーバーへの単一の WebSocket 接続 を開き、 自身の Spec に一致する Job を要求し、それらを実行して結果を報告します。

    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 を待機する際のロングポーリングのタイムアウト (秒)。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>

    収集される stdoutstderr の最大サイズ (バイト)。 デフォルトでは 25 MiB が使用されます。

    --max-file-count <MAX_FILE_COUNT>

    デコードする出力ファイルの最大数。 デフォルトでは 255 が使用されます。

    パス解決時にたどるシンボリックリンクの最大数。 Linux カーネルの MAXSYMLINKS 制限に一致します。 デフォルトでは 40 が使用されます。 サンドボックスなしモードでのみ使用されます。

    --grace-period <GRACE_PERIOD>

    ベンチマーク終了後、最終的な出力収集までの猶予期間 (秒)。

    ホストチューニング

    各ベンチマークの前に、runner は測定ノイズを低減するためにホストチューニングを適用します。 デフォルトでは、ASLR、NMI ウォッチドッグ、SMT / ハイパースレッディング、ターボブーストを無効にし、 CPU スケーリングガバナーを performance、swappiness を 10perf_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 CLI リファレンスを、 サーバーとやり取りされるメッセージについては Runner プロトコル リファレンスを参照してください。

セルフホスト型 Runner のワークフロー

Runner が接続されると、他の Bare Metal Runner と同じ方法でベンチマークを送信します。 Image をビルドしてプッシュし、一致する Spec で bencher run --image を実行します。 以下の図は、Runner の登録から Job の実行までの全体の流れを示しています。

OCI Registryrunner binaryAPI ServerOCI Registryrunner binaryAPI ServerAdminbencher runner createRunner + keybencher spec createbencher runner spec addrunner up --host --runner --keyConnect (WebSocket) and poll for JobsAssign matching JobPull ImageImage layersRun benchmarkSubmit resultsAdmin

続けて読む: runner CLI リファレンス ➡

🤖 このドキュメントは AI によって自動的に翻訳されました。 正確ではない可能性があり、間違いが含まれている可能性があります。 エラーを見つけた場合は、GitHub で問題を開いてください。.


Published: Fri, June 19, 2026 at 8:00:00 AM UTC