マルチビルド (同時実行処理)

この機能は、Incredibuild のEnterprise Plan でのみ利用可能です。

ここでは Incredibuild でマルチビルドを行う方法についてみていきます。この機能を使うと 1 台の Initiator マシンでVisual Studio のコンパイル、BuildConsole コマンド、IBConsole コマンドやそれらの組み合わたせた処理など、複数の処理を同時に実行できます。

この機能はデフォルトではオフになっています。有効にする [Agent Settings] を開き [Initiator] > [Multiple Builds] の順に移動して、適切な値を選択してください。

マルチビルドの使用例

この機能は次のようなシナリオで特に役立ちます。

  • 1 台のビルド サーバーから同時にビルドを行う場合: 複数の開発者が単一のビルド サーバーで作業する場合や継続的統合、継続的デリバリー サイクルでは、一般的にビルドを同時に実行する必要があります。
  • 複数のソリューションのビルドを並列に行う場合: 特に C# 開発で複数の C# ソリューションを同時に実行する可能性のある場合に使用できます。プロジェクトのコンパイルをリモ-トマシンに分散できる Incredibuild の機能と連携して、複数のソリューションビルドの同時実行を可能にすることで、フルビルド サイクルにかかる時間を大幅に高速化します。
  • 様々なシナリオでジョブを同時に処理することで、ビルド サイクル全体の時間を大幅に短縮できます。例えば、統合テストを並行して実行したり、ビルド後のステップを実行しながらアセットを生成したりすることができます。
  • ゲーム開発では、一般的にコンパイル処理と並行してほかに CPU 負荷の高いジョブ (シェーダーのコンパイルやレンダリングなど) が行われます。このマルチビルド機能により、シェーダーのコンパイルを処理しながら、ゲームのソースコードをコンパイルすることができます。

マルチビルドの注意点

単一の Initiator マシンでマルチビルドを行う場合は次に注意してください。

  • 開始マシンがリソース (特にメモリ消費と I/O アクセス) をオーバープロビジョニングすることなく、複数のジョブを実行できることを確認します。例えば、Incredibuild ではローカルマシンでのみリンク タスクが実行されます。マシンの許容量を超えるリンク タスクを同時に行うと、メモリ不足やスワップアウトによりパフォーマンスが低下することがあります。
  • 複数のビルドを同時に行う場合は同じファイルやフォルダに書き込みを行わない。
  • [Agent Settings] の [Initiator] > [General] で [Avoid task execution on local machine when possible] のチェックボックスをオンにします。これにより、可能な場合はリモートマシンで優先してタスクを処理します。Initiator マシンのリソースをローカルでしか実行できないタスクに割り当て、リモートマシンの同期リクエストに対応するためのリソースを確保します。

マルチビルドの制限

Initiator マシンのリソースに応じた同時実行処理の上限は [Agent Settings] の [Initiator] > [Multiple Builds] で設定します。同時に実行できる Incredibuild コマンドの上限数は次の 2 つの値で決まります。

同時ビルドの数を制限する (既定値は 1で、1回につき1つのビルドのみ許可されます) - Incredibuild の同時実行を可能にするために、1 以上の値を指定するか、このオプションを単にオフにすると、実行できる Incredibuild の同時実行数に制限がかからなくなります。同時実行できるビルド数は Agent に割り当てられたライセンスのコア数と [Minimum local cores per build] (後述) の設定によって制限されます。

ビルドあたりの最小ローカルコア数 (既定値は4) - 利用できるローカルコアの最小数をコントロールします。つまり、。

          

画像 1: Incredibuild のマルチビルドの設定画面 (Agent Settings)

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

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

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