システム プロファイルを表示する

Android GPU Inspector(AGI)では、システム プロファイラ UI でシステム プロファイルを表示して分析できます。システムをプロファイリングして AGI でトレース ファイルを開くと、System Profiler にプロファイリング データがタイムラインで表示されます。タイムラインの項目を展開すると、詳細情報が表示されます。

システム プロファイラの UI の主な要素は次のとおりです。

  • ツールバー

  • Timeline: トレース イベントの時間範囲を示します。

  • トラック ペイン: タイムラインに関連するプロファイリング データを表示します。

  • 詳細ペイン: 選択したアイテムの詳細を表示する展開可能なペイン。

プロファイリング データ

トレースファイルでは、プロファイリング データはトレースイベントと呼ばれるタイムスタンプ付きのイベントに保存されます。トレース イベントは、さまざまな種類のスライスとカウンタで構成されます。たとえば、CPU トレース イベントにはスケジューリング スライスが含まれ、GPU トレース イベントには GPU パフォーマンス カウンタとスレッド スライスが含まれます。

System Profiler の UI では、トラック ペインにトレース イベントが表示されます。トレース イベントは、タイムラインに基づいてトラックと呼ばれる行に表示されます。同じタイプのトラックはトラック グループに表示されます。

GPU トラック

GPU トラックには、GPU プロファイリング情報が表示されます。GPU トラックの主なタイプは次のとおりです。

  1. GPU キュー トラック: アプリケーションの GPU アクティビティ。

  2. GPU カウンタ トラック: 定期的な間隔でサンプリングされた GPU のハードウェア カウンタ。

  3. Vulkan イベント トラック: Vulkan API 関連のイベント。

  4. SurfaceFlinger トラック: グラフィック バッファがシステム内をどのように移動するかを示す SurfaceFlinger イベント。

GPU キュー トラック

GPU には、トレース中に実行されたハードウェア キューの数に基づいて、1 つ以上の GPU キュー トラックがあります。GPU キュー トラックには、アプリで使用された GPU 処理の期間とタイプを表すアクティビティ スライスが含まれています。

アクティビティ スライスには、作業を開始した Vulkan コマンド バッファ、レンダーパス、フレーム バッファなど、表示可能なメタデータが含まれています。これらのオブジェクトの Vulkan ハンドルは、[詳細] ペインに次のように表示されます。

  • VkCommandBuffer
  • VkRenderPass
  • VkFrameBuffer

これらのオブジェクトにユーザー フレンドリーな名前を付けることができます。これにより、VK_EXT_debug_utils 拡張機能の vkSetDebugUtilsObjectNameEXT 関数または VK_EXT_debug_marker 拡張機能の vkDebugMarkerSetObjectNameEXT 関数を使用して、ハンドルとともにトレースで簡単に識別できます。どちらの拡張機能も AGI によって実装され、トレース中にアプリケーションで使用できます。

GPU カウンタ トラック

GPU カウンタ トラックは、定期的な間隔でサンプリングされた GPU パフォーマンス カウンタの値をグラフ化します。グラフには、基盤となるハードウェア コンポーネントの GPU のパフォーマンスのサンプル間のばらつきが表示されます。この情報を使用して、GPU 使用率のボトルネックを特定できます。

利用可能なカウンタはハードウェア固有です。トラック名にカーソルを合わせると、各カウンタの簡単な説明が表示されます。詳細については、GPU パフォーマンス カウンタをご覧ください。

Vulkan イベント トラック

Vulkan イベント トラックには、トレース中に記録された Vulkan API イベントが表示されます。トラック イベント タイプは、主にキュー送信イベント(vkQueueSubmit 呼び出し)です。キュー送信イベントをクリックすると、AGI は呼び出しに関連付けられている GPU アクティビティ スライスをハイライト表示します。このデータを使用して、Vulkan API 呼び出しによってキューに登録された非同期処理と、CPU と GPU 間のレイテンシを検査できます。

SurfaceFlinger のトラック

SurfaceFlinger トラックには、グラフィック バッファ(アプリのスワップチェーン レンダリング ターゲット)がシステムを通過して表示されるまでのライフサイクルが表示されます。イベントはバッファごとに集計され、バッファの取得と投稿に必要なオーバーヘッドとレイテンシを簡単に追跡できます。

プロファイリング データを操作する

このセクションでは、システム プロファイラ UI でプロファイリング データを操作する方法について説明します。

固定

トラックとトラック グループは、ピンボタンを使用して固定できます。

折りたたみと展開

一部のトラックとすべてのトラック グループは折りたたむことができます。一部のトラック グループは、折りたたむと概要が表示されます。たとえば、折りたたむと、CPU トラック グループに CPU 使用率の全体像がグラフで表示されます。

ズーム

AGI は、ズームレベルに基づいてプロファイリング データを集計します。トレース ファイルを初めて開くと、システム プロファイラ UI にプロファイル全体が最大ズームアウト レベルで表示されます。プロファイルを調べるには、関心のある領域を見つけて詳細を表示します。

さまざまなトラックタイプをズームイン、ズームアウトすると、さまざまなタイプのプロファイリング データが表示されます。たとえば、CPU トラックは最初に各スレッドの時間スライスを表示し、最終的にズームインすると CPU コア使用率のデータに切り替わります。

詳細を表示

トラック ペインでアイテムを選択すると、詳細ペインに詳細なメタデータが表示されます。アイテムが選択可能な場合、そのアイテムの上にカーソルを合わせるとカーソルがポインタに変わり、アイテムを選択できるようになります。

期間の選択

期間を選択すると、異なるトラックのトレース イベントを比較できます。これを行うには、[タイミング] モードを有効にしてから、ドラッグして範囲を選択します。範囲外のものはすべて暗くなり、範囲の期間が表示されます。

M を押して、選択したスライスの期間を選択することもできます。追加のトラックをスクロールして、同じ期間のイベントを特定できます。

トラック ペイン内の項目は、WASD キーを使用するか、スクロールとパンで移動できます。システム プロファイラでは、Systrace と同じキーボード ショートカットとマウス ショートカットが使用されます。使用可能なショートカットは次のとおりです。

  • WS、または Ctrl++Ctrl+- を使用してズームします。
  • A キーと D キー、または left キーと right キーで、ビューを左右にパンします。
  • QE、または updown の矢印でトラックをスクロールします。
  • shift を押すと、ナビゲーションの移動速度が上がります。
  • Ctrl+スクロールで、選択したアイテムをズームします。
  • F: 選択したアイテムを拡大します。
  • Z+0 でリセットして完全にズームアウトします。
  • V は、トレースで VSync が利用可能な場合に、VSync のハイライト表示を切り替えます。
  • M は、期間を選択して現在の選択をマークします。
  • H または ? を押すと、キーボードとマウスのショートカット チートシートが表示されます。

ツールバーには、ナビゲーション モードを切り替えるボタンがあり、トラック ペインでアイテムをドラッグしたときに実行されるアクションを選択できます。1234 キーを押して、次のナビゲーション モードを選択することもできます。

  1. 選択: ドラッグしてアイテムをボックス選択します。
  2. パン: ドラッグしてトラックをパンまたはスクロールします。これがデフォルト モードです。
  3. ズーム: 垂直方向にドラッグしてアイテムをズームします。
  4. タイミング: ドラッグして時間範囲を選択します。

次の修飾キーを使用してナビゲーション モードを使用することもできます。

  • Shift+ドラッグしてアイテムをボックス選択します。
  • Space+ をドラッグしてパンとスクロールを行います。
  • Ctrl+スクロールしてズームします。
  • Ctrl+をドラッグして期間を選択します。