パイプラインの所要時間を短縮するためにクリティカル パス上の CI ジョブを特定する
This product is not supported for your selected
Datadog site. (
).
概要
このガイドでは、CI パイプライン全体の所要時間を短縮するために、どのジョブを優先すべきかを判断できるよう、クリティカル パス上にある CI ジョブの特定方法を解説します。
CI パイプラインにおけるクリティカル パスの理解
CI パイプライン実行におけるクリティカル パスとは、そのパイプライン実行の総所要時間を決定する、最も長い CI ジョブの連なりです。本質的には、CI ジョブの依存関係グラフの中で、完了までに最も時間がかかる経路を指します。CI パイプライン実行の総所要時間を短縮するには、このクリティカル パス上の CI ジョブの所要時間を短縮する必要があります。
ジョブの所要時間を見るだけでは十分でない場合があります。CI ジョブは通常、他のジョブと並列に実行されるため、パイプライン実行時間の短縮は、その CI ジョブの 排他的時間 をどれだけ減らせるかによって決まります。
クリティカル パス上のジョブの排他的時間は、並列で実行されていた他のジョブの実行時間を除外して、CI ランナーが特定のジョブの実行に費やした時間を表します。
たとえば、CI ジョブ job1 が 100 ms の所要時間でクリティカル パス上にあり、80 ms の所要時間を持つ CI ジョブ job2 と並列で実行されている場合、クリティカル パス上における job1 の排他的時間は 20 ms です。つまり、job1 の所要時間を 20 ms より多く短縮しても、パイプライン全体の所要時間は 20 ms しか短縮されません。
CI パイプラインを改善するための主要な CI ジョブを特定する
ファセットの使用
@ci.on_critical_path や @ci.critical_path.exclusive_time といったファセットを使用すると、CI パイプライン内でどの CI ジョブがクリティカル パス上にあるかを特定できます。これらのファセットを活用して、要件に合わせたカスタム ダッシュボードやノート ブックを作成できます。
これらのファセットは、クエリで ci_level:job を使用する場合にのみ利用できます。
ダッシュボード テンプレートの使用
次のダッシュボード テンプレート CI Visibility - Critical Path をインポートすることもできます:
用語
| 列 | 説明 |
|---|
| Total Exclusive Time On Critical Path | ジョブの排他的時間の合計です。対象となるパイプラインで見込める時間短縮量の概算を示します。 |
| Avg Exclusive Time On Critical Path | クリティカル パス上にある特定ジョブの平均排他的時間です。ジョブの排他的時間を減らした場合に、パイプラインの所要時間がどの程度短縮されるかを示します。 |
| Rate On Critical Path | ジョブがクリティカル パス上にある頻度を測定します。 |
例
前の画像では、metrics という CI ジョブは合計排他的時間 (Total Exclusive Time On Critical Path) が最も高く、改善候補であることがわかります。平均排他的時間はおよそ 21 分であり、この CI ジョブについて最大 21 分の改善余地があることを意味します。
この CI ジョブが 43.5% の割合でクリティカル パス上にあることがわかっているため、パイプライン実行の 43.5% において、平均パイプライン所要時間を最大 21 分短縮できる可能性があります。
参考資料