Việc ước tính thời gian xử lý khung hình CPU và GPU (thời gian kết xuất khung hình) là điều cần thiết để hiểu rõ hiệu suất của ứng dụng và xác định nút thắt cổ chai. 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 theo dõi mà bạn có thể sử dụng để ước tính thời gian khung hình.
Thời gian CPU
Trong AGI, bạn có thể xem tổng thời gian khung CPU và thời gian khung CPU đang hoạt động trong kênh CPU của một hồ sơ hệ thống.
Tổng thời gian CPU
Để đo lường tổng thời gian CPU đã 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
(dành cho OpenGL) và vkQueuePresentKHR
(dành cho Vulkan).

eglSwapBuffer
.
vkQueuePresentKHR
.Thông tin đo lường này là ước tính tổng thời gian CPU,nhưng không nhất thiết phải đại diện cho thời gian CPU đang hoạt động. Ví dụ: trong các ứng dụng liên kết với GPU, CPU có thể chờ GPU hoàn tất công việc trước khi gửi một khung mới. Điều này thường xảy ra khi một 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 đang hoạt động.

dequeueBuffer
và eglSwapBuffer
.
Thời gian CPU hoạt động
Thời gian CPU đang hoạt động 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 lường thời gian CPU đang hoạt động, hãy xem các lát cắ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 thêm các luồng đang hoạt động.


Một cách khác để đo lường thời gian CPU đang hoạt động là xem các lát cắt ứng dụng trong kênh CPU. Các 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 lát cắ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 kênh 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 lát cắ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 lát cắ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 cắ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 GPU bằng cách đo lường tổng thời gian ứng dụng của bạn dành cho các tác vụ liên kết với một khung hình.
Thiết bị Mali
Trên các thiết bị Mali, các lát cắt GPU có mảnh, không phải mảnh và đôi khi có các kênh bổ sung không phải mảnh. Đối với các khung hình ít phức tạp hơn, công việc của mảnh và không phải mảnh là tuần tự, vì vậy, bạn có thể phân biệt công việc của một khung hình với khung hình khác bằng cách tìm khoảng trống giữa công việc GPU đang hoạt động.
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 bắt đầu và kết thúc khung hình.


Đối với các ứng dụng có quy trình làm việc GPU song song nhiều hơn, bạn có thể lấy thời gian kết xuất khung hình 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 mỗi lát cắt.
Đối với các ứng dụng dựa trên Vulkan, bạn có thể sử dụng nhiều lần gửi để tạo một khung. Theo dõi các mã gửi bằng cách sử dụng kênh Sự kiện Vulkan. Kênh này chứa một lát cắt cho mỗi lần 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 GPU tương ứng với lát cắt gửi đó.


Thiết bị Adreno
Trên các thiết bị Adreno, các lát cắt GPU xuất hiện trong kênh GPU Queue 0 (Hàng đợi GPU 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 cắt đại diện cho các lượt kết xuất cho một khung hình và sử dụng các lát cắt đó để đo lường thời gian khung hình GPU.


Tương tự như trường hợp Mali được mô tả trước đó: nếu ứng dụng đang sử dụng Vulkan, thì kênh 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. Để làm nổi bật các lượt kết xuất, hãy nhấp vào các lát cắt Sự kiện Vulkan liên kết với khung.

Có một số trường hợp khó phân biệt ranh giới khung GPU hơn do ứng dụng bị ràng buộc nhiều vào 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 không có thông tin về lát cắt GPU trong dấu vết, bạn có thể ước tính thời gian khung hình GPU bằng cách sử dụng kênh GPU counter (Bộ đếm GPU).
Thiết bị Mali
Trên các thiết bị Mali, bạn có thể sử dụng kênh Mức sử dụng GPU để ước tính thời gian khung hình GPU cho một ứng dụng không sử dụng nhiều GPU. Khi các ứng dụng ít sử dụng GPU hơn, chúng sẽ có các khoảng thời gian hoạt động GPU cao và thấp đều đặn, thay vì hoạt động cao một cách nhất quán. Để ước tính thời gian kết xuất khung hình GPU bằng cách sử dụng kênh Mức sử dụng GPU, hãy đo lường thời lượng của các khoảng thời gian hoạt động cao trong kênh.

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 kênh sử dụng hàng đợi mảnh và 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 GPU. Bằng cách tìm kiếm các mẫu trong kênh mảnh và không phải mảnh, bạn có thể ước tính sơ bộ vị trí ranh giới của một khung hình và sử dụng thông tin đó để đo lường thời gian 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à tỷ lệ sử dụng GPU của ứng dụng luôn ở mức cao, bạn có thể sử dụng kênh Vertex Instructions / Second (Lệnh đỉnh/giây) và Fragment Instructions / Second (Lệnh mảnh/giây) để ước tính thời gian khung GPU. Bằng cách tìm kiếm các mẫu trong mức độ hoạt động của các kênh này, bạn có thể dự đoán sơ bộ vị trí ranh giới của một khung hình và sử dụng thông tin đó để đo lường thời gian khung hình GPU.

Các kênh khác này có thể cung cấp thông tin tương tự:
- Số đỉnh được tô bóng / giây
- Số mảnh được tô bóng / giây
- % Thời gian tô bóng đỉnh
- % Thời gian tô bóng mảnh