Android GPU Inspector(AGI)では、System Profiler UI でシステム プロファイルを表示して分析できます。システムをプロファイリングして AGI でトレース ファイルを開くと、プロファイリング データがタイムラインに展開可能な項目とともに表示され、詳細が表示されます。
System Profiler UI の主な要素は次のとおりです。
ツールバー
トラック フィルタ テキスト ボックス: [track] ペインに表示されるトラックをフィルタリングします。
情報ボタン(i): トレースとデバイスのメタデータを表示します。
ヘルプボタン(?): キーボード ショートカットとマウス ショートカットを表示します。
Timeline: トレース イベントのタイムスパンを示します。
[Track] ペイン: タイムラインに関連したプロファイリング データが表示されます。
[詳細] ペイン: 選択したアイテムの詳細を表示する展開可能なペイン。
データのプロファイリング
トレース ファイルでは、プロファイリング データはトレース イベントと呼ばれるタイムスタンプの付いたイベントに保存されます。トレース イベントは、さまざまなタイプのスライスとカウンタで構成されます。たとえば、CPU トレース イベントにはスケジュール設定スライスが含まれますが、GPU トレース イベントには GPU パフォーマンス カウンタとスレッド スライスが含まれます。
System Profiler UI では、トラックペインに、タイムラインに基づくトラックという行に表示されるトレース イベントが表示されます。トラック グループには、同じタイプのトラックが表示されます。
GPU トラック
GPU トラックには、GPU プロファイリング情報が表示されます。主な GPU トラックタイプは次のとおりです。
GPU キュートラック: アプリケーションの GPU アクティビティ。
GPU カウンタ トラック: 一定の間隔でサンプリングされる GPU のハードウェア カウンタ。
Vulkan イベント トラック: Vulkan API 関連のイベント。
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 と同じキーボードとマウスのショートカットを使用します。
使用可能なショートカットは次のとおりです。
- ズームするには
W
とS
、またはCtrl++
とCtrl+-
。 A
とD
、またはleft
とright
の矢印を使用すると、ビューの左右にパンできます。Q
とE
、またはup
とdown
の矢印を使用すると、トラックをスクロールできます。shift
を長押しすると、ナビゲーションの移動速度が上がります。Ctrl
+ スクロールすると、選択したアイテムにズームします。F
で、選択したアイテムにズームします。Z
+0
でリセットし、完全にズームアウトします。V
は、VSync がトレースで利用可能な場合、ハイライト表示の切り替えを行います。M
は、期間を選択して現在の選択をマークします。H
または?
: キーボードとマウス ショートカットのクイック リファレンスを表示します。
ナビゲーション モード
ツールバーには、ナビゲーション モードを切り替えるボタンがあり、トラックペインでアイテムをドラッグしたときに実行されるアクションを選択できます。また、1
、2
、3
、4
キーを押すと、次のナビゲーション モードを選択できます。
- 選択: ドラッグしてアイテムをボックス選択します。
- パン: ドラッグでトラックのパンやスクロールができます。これがデフォルト モードです。
- ズーム: アイテムを縦方向にドラッグしてズームします。
- タイミング: ドラッグして期間を選択します。
次の修飾キーでナビゲーション モードを使用することもできます。
Shift+
ドラッグして選択したアイテムをボックス表示します。Space+
ドラッグするとパンやスクロールができます。Ctrl+
スクロールしてズーム。Ctrl+
ドラッグして期間を選択します。