開発
開発
プラットフォームを選択

Meta Quest開発者ハブでPerfettoトレースを取る方法

更新日時: 2025/09/03
Perfettoは、エンジンに依存しない強力なパフォーマンストレーシングツールであり、ビルトインのエンジンプロファイラーに比べていくつもの優れた点があります。Perfettoは、スケジューリングアクティビティなどのシステムイベントに関する情報を提供するほか、PerfettoのTrackEvent計測やATraceと統合するアプリの計測を行います。
PerfettoはSystraceに代わるもので、より広範囲なイベント、より長いトレースをサポートしており、カウンターのサポートもあります。
Perfettoはスタンドアローンツールとして使えますが、Meta Quest開発者ハブ(MQDH)から直接使うこともできます。これは右上のパフォーマンスアナライザー上にあり、[Trace Analysis by Perfetto (Perfettoによるトレース分析)]と表示されています。デバイスマネージャ[Device Actions (デバイスアクション)]からもアクセスできます。
開発中は、複雑なワークロードの実行にかかる時間を知る必要がある場合、パフォーマンスのホットスポットを見つける場合、またはコールスタックを調べる必要がある場合、いつでもPerfettoを使うことをおすすめします。例えば、グラフィックエンジンの内部アップデート内の多くのイベントをトラッキングするPerfettoタイムラインを作成し、そのすべてをフレームごとに1つのタイムラインに集約することができます。Perfettoを利用すれば、フレームグラフを描画してサンプリングされたスタックトレースを可視化するために、コールスタックサンプリングを実行することもできます。

ユースケース

Perfettoを利用すると、アプリのパフォーマンスプロフィールと同じタイムライン上で、システムプロセスやほかの指標を幅広く確認できます。また、OVRPluginの関数呼び出しを直接OSにマッピングしたり、さまざまなGPUカウンターや指標に関するインサイトを確認したり、パフォーマンス問題が発生しやすい箇所をより的確に関連付けることができます。
PerfettoのMQDH統合により、一般およびカスタムのPerfettoトレースを設定してキャプチャすることができます。キャプチャしたトレースは、新しいブラウザーウィンドウのPerfettoサイトで開くことができます。トレースはヘッドセットにも保存され、ダウンロードすることができます。

要件

Perfetto統合を使うためにMQDHをインストールするには、Meta Quest開発者ハブの設定手順に従ってください。
開発パスによっては、Perfettoにいくつかの設定が必要な場合があります。UnityやUnreal Engineなどの商用ゲームエンジンはATrace計測のみを出力するため、[ATrace Categories (ATraceカテゴリ)][ATrace Apps (ATraceアプリ)]の設定を行ってください。設定するには、[Trace Analysis by Perfetto (Perfettoによるトレース分析)]の横にある...をクリックし、[Perfetto settings (Perfettoの設定)]を選択します。
  • ATrace Categories (ATraceカテゴリ) - トラッキングするATraceカテゴリのリスト。これらは多くのアプリに含まれると思われるイベントです。
  • ATrace Apps (ATraceアプリ) - トラッキングするATraceアプリのリスト。これらはイベントがオンになっているアプリです。
ATRACE APPS FIELD
UnityとUnreal Engineを使う開発者や、ATraceイベントを使うそれ以外の開発者は、ATraceアプリフィールドにそれぞれのパッケージ名を入力して、Perfettoから詳細情報を取得する必要があります。通常、すべての開発者がこのフィールドに入力するよう推奨されています。

設定

その他の必要な設定は、... > [Perfetto settings (Perfettoの設定)]にある、Perfettoの設定ページに含まれています。
Perfetto SettingsPerfetto Settings
設定には以下が含まれます。
  • Perfetto Settings Preference (Perfettoの設定) - これを[Custom (カスタム)]に設定すると、カスタムのPerfetto TraceConfigをJSON形式で指定できます。残りの設定は[General (一般)]に適用されます。
  • Auto open trace (トレースを自動で開く) - 記録が完了したトレースを、新しいブラウザーで自動的に開きます。
  • Trace duration (トレース期間) - 無制限の長さを指定することも、期間をミリ秒(ms)単位で指定することもできます。
  • Trace buffer size (トレースバッファサイズ) - トレースバッファのサイズを指定できます。
  • GPU Trace buffer size (GPUトレースバッファのサイズ) - GPUトレースバッファのサイズを指定できます。
  • CPU Scheduling (CPUスケジュール) - CPUスケジュールイベントの詳細なトラッキングを有効にします。
  • ATrace Categories (ATraceカテゴリ) - トラッキングするATraceカテゴリのコンマ区切りリスト。これらは多くのアプリに含まれると思われるイベントです。
  • ATrace Apps (ATraceアプリ) - トラッキングするATraceアプリのリスト。これらはイベントがオンになっているアプリです。すべてのATraceアプリをトラッキングすることも、トラック対象のアプリをコンマ区切りリストで指定することもできます。
  • TrackEvent - 実行中のアプリケーションのTrackEventデータを記録します。TrackEventデータの詳細については、Perfettoトラックイベントのドキュメントをご覧ください。
  • XR Runtime Metrics (XRランタイム指標) - XRランタイム指標の記録を有効にします。
  • GPU Metrics (GPU指標) - GPU指標を提供します。
  • GPU Render Stage Trace (GPUレンダリングステージトレース) - GPUレンダリングステージトレースをトラッキングします。
    • Enable high precision GPU render stage tracing (高精度GPUレンダリングステージトレースを有効にする) - すべてのサーフェスレンダリング作業についての追加の詳細情報を指定します。
  • TrackEvent Config (TrackEvent設定) - 記録するTrackEventデータ。すべてのフィールドはコンマで区切ります。TrackEvent設定の詳細については、Perfettoトラックイベントのドキュメントをご覧ください。
    • Process Name Filter (プロセス名フィルター) - この名前と一致するプロセスからのトラックイベントのみをフィルタリングします。
    • Process Name Filter Regex (プロセス名フィルター正規表現) - この正規表現と一致するプロセスからのトラックイベントのみをフィルタリングします。
    • Disabled Categories (無効なカテゴリ) - トラッキングが無効になっているイベントカテゴリ。
    • Enabled Categories (有効なカテゴリ) - トラッキングが有効になっているイベントカテゴリ。空の場合はすべてのカテゴリが有効になります。
    • Disabled Tags (無効なタグ) - トラッキングが無効になっているタグ。
    • Enabled Tags (有効なタグ) - トラッキングが有効になっているタグ。空の場合はすべてのタグが有効になります。
  • Callstack Sampling Config (コールスタックサンプリング設定) - どのアプリをサンプリングするか、サンプリングをいつどんな頻度で起動するかを制御します。詳しくは、コールスタックサンプリングをご覧ください。
Potential data loss during trace recording
トレース記録中に、データが失われる場合があります。これは、設定されたトレースバッファサイズが、記録期間中のイベントを記録するのに不十分な場合に発生します。予想される作業負荷を処理するのに十分なバッファサイズを選択し、潜在的なデータ損失を最小限に抑えるようトレース期間を制限してください。

ワークフロー

コードのマークアップとビルド

この説明では、Unityのサンプルアプリが使われていますが、Unrealエンジンアプリも実質的に同じ動作をします。ここで使われているプロジェクトはこちらアセットストリーミングサンプルです。これは、プレイヤーの位置情報など考えられるあらゆる要素に応じてジオメトリとオブジェクトの入出力をストリーミングすることにより、メモリーの圧迫度を常にチェックしながら、構築する世界をさらに広げていく方法について示します。
Perfettoトレースには、UnityとUnrealの両エンジン用のビルトインのプロファイリングマーカーが含まれていますが、カスタム関数も組み込める、UnityUnrealエンジンそれぞれの市販の計測APIも提供されています。例えば、ストリーミングサンプルの場合、LODManager.csスクリプトでLODManagerのアップデートブロックがどのように公開されていたかを示す以下のスクリーンショットをご覧ください。
LODManager's update block
これは、最終的なPerfettoトレースには以下のように表示されます。
Trace results
このスクリーンショットでは、カスタムマーカー文字列IDが検索語として使われ、一致したスレッドがハイライトされています(左側に黄色で示されています)。また、トレースの先頭でインスタンスごとのマーカーがタイムラインに追加されているため、トレースの中で計測対象のブロックを容易に見つけることができます。
すべてのホットループ周辺のマーカーやその他の気になる箇所を含めた後、開発ビルド設定を使ってプロジェクトをビルドすれば、実行時に計測が実施されるようになります。

Perfettoでビルドとトレースを実行する

ビルドを実行し、ヘッドセットをUSB経由でホストマシンに接続すると、ヘッドセットがMQDHの[Performance Analyzer (パフォーマンスアナライザー)]のセクションにリスト表示されます。そうなれば、トレースを開始できます。 Meta Quest headset indicator in Performance Analyzer
トレースを開始する前に実行すべき重要な最終ステップとして、設定を確認し、アプリからのATraceイベントが考慮されるようにします。デフォルトの場合、Perfettoが監視対象とする独自のイベントタイプであるTrackEventが、トレースSDKに含まれます。利用可能な多くのエンジンには、このタイプの計測が含まれておらず、含まれるのはATrace (Androidトレース形式)という別の計測タイプです。システム規模であらゆる計測を有効にするとオーバーヘッドがかなり大きくなってしまうため、マーカーをトレースに含める場合にのみ有効にするようにしてください。ATraceを含めるのは簡単です。MQDHで[Perfetto Settings(Perfetto設定)]に移動し、[ATrace Apps(ATraceアプリ)]のセクションを見つけ、バンドルIDを含めるだけです。
保存した後、[Record(記録)]をクリックすると、トレースが開始されます。対象となるイベントを含めるために必要なだけの長さを記録してから、[Stop (停止)]ボタンをクリックします。完了したら、デフォルトのブラウザーにトレースが自動的に表示されます。

GPUレンダリングステージトレース

アプリのGPUレンダリングステージトレースを記録するには、以下の手順に従います。
  1. [Perfetto Settings (Perfetto設定)]で、[GPU Render Stage Trace (GPUレンダリングステージトレース)][Enable high precision GPU render stage tracing (高精度GPUレンダリングステージトレースを有効にする)]を有効にします。
  2. メニューから、[GPU traces (GPUトレース)] > [Enable (有効にする)]の順に選択します。
    Perfetto Settings
  3. アプリを実行します。
  4. [Record (記録)]をクリックするとトレースが開始されます。
    Perfetto Settings
    結果には、アプリのGPUトレースが表示されます。
トレースを記録してそれのトレースを表示したら、少し時間を取ってナビゲーションコントロールについて確認してください。最初は難しそうに思えるかもしれませんが、すぐに慣れるでしょう。忘れてはならない主な入力手段は、WASDとスクロールホイールです。基本的なコントロールのマッピングは、以下のようになっています。
  • W - ズームイン(スクラブウィンドウのフォーカスを狭める)
  • A - 左にスクラブ
  • S - ズームアウト(スクラブウィンドウのフォーカスを広げる)
  • D - 右にスクラブ
  • マウスのスクロールホイールを上下に動かす - トレースを上下にスクロールする
Important areas of trace
以下のスクリーンショットは、前に説明したPerfettoの主なメリットの1つを示しています。つまり、同じ1つのタイムライン上で多くの異なるデータソースを得ることができるということです。それには、CPU / GPUの使用率、気になるシステム指標、アプリ内マーカーなど、あらゆる情報が含まれます。このようにして、ボトルネックやパフォーマンス上の問題について相関関係や因果関係を幅広く把握できるようになります。トレースにより、CPUやGPU上で欠落フレームがある場合にそれを簡単に確認できるようになり、さらにどこに問題があるのかを調べたり、考えられる原因を大まかに把握して、SimpleperfやRenderDoc Meta Forkなどのほかのツールでさらに詳しく調べたりすることができます。 Other important areas of trace

トレースの保存と読み込み

MQDHでPerfettoを使うと、すべてのトレースは[Settings (設定)] > [Recorded Traces (記録されたトレース)]セクションに自動的に保存されますが、それらすべてはデフォルトのファイル名でラベルが付けられます。トレースのデフォルトのファイル名は、適切なコンテキストで見直すことができるような名前にできるだけ早く変更してください。 Recorded Traces
または、ブラウザーウィンドウのダウンロードボタンをクリックして、同様に名前を変更することもできます。
過去のキャプチャ結果を再び読み込むには、ダウンロードしたファイルを開くか、MQDHの[Recorded Traces (記録されたトレース)]でトレースを選択してデフォルトブラウザーで開いてください。Perfettoのウェブサイトでトレースを開くこともできます。

コールスタックサンプリング

v51以降のPerfettoには、コールスタックサンプリングツールtraced_perfのサポートが追加されています。traced_perfは、アプリのコールスタックを定期的にサンプリングし、Perfettoトレースに記録します。コールスタックサンプルを使うことにより、最も多くのcpu時間を消費している関数を特定できます。
LinuxのPerfやAndroidのSimplePerfなど、ほかのサンプリングプロファイラーによるコールスタックサンプリングとよく似ているPerfettoのコールスタックサンプリングですが、Perfettoのタイムラインで各サンプルを見ることができるという利点があります。これを基に特定の期間のフレームグラフを生成することができ、各サンプルに関する情報を個別に表示することができます。

要件

Perfettoトレースは、Meta Quest開発者ハブからのコールスタックサンプリングとともに記録することができます。コールスタックサンプリングを有効にするには、[Performance Analyzer (パフォーマンスアナライザー)]タブの[Perfetto settings (Perfettoの設定)]ダイアログに移動します。[...]ボタンを選択して、[Perfetto Settings (Perfettoの設定)]にアクセスします。
下端までスクロールし、[Callstack Sampling (コールスタックサンプリング)]セクションを見つけます。適切に設定します。
  • Enabled App(s) (有効なアプリ) - アプリのパッケージ名。
  • Folder(s) that contains symbols files (シンボルファイルを含むフォルダー) - PC上にあるシンボルファイルを含むフォルダーの名前のコンマ区切りリスト。この設定は、シンボルが組み込まれていない配布アプリをトレースする場合に便利です。この場合、自分のPCでシンボルファイルを用意し、そのフォルダーの名前をここに指定します。
  • Choose upon what event to trigger callstack sampling (コールスタックサンプリングをトリガーするイベントを選択) - これで、コールスタックサンプリングのタイミングをコントロールします。PerfEvents.CounterかPerfEvents.Tracepointのどちらかを選ぶことができます。PerfettoのPerfEventConfigのドキュメントをご覧ください。
  • Choose how often to do a callstack sampling and set proper value (コールスタックサンプリングの頻度の選択と適切な値の設定) - これで、コールスタックサンプリングの頻度をコントロールします。[Frequency (頻度)]または[Period (期間)]のどちらかを選びます。
Callstack Sampling
設定完了してアプリが起動したら、Perfettoトレースを実行し[Record (記録)]ボタンを押すことによって、サンプルを取得できます。

コールスタックを見る

記録されたサンプルは、プロセス名の下の[Callstacks (コールスタック)]トラックにあります。
Callstacks Track
各サンプルは、トラック上でダイヤモンドによって表されています。サンプルを個別に選択するか、またはドラッグして選択することにより、フレームグラフを生成することができます。
Perfetto flamegraph generated from selected callstack samples showing function call hierarchy.
フレームグラフは、SimplePerfのようなサンプリングプロファイラーで使われるものとよく似ています。

Unrealアプリのサンプリング

Unrealアプリのサンプリングをする場合は、コールスタックサンプルでPerfettoトレースを取る際にDevelopmentのビルド設定を使用して、シンボルがビルドから削除されないようにしてください。
Shippingのビルド設定や、ビルドからシンボルが削除されるその他のビルド設定では、ビルド出力からシンボルファイルが収集され、Perfetto設定で使用できるようになります。
Unrealアプリの5秒のトレースの例です。
Unreal Trace
各フレームの間に起きていることをより詳しく表示できるようにUGameEngine::Tickが選ばれました。続けてUGameEngine::Tickの下にある呼び出しを選択して、レンダリングやアクターの更新などのさまざまなサブシステムにどれほどの時間が費やされているかを確認することができます。
Perfettoを使う場合に、次のようなツールも使用できます。
  • GPUプロファイリングにRenderDoc Meta Forkを使用する - RenderDocグラフィックデバッグツールのフォーク。Meta QuestのSnapdragon 835チップ、Meta Quest 2のSnapdragon XR2チップ、Meta Quest ProのSnapdragon XR2+チップからの低レベルGPUプロファイリングデータ(そのタイルレンダラーからの情報)へのアクセスが提供されるようになりました。
  • CPUプロファイリングにSimpleperfを使用する - コマンドラインAndroid開発ツール。定期的にアプリケーションをサンプリングし、CPUを消費する箇所や、パフォーマンスに関連したハードウェアイベントの発生箇所を特定します。
  • Unreal Insightsスタートガイド - Unreal Engineのプロファイリングと分析のためのツール。これを利用すると、ボトルネック、パフォーマンスの急変、スレッドパターンなどをすばやく見つけることができます。

参考情報

ナビゲーションロゴ
日本語
© 2026 Meta