この記事は、インテル® デベロッパー・ゾーンに公開されている「Intel® VTune™ Profiler Performance Analysis Cookbook」の「Profiling Games built with Unity*」の日本語参考訳です。原文は更新される可能性があります。原文と翻訳文の内容が異なる場合は原文を優先してください。
バージョン: 2023
更新日: 2022年12月16日
このレシピでは、Unity* ゲームエンジンでビルドしたゲームをプロファイルする方法を紹介します。Unity* 環境でインテル® VTune™ プロファイラーを実行し、ゲームをプロファイルします。
多くの場合、ゲームのパフォーマンスに影響を与える最も重要な要因は、フレームレートです。フレームレートとは、GPU がゲーム・グラフィックスをレンダリングする速度のことです。しかし、CPU もまた、以下のような要因により、ゲームのパフォーマンスに影響を与えることがあります。
- GPU へのデータ転送が遅い
- コストがかかるまたは不要な演算
- 並列性の欠如
Unity* エンジンを使用するゲームでは、最適化の多くは Unity* エディターで行われます。そのため、Unity* で定義されたタスクのパフォーマンスを理解することが重要です。Unity* 2019.2 以降では、インテル® VTune™ プロファイラーのインストルメンテーションおよびトレーシング・テクノロジー (ITT) API (英語) が Unity* エディターに組み込まれています。このレシピでは、インテル® VTune™ プロファイラーを実行して、Unity* エディターで Unity* タスクに注目する方法を説明します。
コンテンツ・エキスパート: Jennifer Dimatteo (英語)
使用するもの
以下は、このパフォーマンス解析シナリオで使用するハードウェアとソフトウェアのリストです。
- アプリケーション: Unity* 2022.1.16。このバージョンの Unity* のサンプルゲームでは、無償のアセット 3D Game Kit (英語) を使用しています。
- ツール: インテル® VTune™ プロファイラー 2022 – ホットスポット解析 (ユーザーモード・サンプリングを使用)。
注:- バージョン 2020 から、インテル® VTune™ Amplifier の名称がインテル® VTune™ プロファイラーに変わりました。
- インテル® VTune™ プロファイラー・パフォーマンス解析クックブックの大部分のレシピは、異なるバージョンのインテル® VTune™ プロファイラーにも適用できます。バージョンにより、調整が必要になる場合があります。
- 最新バージョンのインテル® VTune™ プロファイラーは以下から入手できます。
- CPU/GPU: 統合 GPU 搭載インテル® Core™ i7-8665U CPU @ 1.90GHz
- オペレーティング・システム: Windows* 10 Enterprise (Pro 版との違い)
Unity* エディターでゲームをビルドする
- Unity* エディターでゲームを開きます。
- ゲームをビルドします。[Copy PDB Files] オプションと [Development Build] オプションを選択します。
インテル® VTune™ プロファイラーを設定してホットスポット解析を実行する
- インテル® VTune™ プロファイラーを起動して、[Welcome (ようこそ)] ページで [New Project (新規プロジェクト)] をクリックします。
- プロジェクトの名前と場所を指定します。
- [Create Project (プロジェクトの作成)] をクリックします。
- [Configure Analysis (解析の設定)] ウィンドウで以下のオプションを設定します。
- [WHERE (どこを)] ペインでは、[Local Host (ローカルホスト)] ターゲット・システム・タイプを選択します。
- [Application (アプリケーション)] テキストボックスで、ゲームの実行ファイルのパスを指定します。
- [Application parameters (アプリケーションのパラメーター)] フィールドに、「-profiler-enable-vtune-markers」を入力します。
- (オプション) ゲームの起動/ロード段階のプロファイルをスキップする場合、以下のオプションを設定します。
- [WHAT (何を)] ペインで [Advanced (詳細)] セクションを開きます。
- [Automatically resume collection after (指定時間後に収集を自動再開)] にインテル® VTune™ プロファイラーがプロファイルを開始する前に待機する秒数を設定します。
- [HOW (どのように)] ペインで [Hotspots (ホットスポット)] 解析タイプを選択し、ユーザーモード・サンプリングをオンにします。
- [Start (開始)] をクリックして、解析を開始します。
注:
ステップ 5 で [Automatically resume collection after (指定時間後に収集を再開)] オプションを設定した場合は、[Start Paused (ポーズして開始)] ボタン () のみ利用できます。
結果を確認する
データ収集を約 30 秒間実行したら、[Stop (停止)] をクリックしてゲームを終了し、インテル® VTune™ プロファイラーの結果をファイナライズします。インテル® VTune™ プロファイラーはデバッグシンボルを検出して解決するため、この処理には数分かかることがあります。
結果がファイナライズされると、[Summary (サマリー)] タブに以下の情報が表示されます。
- Elapsed time (経過時間)
- Top hotspots (上位のホットスポット)
- Top Unity tasks (上位の Unity* タスク)
- その他の情報とガイダンス
[Frame Rate Histogram (フレームレートのヒストグラム)] に、収集中に実行されたフレーム数がフレームレート別に表示されます。
この例では、ほとんどのフレームが 13~14 フレーム/秒 (FPS) で実行されています。これは、推奨される最低フレームレートの 30FPS よりはるかに遅いです。
[Bottom-up (ボトムアップ)] ウィンドウに切り替えると、関数のリストが表示されます。デフォルトでは、CPU 時間の降順でソートされます。
グループ化を [Function/Call Stack (関数/コールスタック)] から [Task Domain/Task Type/Function/Call Stack (タスクドメイン/タスクタイプ/関数/コールスタック)] に変更し、インテル® VTune™ プロファイラーのインストルメンテーションおよびトレーシング・テクノロジー (ITT) API で識別された Unity* タスクに注目します。
収集はポーズ状態で開始され、これはタイムライン・ビューでも確認できます。
収集が開始された 60 秒からの時間帯を選択し、ズームインします。
この例では、フレームレートが低く、かなりのスピン時間があります。一般に、ゲームの CPU 利用率は高くあるべきではありません。ワーカースレッドの並列性が低いと、オーバーヘッドが大きくなりすぎる可能性があります。
RunThreadWrapper スレッドの 1 つで、CPU 時間のすべてがスピンまたはオーバーヘッドになっています。スレッドの数を減らすことで、これを改善できます。
ホットスポットの詳細は、[Flame Graph (フレームグラフ)] ビューを開いて、トップダウンのコールスタックのグラフィック表現で確認できます。
関連情報
- フレームグラフを使用してホットなコードパスを解析する (英語)
- CPU 利用率の問題のホットスポット解析 (英語)
- インテル® VTune™ プロファイラーで CPU パフォーマンスを向上 (英語)
- インテルのゲーム・チューニング・ツール
iSUS ではインテル® VTune™ プロファイラーの日本語化パッケージを提供しています。この機会にぜひご利用ください。
インテル® VTune™ プロファイラー・パフォーマンス解析クックブックのトップに戻る
製品および性能に関する情報
1 性能は、使用状況、構成、その他の要因によって異なります。詳細については、http://www.intel.com/PerformanceIndex/ (英語) を参照してください。