在宅での使用
Incredibuild は環境内のすべてのマシンからコンピューティング パワーを活用することができますが、それには物理マシン、仮想マシン、クラウド リソースを問わず、コンピューター間の高速なネットワーク接続が求められます。
働き方の変化に伴い、ネットワーク環境が最適とはいえない自宅から仕事をする機会も増えています。ここでは自宅からより快適に Incredibuild を使用するための要件や設定についてみていきます。
ネットワーク要件
-
帯域幅: 70 MB/s 以上(広いほど良い)。
-
レイテンシー: 200 MS 未満
各種リソースの利用
Incredibuild は技術的にはどのような環境でも使用できます。ただし、ネットワーク速度がボトルネックになることがあるので、同じネットワーク (クラウドやオフィスなど) のリソース群への接続を推奨しています。そのような選択肢がない場合は、自宅のデバイスに Incredibuild をインストールすることもできます。
クラウド リソースの利用
Incredibuild のクラウド ソリューションを使って、Helper Agent をオンデマンドでデプロイすることができます。これは自宅のネットワーク接続が高速で安定している場合のみ有効です。以下のような場合にお勧めです。
-
自宅のネットワーク接続は高速だが、Helper Agent マシン (同僚の自宅のマシン) の接続が良好かどうか分からない場合。
-
自宅のネットワーク接続は高速だが、低速な VPN 回線経由で Helper Agent に接続しなければならない場合。
上記のような場合には、自分のマシンを Initiator として使ってクラウド上の Agent を活用することができます。
パフォーマンスの最適化
以下に自宅勤務で最大のパフォーマンスを得るためのヒントをいくつか紹介しています。ご利用状況に当てはまるものをお試しください。
Build Cacheの使用
Build Cache を使用することで、速度に影響を与えることなく自宅からビルドすることができます。自宅での作業は、アップストリームの帯域幅が制限されるため、構築速度に影響します。Build cacheは、ローカルマシンに保存されている過去のビルドデータを再利用し、ビルド時間を大幅に短縮することができます。
Unreal Engine を最適化する
注意: 以下の推奨事項は、Unreal Engine 4.24 および 5.0 と、ダウンストリーム 100 Mbps、アップストリーム 5 Mbps の非対称帯域幅接続でテストおよび検証されたものです。
上りの帯域幅が制限された環境で Unreal Engine を使用した場合、パフォーマンスが著しく低下することがあります。その理由は主に次の 2 つです。
-
Unreal Engine では各ビルドで大容量の PCH ファイルが作成されるため。
-
ターゲット ツールセット (Visual Studio コンパイラ ツールセットなど) のリンクがリモートで実行されて、OBJ や PDB ファイルが大量にリモートマシンに同期されるため。
上りの帯域幅が制限されている環境で大容量の PCH、OBJ、PDB ファイルをリモートマシンに同期するため、タスクの実行が大幅に遅れ、強制終了や切断の原因にもなります。パフォーマンスの低下を防ぎ、高速化を実現するためには、次のような対策でこれらの課題を解決する必要があります。
PCH ファイルを使用しない
PCH ファイルの使用を無効にすることで Unreal Engine を使ったビルドを自宅から行う際のパフォーマンスを改善することができます。これは「BuildConfiguration.xml」ファイル(install_dir\Unreal Engine\UnrealBuildToolBuildConfiguration.xml に格納) で行います。
> PCH ファイルの無効化
Unreal Engine の「BuildConfiguration.xml」ファイルに次を追加します。
<BuildConfiguration>
<bUsePCHFiles>false</bUsePCHFiles>
</BuildConfiguration>
以下は PCH ファイルが無効になっている「BuildConfiguration.xml」ファイルの例です。
<?xml version="1.0" encoding="utf-8" ?>
<Configuration >
<BuildConfiguration>
<bUsePCHFiles>false</bUsePCHFiles>
</BuildConfiguration>
</Configuration>
ローカルでリンクを行う
自宅で Unreal Engine を使用する際には、リンクを強制的にローカルで実行したり、大容量の OBJ ファイルや PDB ファイルをリモートマシンに同期させなかったりすることでパフォーマンスを改善できます。
False リンカフラグ -LinkAction.bCanExecuteRemotely を設定し、操作を完了します。このフラグを「False」に設定することで、Incredibuild に統合されている Unreal Build システムにすべてのリンク タスクをローカルマシンで実行させることができます。このフラグはツールセットごとに個別に適用されて「.cs」ファイルに常駐します。
デフォルトで「LinkAction.bCanExecuteRemotely」フラグが「False」に設定されている場合 (ほとんどのツールセットでデフォルトは「False」)、設定の変更は不要ですが、次の 2 つのツールセットの設定を変更する必要があります。
-
VCToolChain
設定ファイルの格納場所:
Install_dir:\UE4\Engine\Source\Programs\UnrealBuildTool\Platform\Windows\VCToolChain.cs
-
HoloLensToolChain
設定ファイルの格納場所:
Install_dir:\UE4\Engine\Source\Programs\UnrealBuildTool\Platform\HoloLens\HoloLensToolChain.cs
> リンクをローカルで強制実行
-
使用しているツールセットの「.cs」ファイルを開きます。
-
「LinkAction.bCanExecuteRemotely」フラグを探して値を「False」に設定します。
以下の画像 (VCToolChain.cs ファイル) は、「VCToolChain」のリンクをリモートで実行しないように設定した例です。
有線接続を使用する
有線接続に切り替えることでネットワークが高速になり、信頼性が向上します。
VPN の帯域幅を確認する
自宅のネットワークが高速でも、VPN がパフォーマンスのボトルネックになることがあります。VPN 経由で接続する場合は帯域幅が十分に広いことを確認してください。
大容量の入力ファイルを持つタスクを分散しない
大容量の入力ファイルが必要なタスクをできるだけ自宅のマシンから分散しないようにしましょう(PCH ファイルや PDB ファイルの使用を避けるなど)。
ローカルマシンでリモート プロセスを再起動する
これは低速のリモートマシンのタスクが終わるまでジョブが「待機」されるシナリオを防ぐのに役立ちます。マシンの反応が遅い場合、Incredibuild はリモートマシンと同時にローカルマシンでタスクを実行し、タスクを先に終えたマシンの出力を採用します。
自宅で作業する場合はリモートマシンが遅くなる可能性が高いので、このオプションを有効にすることをお勧めします。
これには、[Agent Settings] で [Initiator] > [General] に移動して [Restart remote processes on local machine when possible] のチェックボックスをオンにします。
少ないマシンでコア数を確保する
今までと同数のコアを確保しながらマシンの台数を減らすことで、ネットワークの通信量を抑えてパフォーマンスを改善することができます。
ビルドあたりのコア数を減らす
自宅で作業する場合、ビルドで使用する Helper コア数を減らすことでパフォーマンスが向上することがあります。
Initiator Agent 対して個別に、または Coordinator からすべての Agent に対して設定できます。
-
Initiator Agent の場合: [Agent Settings] を開き、[Initiator] > [General] に移動して[Limit maximum number of cores used in build to] の数を調整します。
-
Coordinator の場合: [Coordinator Settings] を開き、[Agent Assignment] > [Advanced] に移動して数を調整します。
クラウドマシンの最適化
-
32 コアや 64 コアといったたくさんの CPU を持つ仮想マシンを Helper として使用する。Initiator としてのみ動作する仮想マシンには関係ありません。
-
Incredibuild Cloud ソリューションを使用する場合は、キャッシュの損失を回避するために、プールサイズが、タスクの高速化に使用するすべてのHelperVM を含めるのに十分な大きさであることを確認してください。Incredibuild Cloud ソリューションの 設定ページで、Total Cores Limitは、 Core数 × VM数Pool 内のに等しくなります。[Total Cores Limit] が高い値に設定されている場合は、VM は使用後にキャッシュが失われるので自宅での作業効率が低下します。この例では、160 コア (総コア数) = 32 コア X 5 VM となっています。