パイプラインの所要時間を短縮するためにクリティカル パス上の 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 をインポートすることもできます:

  • ダッシュボード テンプレート civisibility-critical-path-dashboard.json を開き、内容をクリップボードにコピーします。
  • Datadog で New Dashboard を作成します。
  • コピーした内容を新しいダッシュボードに貼り付けます。
  • ダッシュボードを保存します。
CI Visibility のクリティカル パス ダッシュボード

用語

説明
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 分短縮できる可能性があります。

排他的時間の改善候補となる CI ジョブ。

参考資料