Việc ước tính thời gian xử lý khung hình của CPU và GPU (thời gian kết xuất khung hình) là điều cần thiết để hiểu hiệu suất của ứng dụng và xác định các điểm tắc nghẽn. Khi bạn phân tích một ứng dụng bằng AGI, Trình phân tích hệ thống sẽ cung cấp dữ liệu dấu vết mà bạn có thể dùng để ước tính thời gian khung hình.
Thời gian của CPU
Trong AGI, bạn có thể xem tổng thời gian khung hình CPU và thời gian khung hình CPU đang hoạt động trong bản theo dõi CPU của một hồ sơ hệ thống.
Tổng thời gian của CPU
Để đo tổng thời gian CPU đã sử dụng, hãy chọn phạm vi thời gian bao gồm thời gian giữa các sự kiện gửi khung hình liên tiếp. Các sự kiện gửi khung hình là eglSwapBuffers (đối với OpenGL) và vkQueuePresentKHR (đối với Vulkan).
eglSwapBuffer.
vkQueuePresentKHR.Số đo này là ước tính về tổng thời gian CPU,nhưng không nhất thiết phải biểu thị thời gian CPU hoạt động. Ví dụ: trong các ứng dụng bị giới hạn bởi GPU, CPU có thể đợi GPU hoàn tất công việc trước khi gửi một khung hình mới. Điều này thường xảy ra khi sự kiện dequeueBuffer, eglSwapBuffer (đối với OpenGL) hoặc vkQueuePresent (đối với Vulkan) chiếm phần lớn thời gian CPU.
Thời gian chờ được tính vào tổng thời gian CPU, nhưng không tính vào thời gian CPU hoạt động.
dequeueBuffer và eglSwapBuffer.
Thời gian hoạt động của CPU
Thời gian hoạt động của CPU xác định thời điểm CPU đang chạy mã ứng dụng mà không ở trạng thái rảnh.
Để đo thời gian hoạt động của CPU, hãy xem các lát Đang chạy ngay phía trên các sự kiện CPU. Đếm tất cả các phần của dấu vết giữa hai sự kiện gửi khung hình ở trạng thái Đang chạy. Đảm bảo rằng bạn đưa cả các luồng đang hoạt động.
Một cách khác để đo thời gian hoạt động của CPU là xem các lát ứng dụng trong các dấu vết CPU. Những lát cắt này cho biết thời điểm CPU đang chạy và tương ứng với các lát cắt Đang chạy.
Để giúp xác định các lát ứng dụng, bạn có thể thêm điểm đánh dấu ATrace vào ứng dụng. Thao tác này sẽ hiển thị các điểm đánh dấu trong dấu vết CPU của Trình phân tích hệ thống.
Ước tính thời gian kết xuất khung hình của GPU
Để ước tính thời gian khung hình GPU, bạn có thể sử dụng các lát GPU hoặc bộ đếm GPU trong Trình phân tích hệ thống. Số liệu ước tính sẽ chính xác hơn khi sử dụng các lát GPU.
Lát GPU
Nếu Trình phân tích tài nguyên hệ thống có thông tin về lát GPU, bạn có thể nhận được thông tin rất chính xác về thời gian kết xuất khung hình của GPU bằng cách đo tổng thời gian ứng dụng của bạn dành cho các tác vụ liên quan đến một khung hình.
Thiết bị Mali
Trên các thiết bị Mali, các lát GPU có mảnh, không phải mảnh và đôi khi có các bản ghi không phải mảnh bổ sung. Đối với các khung hình ít phức tạp, công việc của mảnh và công việc không phải của mảnh là tuần tự, vì vậy, bạn có thể phân biệt công việc của khung hình này với khung hình khác bằng cách tìm khoảng trống giữa công việc đang hoạt động của GPU.
Ngoài ra, nếu bạn quen với công việc đang được gửi đến GPU, thì việc xác định mẫu của các lượt kết xuất đã gửi sẽ cung cấp thông tin về thời điểm một khung hình bắt đầu và kết thúc.
Đối với những ứng dụng có quy trình GPU song song hoá nhiều hơn, bạn có thể nhận được thời gian kết xuất khung hình của GPU bằng cách tìm tất cả các khung hình có cùng submissionID trong ngăn Selection (Lựa chọn) cho từng lát cắt.
Đối với các ứng dụng dựa trên Vulkan, bạn có thể dùng nhiều lượt gửi để tạo một khung hình. Theo dõi mã nhận dạng của lượt gửi bằng cách sử dụng bản theo dõi Sự kiện Vulkan. Bản theo dõi này chứa một lát cắt cho mỗi lượt gửi. Việc chọn một lát cắt gửi sẽ làm nổi bật tất cả các lát cắt hoạt động của GPU tương ứng với lượt gửi đó.
Thiết bị Adreno
Trên các thiết bị Adreno, các lát GPU xuất hiện trong bản nhạc GPU Queue 0 và luôn được biểu thị tuần tự, vì vậy, bạn có thể xem tất cả các lát đại diện cho các lượt kết xuất của một khung hình và sử dụng chúng để đo thời gian khung hình của GPU.
Tương tự như trường hợp Mali được mô tả trước đó: nếu ứng dụng đang dùng Vulkan, thì bản theo dõi Vulkan Events (Sự kiện Vulkan) sẽ cung cấp thông tin về công việc đang được gửi để thực thi khung hình. Để làm nổi bật các lượt kết xuất, hãy nhấp vào các lát Sự kiện Vulkan được liên kết với khung hình.
Có một số trường hợp mà ranh giới khung hình GPU khó phân biệt hơn do ứng dụng bị ràng buộc nhiều với GPU. Trong những trường hợp này, nếu quen thuộc với công việc đang được gửi đến GPU, bạn có thể xác định mẫu mà các lượt kết xuất đang được thực thi và xác định ranh giới khung hình từ thông tin đó.
Bộ đếm GPU
Nếu thông tin về lát GPU không có trong dấu vết, bạn có thể ước tính thời gian kết xuất khung hình GPU bằng cách sử dụng các dấu vết bộ đếm GPU.
Thiết bị Mali
Trên các thiết bị Mali, bạn có thể sử dụng bản theo dõi mức sử dụng GPU để ước tính thời gian kết xuất khung hình GPU cho một ứng dụng không sử dụng nhiều GPU. Khi ứng dụng ít sử dụng GPU, chúng sẽ có các khoảng thời gian thường xuyên có hoạt động GPU cao và thấp, thay vì hoạt động cao liên tục. Để ước tính thời gian khung hình GPU bằng cách sử dụng bản theo dõi mức sử dụng GPU, hãy đo lường khoảng thời gian có hoạt động cao trong bản theo dõi.
Nếu ứng dụng sử dụng nhiều GPU hơn, thì mức sử dụng GPU có thể luôn ở mức rất cao. Trong trường hợp này, bạn có thể sử dụng các bản theo dõi mức sử dụng hàng đợi mảnh và mức sử dụng hàng đợi không phải mảnh để theo dõi hoạt động của GPU và ước tính thời gian khung hình của GPU. Bằng cách tìm kiếm các mẫu trong các đoạn fragment và non-fragment, bạn có thể ước tính sơ bộ vị trí của ranh giới khung hình và sử dụng thông tin đó để đo thời gian kết xuất khung hình GPU.
Thiết bị Adreno
Trên các thiết bị Adreno, nếu ứng dụng không sử dụng nhiều GPU, bạn có thể ước tính thời gian khung hình GPU theo cách tương tự như với thiết bị Mali trong phần trước.
Nếu ứng dụng sử dụng nhiều GPU hơn và có tỷ lệ sử dụng GPU cao ổn định, bạn có thể dùng các chỉ số Vertex Instructions/Second (Số chỉ dẫn đỉnh/giây) và Fragment Instructions/Second (Số chỉ dẫn mảnh/giây) để ước tính thời gian khung hình GPU. Bằng cách tìm kiếm các mẫu trong mức độ hoạt động của những dấu vết này, bạn có thể ước tính sơ bộ vị trí của ranh giới khung hình và sử dụng thông tin đó để đo thời gian kết xuất khung hình của GPU.
Các bản ghi âm khác này có thể cung cấp thông tin tương tự:
- Vertices Shaded / Second
- Phân đoạn được tô bóng / giây
- % Thời gian tô bóng đỉnh
- % Thời gian đổ bóng các mảnh