runnerのスケーリングラグとは?容量が届くまでの遅延
runnerのスケーリングラグは、需要の急増から新しいrunnerが実際に準備完了になるまでの時間です - autoscalingが追いつく間にjobがキューされる窓です。
autoscalingは瞬時ではありません。jobのバーストが到着すると、システムはそれに気づき、インスタンスを起動し、それがbootして登録するのを待たなければなりません。その遅延がスケーリングラグであり、autoscaledなfleetでも一時的にキューが生じうる理由です。
ラグはどこから来るか
- 検出: コントローラがpollし、遅延を伴ってキューに気づく。
- Launch: 新しいインスタンスを要求し起動するのに時間がかかる。
- Bootと登録: 各新runnerはjobを取る前にcold-startする。
なぜ重要か
ラグの間、システムが正しくスケールアップしていてもjobはキューに座ります。短いバーストでは、新しい容量が届く前にキューが片付くことすらあります - つまり開発者は何のためでもなく待ったことになります。
warm poolがどう隠すか
warm poolはすでにbootされたrunnerでバーストの最初の波を吸収するので、autoscalingが裏でより多くの容量をプロビジョニングする間、jobは即座に開始します。poolはラグを覆う時間を稼ぎます。
ラグを最小化する
より速い検出、事前ウォームされた容量、より小さいイメージはすべてラグを縮めます。マネージドプラットフォームはwarm poolと高速なautoscalingを組み合わせ、バーストが即座に処理されラグが見えなくなるようにします。
スケーリングラグ vs cold start
両者は関連しますが別物です: cold startは1つのrunnerがプロビジョニングに時間をかけることで、スケーリングラグはシステムがそもそもrunnerを追加すると判断するのに時間をかけることです。warm poolでcold startを排除しても、poolがバーストに対して小さすぎればラグは依然として見えます。
重要なポイント
- スケーリングラグはautoscaledなrunnerがオンラインになるまでの遅延です。
- 検出、launch、bootと登録の時間から生じます。
- ラグの間、システムが正しくスケールしていてもjobはキューされます。
- warm poolがバーストを吸収し、ラグを開発者に見えなくします。
関連ガイド
What Is Runner Autoscaling? Capacity That Follows DemandRunner autoscaling automatically adds and removes CI runners based on job demand. Learn how it works, why it…
What Is a Warm Pool? Pre-Booted Runners, Zero WaitA warm pool is a set of pre-booted runners kept ready so jobs start instantly instead of waiting for a cold s…
What Is a Runner Queue? Why Jobs Wait Before They RunA runner queue is the backlog of jobs waiting for an available runner. Learn what causes queueing, how to rea…
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…