warm pool とは?事前起動された runner で待ち時間ゼロ
warm pool とは、すでに起動してアイドル状態にある runner の小さな予備であり、job が到着したときにゼロからマシンをプロビジョニングするのを待つのではなく、即座に開始できるようにするものです。
ephemeral runner はクリーンですが起動が遅く、どの新しいマシンも boot、登録、準備をしなければなりません。warm pool は、あらかじめ数台の runner を準備しておくことでそのレイテンシを隠し、わずかなアイドルコストと引き換えに大きな速度を得ます。
cold start の問題
新しい runner のプロビジョニングには時間がかかります。インスタンスを起動し、OS を boot し、runner エージェントを起動し、GitHub に登録します。完全に冷えた経路では、最初の step が実行される前に数十秒から数分かかることがあります。
warm pool がどう解決するか
プラットフォームは N 台の runner を事前起動・登録済みにして待機させます。job が到着すると、準備済みの runner を掴み、約 1 秒で開始します。プールはその後バックグラウンドで自身を補充するため、次の job も高速です。
プールのサイジング
- 小さすぎる: バーストがプールをあふれさせ、オーバーフローした job が cold start に当たる。
- 大きすぎる: 決して使われないアイドルマシンにお金を払う。
- 適切なサイズ: プールが通常の並列度をカバーし、スパイクには autoscaling で対応する。
warm pool vs 永続的な runner
warm pool は、再利用による汚れなしに準備済みマシンの速度を提供します。プールの runner は依然として ephemeral で使い捨てです。高速な開始とクリーンな状態を同時に得られます。
Latchkey の warm pool
Latchkey は warm pool を維持するため、job は通常約 1 秒で開始し、キューも cold start の税もなく、各 runner は ephemeral のままです。
重要なポイント
- warm pool とは、job を即座に掴む準備ができた、事前起動済みでアイドルの runner です。
- 新しいマシンをプロビジョニングする cold start のレイテンシを隠します。
- プールのサイズは、アイドルコストとオーバーフロー cold start の可能性のトレードオフです。
- Latchkey は warm pool を使い、job が約 1 秒で開始します。
関連ガイド
What Is a Cold Start in CI? The Wait Before Your First StepA cold start is the delay while a fresh runner is provisioned before your job runs. Learn what causes it and…
What Is an Ephemeral Runner? One Job, Then GoneAn ephemeral runner is created for a single job and destroyed afterward. Learn why fresh, single-use runners…
What Is a Runner Pool? A Managed Set of Shared RunnersA runner pool is a managed set of runners that jobs draw from on demand. Learn how pools differ from warm poo…
What Is Runner Scaling Lag? The Delay Before Capacity ArrivesRunner scaling lag is the delay between demand rising and new runners coming online. Learn what causes it and…