プロファイリング データを取得して分析する

このページでは、トレースを取得して 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 で表示できます。

秘匿化されたトレースの例
図 1.: 秘匿化されたトレースの例。

編集されたトレースでは、OtherProcesses セクションに他のプロセスのすべての CPU アクティビティがまとめられます。プロセスを組み合わせることで、他のプロセスが行っていた処理を非公開に保つことができます。

ただし、この CPU アクティビティを組み合わせたグラフを見ることで、録画中にシステムが過負荷状態になったかどうかを確認できます。システム アクティビティを確認すると、アプリが遅かった原因が内部的な問題なのか、システム全般が遅かったのかを把握できます。

次の図は、トレースに表示される主な部分をハイライトして簡単に説明しています。

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

Perfetto UI とトレースの可視化について詳しくは、Perfetto のドキュメントをご覧ください。