如要瞭解應用程式的效能並找出瓶頸,就必須估算 CPU 和 GPU 的畫格處理時間 (畫格時間)。使用 AGI 剖析應用程式時,系統剖析器會提供追蹤資料,讓您估算影格時間。
CPU 時間
在 AGI 中,您可以在系統設定檔的 CPU 追蹤中查看總 CPU 影格時間和活動 CPU 影格時間。
CPU 作業時間總計
如要評估 CPU 總耗用時間,請選取時間範圍,包含連續影格提交事件之間的時間。影格提交事件為 eglSwapBuffers
(適用於 OpenGL) 和 vkQueuePresentKHR
(適用於 Vulkan)。

eglSwapBuffer
事件之間的時間。
vkQueuePresentKHR
事件之間的時間。這項評估結果是 CPU 總時間的預估值,但不一定代表有效的 CPU 時間。舉例來說,在 GPU 繫結應用程式中,CPU 可能會等待 GPU 完成工作,再提交新的影格。這通常發生在 dequeueBuffer
、eglSwapBuffer
(適用於 OpenGL) 或 vkQueuePresent
(適用於 Vulkan) 事件占用大量 CPU 時間時。等待時間會計入 CPU 總時間,但不會計入 CPU 有效時間。

dequeueBuffer
和 eglSwapBuffer
事件期間,CPU 大量閒置。活動 CPU 時間
主動 CPU 時間會判斷 CPU 在執行應用程式程式碼時是否處於閒置狀態。
如要評估 CPU 活動時間,請查看 CPU 事件上方的「Running」區塊。計算兩個處於「Running」狀態的畫面提交事件之間的所有追蹤記錄。請務必加入可運作的執行緒。


另一種評估 CPU 時間的方法,是查看 CPU 追蹤中的應用程式切片。這些切片會指出 CPU 執行的時間,並與「Running」切片相對應。

如要識別應用程式切片,您可以為應用程式新增 ATrace 標記。這會在系統分析器的 CPU 追蹤記錄中顯示標記。

估算 GPU 影格時間
如要估算 GPU 影格時間,您可以在系統分析工具中使用 GPU 切片或 GPU 計數器。使用 GPU 切片時,預估值會更準確。
GPU 切片
如果系統分析工具提供 GPU 切片資訊,您可以測量應用程式處理與單一影格相關聯的作業所花費的總時間,藉此取得非常精確的 GPU 影格時間資訊。
Mali 裝置
在 Mali 裝置上,GPU 切片具有「片段」、「非片段」,以及偶爾的「附加非片段」軌道。對於較不複雜的框架,片段和非片段的工作是依序進行,因此只要查看有效 GPU 工作之間的差距,即可區分不同框架的工作。
或者,如果您熟悉提交至 GPU 的工作,可以找出提交的算繪階段模式,瞭解影格開始和結束的時間。


如果應用程式具有更大量並行的 GPU 工作流程,您可以查看每個切片的「Selection」窗格,找出具有相同 submissionID 的所有影格,藉此取得 GPU 影格時間。
對於以 Vulkan 為基礎的應用程式,您可以使用多個提交內容來組合影格。使用 Vulkan 事件追蹤,追蹤提交 ID,其中包含每個提交內容的切片。選取提交片段後,系統會醒目顯示與提交內容相對應的所有 GPU 活動片段。


Adreno 裝置
在 Adreno 裝置上,GPU 切片會顯示在 GPU 佇列 0 軌道中,且一律以順序顯示,因此您可以查看所有代表影格轉譯階段的切片,並使用這些切片來測量 GPU 影格時間。


與前述的 Mali 情境類似:如果應用程式使用 Vulkan,Vulkan 事件追蹤記錄會提供有關提交執行影格的工作資訊。如要醒目顯示算繪階段,請按一下與影格相關的 Vulkan 事件切片。

在某些情況下,由於應用程式受到 GPU 的嚴重限制,因此更難區分 GPU 影格邊界。在這些情況下,如果您熟悉提交至 GPU 的工作,就可以找出算繪階段執行的模式,並根據該資訊判斷影格邊界。

GPU 計數器
如果追蹤記錄中沒有 GPU 切片資訊,您可以使用 GPU 計數器追蹤記錄來估算 GPU 影格時間。
Mali 裝置
在 Mali 裝置上,您可以使用 GPU 使用率追蹤記錄,估算 GPU 幀時間 (適用於非 GPU 密集型應用程式)。如果應用程式對 GPU 的使用量較低,則會出現 GPU 活動高峰和低谷的規律性週期,而非持續出現高峰活動。如要使用 GPU 使用率追蹤記錄來估算 GPU 影格時間,請評估追蹤記錄中高活動期間的時間長度。

如果應用程式需要大量使用 GPU,GPU 使用率可能會持續維持在很高的水準。在這種情況下,您可以使用 片段佇列使用率和 非片段佇列使用率追蹤記錄,監控 GPU 活動並估算 GPU 影格時間。您可以查看片段和非片段軌跡中的模式,粗略估算影格邊界的位置,然後使用這些資訊來測量 GPU 影格時間。

Adreno 裝置
在 Adreno 裝置上,如果應用程式並非 GPU 密集型,您可以使用與前文「Mali 裝置」相同的方式,估算 GPU 影格時間。

如果應用程式對 GPU 的使用率較高,且應用程式持續維持高 GPU 使用率百分比,您可以使用「Vertex Instructions / Second」和「Fragment Instructions / Second」追蹤記錄,估算 GPU 影格時間。您可以查看這些軌跡的活動層級,找出模式,藉此粗略估算影格邊界的位置,並用於評估 GPU 影格時間。

這些其他追蹤記錄可能會提供類似的資訊:
- 每秒陰影處理頂點數
- 每秒陰影片段數
- % 著色頂點時間
- % Time Shading Fragments