パイプライン並列性とは何か?ジョブを同時に実行する
パイプライン並列性は、独立したjobを順次ではなく同時に実行し、パイプラインにかかる実時間を縮小します。
jobを1つずつ実行するのは遅いやり方です。2つのjobが互いに依存しないなら、一方を他方の待機にする理由はありません。パイプライン並列性はそれらを別々のエージェント上で一度に実行します。これは、すべてのjobの時間を合計するパイプラインと、最長のチェーンだけによって制限されるパイプラインの違いです。
並列性はどこから来るか
- 互いに依存関係のない独立したjob。
- 1つのjobを多数のバリアントに展開するmatrix。
- 単一のjobを並列スライスにshardingする。
並列性を制限するもの
2つのものがそれを制限します。依存関係(待たねばならないjobは早く実行できない)とキャパシティ(エージェント不足は余ったjobをキューに入れる)です。独立したjobにも実行するエージェントが利用可能なときにのみ、完全な利益が得られます。
簡単な例
matrix os: [linux, windows, macos] は、1つのtestのjobを並列に実行される3つに変えます。3回の順次実行が加算される代わりに、3つのうち最も遅いものが時間を制限します。
並列性 vs critical path
並列性はcritical pathに勝てません。最長の依存関係チェーンが依然として下限を定めます。エージェントを追加すると並列作業は高速化しますが、長い直列チェーンには何もしません。両方のレバーが重要です。
並列性とランナーのキャパシティ
並列jobを宣言しても、実行する空きエージェントがある場合にのみ役立ちます。そうでなければ、それらはキューに入り、いずれにせよ直列に実行されます。マネージドランナー(Latchkey)はオンデマンドの並列キャパシティを供給するので、宣言された並列性が実際に並列で実行されます。
重要なポイント
- パイプライン並列性は、独立したjobを同時に実行します。
- 依存関係とエージェントのキャパシティが、得られる量を制限します。
- critical pathには勝てず、届けるには空きエージェントが必要です。
関連ガイド
What Is a Fan-Out Build? Splitting Work Across Many JobsA fan-out build splits one piece of work into many parallel jobs, then often fans back in to combine results.…
What Is the Critical Path of a Pipeline? The Longest ChainThe critical path of a pipeline is the longest chain of dependent jobs, which sets the minimum possible run t…
What Is a Directed Acyclic Graph in CI? Modeling Job OrderA directed acyclic graph (DAG) models pipeline jobs as nodes and dependencies as edges with no cycles. Learn…