Skip to content
Latchkey

パイプライン並列性とは何か?ジョブを同時に実行する

パイプライン並列性は、独立した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には勝てず、届けるには空きエージェントが必要です。

関連ガイド