Unity* でビルドしたゲームのプロファイル

インテル® VTune™ プロファイラーゲーム

この記事は、インテル® デベロッパー・ゾーンに公開されている「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* エディターでゲームをビルドする

  1. Unity* エディターでゲームを開きます。

    Unity* エディターでゲームを開く

  2. ゲームをビルドします。[Copy PDB Files] オプションと [Development Build] オプションを選択します。

    ゲームをビルドする

インテル® VTune™ プロファイラーを設定してホットスポット解析を実行する

  1. インテル® VTune™ プロファイラーを起動して、[Welcome (ようこそ)] ページで [New Project (新規プロジェクト)] をクリックします。
  2. プロジェクトの名前と場所を指定します。
  3. [Create Project (プロジェクトの作成)] をクリックします。
  4. [Configure Analysis (解析の設定)] ウィンドウで以下のオプションを設定します。
    • [WHERE (どこを)] ペインでは、[Local Host (ローカルホスト)] ターゲット・システム・タイプを選択します。
    • [Application (アプリケーション)] テキストボックスで、ゲームの実行ファイルのパスを指定します。
    • [Application parameters (アプリケーションのパラメーター)] フィールドに、「-profiler-enable-vtune-markers」を入力します。

    インテル® VTune™ プロファイラーでゲームのプロファイルを設定する

  5. (オプション) ゲームの起動/ロード段階のプロファイルをスキップする場合、以下のオプションを設定します。
    • [WHAT (何を)] ペインで [Advanced (詳細)] セクションを開きます。
    • [Automatically resume collection after (指定時間後に収集を自動再開)] にインテル® VTune™ プロファイラーがプロファイルを開始する前に待機する秒数を設定します。

    [Advanced (詳細)] オプションを設定する

  6. [HOW (どのように)] ペインで [Hotspots (ホットスポット)] 解析タイプを選択し、ユーザーモード・サンプリングをオンにします。
  7. [Start (開始)] をクリックして、解析を開始します。

ホットスポット解析を設定する

注:
ステップ 5 で [Automatically resume collection after (指定時間後に収集を再開)] オプションを設定した場合は、[Start Paused (ポーズして開始)] ボタン () のみ利用できます。

結果を確認する

データ収集を約 30 秒間実行したら、[Stop (停止)] をクリックしてゲームを終了し、インテル® VTune™ プロファイラーの結果をファイナライズします。インテル® VTune™ プロファイラーはデバッグシンボルを検出して解決するため、この処理には数分かかることがあります。

結果がファイナライズされると、[Summary (サマリー)] タブに以下の情報が表示されます。

  • Elapsed time (経過時間)
  • Top hotspots (上位のホットスポット)
  • Top Unity tasks (上位の Unity* タスク)
  • その他の情報とガイダンス

ホットスポット解析の [Summary (サマリー)] タブ

[Frame Rate Histogram (フレームレートのヒストグラム)] に、収集中に実行されたフレーム数がフレームレート別に表示されます。

[Frame Rate Histogram (フレームレートのヒストグラム)]

この例では、ほとんどのフレームが 13~14 フレーム/秒 (FPS) で実行されています。これは、推奨される最低フレームレートの 30FPS よりはるかに遅いです。

[Bottom-up (ボトムアップ)] ウィンドウに切り替えると、関数のリストが表示されます。デフォルトでは、CPU 時間の降順でソートされます。

グループ化を [Function/Call Stack (関数/コールスタック)] から [Task Domain/Task Type/Function/Call Stack (タスクドメイン/タスクタイプ/関数/コールスタック)] に変更し、インテル® VTune™ プロファイラーのインストルメンテーションおよびトレーシング・テクノロジー (ITT) API で識別された Unity* タスクに注目します。

Unity* 関数が表示された [Bottom-up (ボトムアップ)] タブ

収集はポーズ状態で開始され、これはタイムライン・ビューでも確認できます。

収集が開始された 60 秒からの時間帯を選択し、ズームインします。

タイムライン・ビュー

この例では、フレームレートが低く、かなりのスピン時間があります。一般に、ゲームの CPU 利用率は高くあるべきではありません。ワーカースレッドの並列性が低いと、オーバーヘッドが大きくなりすぎる可能性があります。

RunThreadWrapper スレッドの 1 つで、CPU 時間のすべてがスピンまたはオーバーヘッドになっています。スレッドの数を減らすことで、これを改善できます。

RunThreadWrapper スレッド

ホットスポットの詳細は、[Flame Graph (フレームグラフ)] ビューを開いて、トップダウンのコールスタックのグラフィック表現で確認できます。

[Flame Graph (フレームグラフ)] ビュー

関連情報

iSUS ではインテル® VTune™ プロファイラーの日本語化パッケージを提供しています。この機会にぜひご利用ください。

インテル® VTune™ プロファイラー・パフォーマンス解析クックブックのトップに戻る


製品および性能に関する情報

1 性能は、使用状況、構成、その他の要因によって異なります。詳細については、http://www.intel.com/PerformanceIndex/ (英語) を参照してください。

タイトルとURLをコピーしました