このページでは、トレースを取得して Perfetto UI で可視化する方法について説明します。
トレースを取得する
プロファイルが記録されると、トレースがデバイスに保存されます。これらのトレースを分析するには、まずトレースを取得する必要があります。
トレースの場所は ProfilingResult.getResultFilePath()
によって提供されます。トレースの場所を取得する方法については、プロファイルをキャプチャする方法をご覧ください。トレースの場所がわかったら、トレースをサーバーにアップロードできます。
ローカル テスト: ADB を使用してトレースを取得する
adb
を使用してトレースを取得すると、パフォーマンスの確認やローカルでのデバッグに役立ちます。
編集されたトレースはデバイスのファイルに保存されます。保存されたプロファイルの一般的なパスは次のとおりです。
/data/user/0/<app>/files/profiling/profile<tag><datetime>.perfetto-trace
ここで
<app>
はアプリ名です。<datetime>
は、トレースが取得された日時です。<tag>
は、setTag
を使用して構成されたユーザー提供のタグです。
編集されていないトレースが有効になっていて保存されている場合は、次の adb
コマンドを使用してデバイスからプルします。
adb pull /data/misc/perfetto-traces/profiling/<trace-name>.perfetto-trace-unredacted
トレースを可視化する
トレースをパソコンに取得したら、Perfetto UI で表示できます。

編集されたトレースでは、OtherProcesses
セクションに他のプロセスのすべての CPU アクティビティがまとめられます。プロセスを組み合わせることで、他のプロセスが行っていた処理を非公開に保つことができます。
ただし、この CPU アクティビティを組み合わせたグラフを見ることで、録画中にシステムが過負荷状態になったかどうかを確認できます。システム アクティビティを確認すると、アプリが遅かった原因が内部的な問題なのか、システム全般が遅かったのかを把握できます。
次の図は、トレースに表示される主な部分をハイライトして簡単に説明しています。

- CPU リスト: デバイスで使用可能なすべてのプロセッサが表示されます。
- CPU タスク: 各 CPU が実行していたスレッドを表示します。
- その他のプロセスのビュー: その他のプロセスで使用されている CPU リソースを表示します。
- Process View: アプリのプロセスを表示します。
- Threads View: プロセス内で実行されているスレッドと、そのスレッドの状態(実行可能(R)、実行中(R)、スリープ(S)、割り込み不可スリープ(D))を表示します。これらは Linux プロセス状態に直接マッピングされます。
- トレース スライス: このセクションには、アプリ デベロッパーまたはフレームワークによって追加されたトレース アノテーションが表示されます。これらのアノテーションは、
Trace.beginSection
とTrace.endSection
の間の計算を対象としています。
Perfetto UI とトレースの可視化について詳しくは、Perfetto のドキュメントをご覧ください。