Amazon Web Services ブログ

Amazon FSx for OpenZFS でデータキャッシュを共有し、 Unreal Engine のパフォーマンスを向上させる

ビデオゲームの制作は、プロジェクトのさまざまな側面にわたって多様なチームが協力することを必要とする複雑なプロセスです。近年発生した世界的な出来事により、開発環境はますますハイブリッド化しています。チームメンバーは現在、仮想ワークステーションを採用するだけでなく、自宅とオフィスの両方の場所から業務を行っています。大規模で没入感のあるゲームの開発において、効率的なアセット取得とパフォーマンス最適化を確実にするために、キャッシングは不可欠です。例えば、Unreal Engine はこの目的のために派生データキャッシュ (Derived Data Cache (DDC)) と呼ばれるメカニズムを使用します。クラウドで共有 DDC を構成すると、仮想ワークステーションをより高速な応答時間とより効率的な開発プロセスで補完します。

Unreal Engine の DDC は、生成に計算コストがかかるデータのストレージメカニズムとして機能します。このデータは保持され、変更が発生しない限りは再生成の必要はありません。 DDC には、エンジンがロード時に迅速にアクセスできるテクスチャ圧縮、シェーダコンパイル、ジオメトリ変換など、処理済みの派生アセットデータを格納します。これは特に大規模なチームとプロジェクトにとって重要であり、頻繁なアセットの再コンパイルの必要性を減らし、時間と計算リソースを節約します。 DDC は単一のユーザーのローカルに置くことも、開発パイプラインの効率を向上させるためネットワーク経由でチーム全体で共有することもできます。クラウドベースの共有 DDC を設定すると、Unreal Engine プロジェクトのスケーラビリティが向上します。 AWS ストレージサービスを活用することで、どこからでもキャッシュされたデータを簡単に共有およびアクセスできます。この記事では Amazon FSx for OpenZFS での共有 DDC に焦点を当てます。

Amazon FSx for OpenZFS は、人気の高い OpenZFS ファイルシステム上に構築されたフルマネージドな共有ストレージです。これは AWS 上でトップクラスの価格 / パフォーマンスを提供する、シンプルで強力な共有 NFS ファイルストレージです。 それぞれの Amazon FSx for OpenZFS には、高速なインメモリキャッシュを備えたファイルサーバーがあります。 インメモリキャッシュに加え、Single-AZ 2 ファイルシステムは、大きな DDC を格納してより高速な応答時間を実現するために使用できる、追加の NVMe キャッシュを提供します。Amazon FSx for OpenZFS は OpenZFS ファイルシステムの ARC と L2ARC を活用して、インメモリと NVMe キャッシュからのデータアクセスを強化し、より高速なデータアクセスとパフォーマンスの向上を実現します。 Amazon FSx for OpenZFS はマルチ AZ への展開が可能ですが、代わりに Single-AZ 2 を使用して Unreal Engine の DDC のコストを最適化できます。DDC は重要ではなく簡単に再生成できるため、Single-AZ が適しています。

DDC の取得には、高いリクエストレートの時間帯とアイドル時間が長い時間帯があります。 Amazon FSx for OpenZFS にはベースライン速度を超えてバーストする機能があります。 これはネットワーク I/O およびディスク I/O 操作の両方を、 I/O クレジットのメカニズムの助けを借りて処理します。 Amazon FSx for OpenZFS のパフォーマンスの詳細は、ユーザードキュメントで確認できます。

FSx for OpenZFS Single AZ 2の展開

Amazon FSx for OpenZFS を Unreal Engine の DDC として設定する

このブログでは、クライアントとして Windows Server 2019 を実行する Amazon WorkSpaces を使用し、DDC を作るのに Lyra を使用します ( Lyra は Epic Games の作ったモジュラー式のサンプルゲームプロジェクトです ) 。

ステップ 1: Amazon FSx for OpenZFS ファイルシステムの作成と構成

AWS マネジメントコンソールで Amazon FSx に移動し、「ファイルシステムを作成」をクリックします。「ファイルシステムタイプを選択」で「 Amazon FSx for OpenZFS 」を選択します。次に「スタンダード作成」を選びます。

Amazon FSx でファイルシステムの種類を選ぶ

Amazon VPC とサブネットを選択し、デプロイタイプ「 Single-AZ 2 」でファイルシステムを作成します。このタイプは NVMe をサポートしています。 Amazon FSx for OpenZFS ファイルシステムを作成するための構成は次のとおりです。

Amazon FSx for OpenZFS の構成

ステップ 2: ネットワークアクセスの構成

Amazon FSx for OpenZFS ファイルシステムとワークステーション間の通信を許可するには、適切なネットワーク構成が不可欠です。
AWS コンソールの「ネットワークとセキュリティ」タブで、Amazon FSx for OpenZFS ファイルシステムに関連付けられた Elastic Network Interface (ENI) を見つけます。 これは、ファイルシステムのトラフィックを処理するネットワークインターフェースです。

NFS プロトコルを介した適切な通信のため、Amazon FSx for OpenZFS で必要なポートを設定する必要があります。 ファイルシステムのアクセス制御に関する詳細はこちらをご参照ください。

Amazon FSx for OpenZFS アクセスのためのプロトコルとポートのリスト

WorkSpaces のセキュリティグループからのアクセスを許可するため、Amazon FSx for OpenZFS の ENI のセキュリティグループにインバウンドルールを追加します。

Amazon FSx for OpenZFS アクセス用のセキュリティグループのインバウンドルール

ステップ 3: ワークステーションへの Amazon FSx for OpenZFS のマウント

Amazon FSx for OpenZFS ファイルシステムとワークスペース間の通信を容易にする為、設定した Amazon FSx for OpenZFS ファイルシステムをワークスペースにマウントします。 Amazon FSx for OpenZFS ファイルシステムをクリックし、「アタッチ」をクリックすると、ファイルシステムをワークステーションにマウントするための手順が表示されます。

この記事では Windows ベースの WorkSpaces を使用し、ファイルシステムを Z ドライブとしてマウントしています。 Windows クライアントへの OpenZFS ボリュームのマウントには NFS v3 プロトコルを利用します。 そのためにまず NFS クライアントをインストールする必要があります。 ワークステーションで PowerShell を管理者として開き、NFS クライアントをインストールします。

Install-WindowsFeature -Name NFS-Client

コマンドプロンプトを開き次のコマンドを実行します。ファイルシステム ID を実際のものに置き換えてください (「 Z: 」を別の使用可能なドライブレターに置き換えることもできます )。

mount \\<filesystemID>.fsx.<region>.amazonaws.com\fsx\ Z:

ステップ 4: Unreal Engine エディタの DDC に Amazon FSx for OpenZFS を設定する

ファイルシステムが準備できてワークステーションにマウントされたので、Unreal Engine エディタで Amazon FSx for OpenZFS を DDC として認識するように設定できます。 Unreal Engine エディタで編集エディタの環境設定の順に移動します。

Unreal Engine エディタの設定

Unreal Engine エディタの設定で、「 Global Shared DDC Path 」を探します。 ここに、設定した Amazon FSx for OpenZFS のマウントパスを入力します。

Unreal Engine エディタでの DDC パスの追加

ステップ 5: 構成の検証

すべてが正しく設定されていることを確認するには、DDC を再計算されたゲームデータで満たす必要があります。 ビルドのクックを開始すると、マウントされた Amazon FSx for OpenZFS のパスに DDC が入るのがわかります。 実行する必要のあるコマンドは次のとおりです。プレースホルダーをエディタとプロジェクトへの実際のパスに置き換えてください。

"<path to Editor>\UnrealEditor.exe" "<Path to project>\LyraStarterGame" -run=DerivedDataCache -fill

共有キャッシュとしてマウントされた Amazon FSx for OpenZFS に、派生データが入力されているのがわかります。

Amazon FSx for OpenZFS に入力された DDC データ

クリーンアップ

プロジェクト完了後の追加コストを避けるために、クリーンアッププロセスに取り組むことが重要です。 まず、エンジンが DDC にアクセスしないように、Unreal Engine エディタの設定から Amazon FSx for OpenZFS のパスを削除してください。 次に「 net use Z: /delete 」コマンドを実行して、Amazon FSx for OpenZFS ファイルシステムのマウントを解除します (「 Z: 」を実際に使用したドライブレターに置き換えてください)。 マウントを解除したら、AWS マネジメントコンソールからファイルシステムを削除します。AWS マネジメントコンソールで FSx に移動し、Amazon FSx for OpenZFS ファイルシステムを選択します。 「ファイルシステムの削除」を選択し、すべてのデータが削除されるようにプロンプトに従ってください。 クリーンアップする際に、ネットワーク構成に加えた変更も元に戻すことが重要です。Amazon FSx for OpenZFS の ENI のセキュリティグループからインバウンドルールを削除して、ネットワーク構成を再度保護してください。

ファイルシステムの削除

Terraform テンプレートを使用して DDC を設定したユーザーの場合は、関連インフラをデプロビジョンするために「 terraform destroy 」コマンドを実行してください。

まとめ

私たちは Unreal Engine 用の派生データキャッシュ (DDC) として、Amazon FSx for OpenZFS を設定するためのステップバイステップのガイドを提供しました。 Amazon FSx for OpenZFS は、フルマネージドでセキュアかつスケーラブルなファイルストレージを提供するため、特に共有開発環境で Unreal Engine の DDC として構成するのに最適です。 Infrastructure as Code (IaC) のアプローチを好む人の為に、セットアッププロセスを簡素化する Terraform のテンプレートを公開しています。

Terraform のテンプレートは AWS GitHub リポジトリの aws-samples/unreal-engine-ddc にあります。 このリポジトリには Amazon FSx for OpenZFS を使用した Unreal Engine の派生データキャッシュ (DDC) を設定するために必要なすべてのコードと手順が含まれています。

翻訳はソリューションアーキテクトの長田が担当しました。原文はこちらです。