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