マルチビルド(IncrediBuildコマンドの同時実行処理)

この機能を使うと 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 より大きい値を指定するか、チェックボックスをオフにして制限機能を無効にします。無効にした場合は同時に行える実行処理数に制限はありません (同時実行ビルドの上限)。
注意: 同時実行できるビルド数は Agent に付与されているライセンスのコアの数と [Minimum local cores per build] (後述) の設定により制限されます。

Minimum local cores per build: デフォルト値は 4 です。IncrediBuild で別の処理を同時に開始するのに必要な (IncrediBuild の別の処理に使用されない) ローカル コアの最小数を設定します (ビルドごとの最小ローカル コア)。


          

      画像 1: IncrediBuild の同時実行処理の設定画面 (Agent Settings)

例: 10 個のローカル コアを持つマシンで、同時実行ビルドの上限が「3」、ビルドごとの最小ローカル コアが「4」に設定されている場合。

  1. IncrediBuild で最初のビルドを実行すると 10 コアすべてが使用されます (追加のヘルパー コアも使用)。
  2. 2 つ目のビルドを開始すると 10 コアが均等に分割され、それぞれのビルドにローカル コアが 5 個ずつ割り当てられます (追加のヘルパー コアも使用)。ビルドごとの最小ローカル コアは 4 なので、ビルドは同時並列に実行されます。
  3. 3 つ目のビルドはローカル コアが不足しているため実行されず、IncrediBuild の実行キューに追加されます。10 個のローカル コアを 3 つのビルドで分割する場合は、コアの割り当てが 4 + 4 + 2 となります。最後のビルドには 2 つのローカル コアしか割り当てることができず、新しいビルドを開始するには不十分なため、実行中のビルドが完了してローカル コアが解放されるまでビルドを待機します。

最初のビルドは「ビルドごとの最小ローカル コア」の設定値の影響を受けません。
たとえば、マシンにコアが 2 つしかなく、設定値が「4」の場合でも 2 つのコアを使ってビルドを実行できます。