スレッド: ステップの並列実行
スレッドを指定することにより、同じサーバーまたは別のサーバーでのステップの並列実行が可能になります。 スレッドは、ステップの「スレッド」プロパティーの設定値で制御されます。 デフォルトでは、「スレッド」プロパティーは「いいえ」に設定されています。スレッドは、プロジェクトの各部が単独で実行可能な場合に、プロジェクトの実行時間の短縮に役立ちます。
隣接する複数のステップの「スレッド」プロパティーが「はい」に設定されている場合、システムは、ステップを並列して実行しようとします。 このようなステップはスレッド化可能 と見なされ、残りのジョブを続行する間に、各ステップを別個に実行することができます。 スレッドは、以下の規則に従います。
- スレッド化を行うには、順次実行される 2 つ以上のステップで「スレッド」プロパティーを「はい」に設定する必要があります。 順次実行される一連のスレッド化ステップは、スレッド・ブロック と呼ばれます。 スレッド・ブロックは、インラインの一部であるステップへと続けることができます。 例えば、プロジェクト内のあるステップにインラインが含まれていて、そのインラインの最初のステップもスレッド化されている場合、その 2 つのステップは、同じスレッド・ブロックの一部になります。 これらは同時に実行されます。 スレッド・ブロックは、「結合」ステップまたは非スレッド化ステップが現れるまで、スレッド化ステップ (ネストされたインライン・ステップを含む) の後に続きます。ネストされたインライン・ステップを使用する際は、競合状態にならないように注意してください。 親スレッド化ステップからの結果またはデータにより、インラインになったスレッド化ステップで競合状態が発生する可能性があります。
- スレッド・ブロックは、「スレッド」プロパティーが「結合」に設定されているステップによって終了するか、スレッド化されていないステップを検出すると終了します。この時点で、ステップは再び順次実行されるようになります。
- システムは、スレッドが有効であるステップを見つけた場合、そのステップを開始しようとします。
以降のステップがスレッド化される場合も、システムはそのステップを開始しようとし、次のステップに進みます。これは、スレッドが有効なステップがなくなるまで、またはジョブの上限に達するまで繰り返されます。
プロジェクトのセレクターでサーバー・プールを指定している場合は、ジョブの上限は概念的にプール内にある複数のサーバーのジョブの上限を合計した値になります。 注: スレッド化ステップの開始時刻は、ステップを実行するサーバーの可用性によって決まります。 ステップを開始できない場合、システムは待機してから再度開始しようとします。 最初に開始するステップを明示的に制御することはできません。
- 複数のステップを、(そのサーバーの能力によっては) 1 つのサーバーで、または (セレクターに一致するサーバーの数によっては) 複数のサーバーで、同時に実行することになる場合があります。
- すべてのステップを 1 つのサーバーで強制的に実行させる場合は、プロジェクトの「スティッキー」プロパティーを使用してください。
- スレッド・ブロックが複数ある場合は、最初のスレッド・ブロックを完了してから、次のスレッド・ブロックを開始する必要があります。
以下の例では、ステップ 2、3、および 4 が完了してから、ステップ 5 および 6 が開始される必要があります。
プロジェクト ステップのスレッド・プロパティー ステップ 1 いいえ ステップ 2 はい ステップ 3 はい ステップ 4 結合 ステップ 5 はい ステップ 6 はい ステップ 7 いいえ - プロジェクトの「最大スレッド」プロパティーを使用して、同時に実行可能なスレッドの数を制限します。 スレッド化可能なステップとそのインライン・プロジェクトがある場合は、それぞれ並行して処理される可能性があります。 すべての処理は、親プロジェクトの最大数に達するまでカウントされます。 「最大スレッド」値に達すると、システムは新規並列処理の起動を停止します。 プロジェクトの並列処理数が「最大スレッド」値を下回るまで待機した後で、システムは処理を続行します。