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

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

System Profiler UI の主な要素は次のとおりです。

  • ツールバー

  • Timeline: トレース イベントのタイムスパンを示します。

  • [Track] ペイン: タイムラインに関連したプロファイリング データが表示されます。

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

データのプロファイリング

トレース ファイルでは、プロファイリング データはトレース イベントと呼ばれるタイムスタンプの付いたイベントに保存されます。トレース イベントは、さまざまなタイプのスライスとカウンタで構成されます。たとえば、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 パフォーマンス カウンタをご覧ください。

Vulkan イベント トラック

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

SurfaceFlinger のトラック

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

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

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

固定

トラックまたはトラック グループを固定するには、それぞれの固定ボタンを使用します。

折りたたむ、展開する

一部のトラックとすべてのトラック グループは折りたたみ可能です。一部のトラック グループでは、折りたたむと概要が表示されます。たとえば、CPU トラックグループを閉じると、全体的な CPU 使用率がグラフに表示されます。

Zoom

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

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

詳細を表示

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

期間を選択します

期間を選択すると、異なるトラックのトレース イベントを比較できます。そのためには、[タイミング] モードを有効にし、ドラッグして範囲を選択します。範囲外はすべてグレー表示され、期間の長さが表示されます。

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

トラックペイン内のアイテムを移動するには、WASD キーを使用するか、スクロールして移動します。System Profiler は、Systrace と同じキーボードとマウスのショートカットを使用します。 使用可能なショートカットは次のとおりです。

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

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

  1. 選択: ドラッグしてアイテムをボックス選択します。
  2. パン: ドラッグでトラックのパンやスクロールができます。これがデフォルト モードです。
  3. ズーム: アイテムを縦方向にドラッグしてズームします。
  4. タイミング: ドラッグして期間を選択します。

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

  • Shift+ドラッグして選択したアイテムをボックス表示します。
  • Space+ドラッグするとパンやスクロールができます。
  • Ctrl+スクロールしてズーム。
  • Ctrl+ドラッグして期間を選択します。