評估 CPU 和 GPU 影格的處理時間 (影格時間) 是瞭解應用程式效能及找出瓶頸的關鍵。使用 AGI 剖析應用程式時,系統分析器會提供追蹤記錄資料,方便您估算影格時間。
CPU 時間
在 AGI 中,您可以在系統設定檔的 CPU 追蹤中,查看 CPU 影格的總和使用中影格時間。
CPU 作業時間總計
如要測量 CPU 花費總時間,請選取時間範圍,其中包括連續影格提交事件之間的時間。影格提交事件為 eglSwapBuffers
(適用於 OpenGL) 和 vkQueuePresentKHR
(適用於 Vulkan)。
測量結果是預估 CPU 作業時間總計,但不一定代表使用中的 CPU 作業時間。舉例來說,在受 GPU 限制的應用程式中,CPU 可能會等待 GPU 完成工作,再提交新的影格。如果 dequeueBuffer
、eglSwapBuffer
(適用於 OpenGL) 或 vkQueuePresent
(適用於 Vulkan) 事件佔用了大部分的 CPU 作業時間,就會發生這種情況。等待時間包含在 CPU 作業時間中,但不含使用中的 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 的影格時間。
如果是以 Vulkan 為基礎的應用程式,則可以使用多個提交內容來組合影格。使用 Vulkan 事件軌跡追蹤提交 ID,這個測試群組包含每次提交內容的配量。選取提交內容片段時,系統會醒目顯示與提交內容對應的所有 GPU 活動片段。
Adreno 裝置
在 Adreno 裝置上,GPU 配量會顯示在「GPU Queue 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 影格時間。
Adreno 裝置
在 Adreno 裝置上,如果應用程式不耗用大量 GPU,您可以採用與上一節 Mali 裝置相同的方式估算 GPU 影格時間。
如果應用程式較耗用大量 GPU,您可以使用「Vertex 操作說明/秒」和「片段操作說明 / 秒」軌跡來估算 GPU 影格時間。只要在這些軌道的活動層級中尋找模式,就能取得影格邊界的粗估預估值,並據此測量 GPU 影格時間。
這些曲目可能會提供類似資訊:
- 陰影 / 秒
- 陰影 / 秒的片段
- % 時間陰影 Vertices
- 時間片段百分比