この機能を使うと 1 台のイニシエーター マシンで Visual Studio のコンパイル、BuildConsole コマンド、IBConsole コマンドやそれらを組み合わせなど、複数の処理を同時並行して行うことができます。
この機能はデフォルトではオフになっています。設定するには Agent Settings で [Initiator] > [Multiple Builds] の順に移動して、適切な値を選択してください。
IncrediBuild の並行処理に関連するケース
この機能は次のようなケースで特に役立ちます。
- 1 つのビルド サーバーから同時にビルドを行う場合: 複数の開発者が単一のビルド サーバーで作業する場合や継続的インテグレーション、継続的デリバリー サイクルでは、一般的にビルドを並行して処理する必要があります。複数の開発者が 1 台のマシンに対して同時にビルドを発行する場合は特に有効です。
- 複数のソリューションを並列に行う場合: 特に C# 開発で複数の C# ソリューションを同時に実行する可能性のある場合に使用できます。プロジェクトのコンパイルをリモ-ト マシンに分散できる IncrediBuild の機能と連携して、複数のソリューションの同時処理を可能にすることで、フルビルド サイクルにかかる時間を大幅に高速化します。
- さまざまなケースでジョブを同時に処理することで、ビルド サイクル全体の時間を大幅に短縮できます。たとえば、ユニットテストと統合テストを同時に実行したり、ポストビルド ステップを実行しながらアセットを作成できます。
- ゲーム開発では、一般的にコンパイル処理と並行して他の計算集約型のジョブ (シェーダーのコンパイルやレンダリングなど) が行われます。この同時ビルド処理機能により、シェーダーのコンパイルを処理中でも、そのソースコードの開発とコンパイルを継続できます。
IncrediBuild で並行処理を行う際の注意事項
単一のイニシエーター マシンで並行処理を行う場合は次に注意してください。
- イニシエーター マシンがリソース (特にメモリ消費と I/O アクセス) をオーバープロビジョニングすることなく、複数のジョブを実行できることを確認してください。たとえば、IncrediBuild でリンク タスクが実行できるのはローカル マシンのみです。マシンの許容量を超えるリンク タスクを同時に行うと、メモリ不足やスワップアウトによりパフォーマンスが低下することがあります。
- 複数のビルドを同時に行う場合は同じファイルやフォルダに書き込みを行わないでください。
- Agent Settings の [Initiator] > [General] で [Avoid task execution on local machine when possible] のチェックボックスをオンにすることをお勧めします。これにより、可能な場合はリモート マシンで優先してタスクを処理します。イニシエーター マシンのリソースをローカルでしか実行できないタスクに使用して、リモート マシンの同期リクエストに対応するためのリソースを確保します。
IncrediBuild で行う並行処理を制限する
イニシエーター マシンのリソースに応じた並行処理の上限を Agent Settings の [Initiator] > [Multiple Builds] で設定できます。同時に実行できる IncrediBuild コマンドの上限数は次の 2 つの値で決まります。
Limit number of concurrent builds to: デフォルト値は 1 です。この場合、同時に実行できるビルドは 1 つのみです。並行処理を行いたい場合は、1 より大きい値を指定するか、チェックボックスをオフにして機能を無効にします。無効にした場合は並行して行える処理数に制限はありません (並行ビルドの上限)。
注意: 並行処理できるビルド数は Agent に付与されているライセンスのコアの数と [Minimum local cores per build] (後述) の設定により制限されます。
Minimum local cores per build: デフォルト値は 4 です。IncrediBuild で別の処理を同時に開始するのに必要な (IncrediBuild の別の処理に使用されない) ローカル コアの最小数を設定します (ビルドごとの最小ローカル コア)。
画像 1: IncrediBuild の並行処理の設定画面 (Agent Settings)
例: 10 個のローカル コアを持つマシンで、並行ビルドの上限が「3」、ビルドごとの最小ローカル コアが「4」に設定されている場合。
- IncrediBuild で最初のビルドを実行すると 10 コアすべてが使用されます (追加のヘルパー コアも使用)。
- 2 つ目のビルドを開始すると 10 コアが均等に分割され、それぞれのビルドにローカル コアが 5 個ずつ割り当てられます (追加のヘルパー コアも使用)。ビルドごとの最小ローカル コアは 4 なので、ビルドは並行に実行されます。
- 3 つ目のビルドはローカル コアが不足しているため実行されず、IncrediBuild の実行キューに追加されます。10 個のローカル コアを 3 つのビルドで分割する場合は、コアの割り当てが 4 + 4 + 2 となります。最後のビルドには 2 つのローカル コアしか割り当てることができず、新しいビルドを開始するには不十分なため、実行中のビルドが完了してローカル コアが解放されるまでビルドを待機します。
最初のビルドは「ビルドごとの最小ローカル コア」の設定値の影響を受けません。
たとえば、マシンにコアが 2 つしかなく、設定値が「4」の場合でも 2 つのコアを使ってビルドを実行できます。