CI における cold start とは?最初の step 前の待ち時間
cold start とは、job が 1 つの step を実行できるようになる前に、真新しい runner をプロビジョニングする - boot し、登録し、準備する - のに費やされる時間です。
ephemeral runner はすべての job にクリーンなマシンを与えますが、クリーンなマシンはまず作成されなければなりません。そのセットアップ時間が cold start であり、新しい runner に当たるすべての job で、フィードバックのレイテンシとして払うデッドタイムです。
cold start の間に起きること
インスタンスを起動し、OS を boot し、runner エージェントを起動して GitHub に登録し、それから job を開始します。完全に冷えた経路では、イメージのサイズとインフラによって、数十秒から数分に及ぶことがあります。
cold start vs warm start
warm start は、すでに boot・登録済みの runner に job を渡すため、最初の step は約 1 秒で始まります。冷たいと温かいの違いは、完全にあなたが事前に行った、または行わなかったプロビジョニング作業によるものです。
cold start を悪化させるもの
- pull と boot に時間がかかる大きい runner イメージ。
- job が到着するまで runner が存在しない、ゼロからのスケール。
- 復元元の cache がない、重い依存関係のインストール。
取り除く方法
事前起動された runner の warm pool を維持して job が準備済みのマシンを掴めるようにし、cache を使って新しい runner でも依存関係を再構築するのではなく高速に復元できるようにします。
Latchkey では cold start なし
Latchkey は job を warm pool から提供するため、cold start の待ちなしに ephemeral runner のクリーンな状態の利点が得られます - job は通常約 1 秒で開始します。
重要なポイント
- cold start とは、新しい runner が job を実行できるようになる前のプロビジョニング遅延です。
- warm start は約 1 秒で始まり、cold start ははるかに長くかかります。
- 大きいイメージ、ゼロからのスケール、cache されていない依存関係が悪化させます。
- warm pool と cache が cold start の税をなくします。
関連ガイド
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 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 Cache? Reusing Work Across Clean RunsA runner cache stores dependencies and build outputs so ephemeral runners skip redoing expensive work. Learn…
What Is a Runner Image? The Template Behind Every RunnerA runner image is the preconfigured disk template a runner boots from, with the OS and preinstalled tools. Le…