Оценка времени обработки кадров на ЦП и ГП (времени кадра) имеет важное значение для понимания производительности вашего приложения и выявления узких мест. При профилировании приложения с помощью AGI, System Profiler предоставляет данные трассировки, которые можно использовать для оценки времени кадра.
время работы процессора
В AGI можно просмотреть общее и активное время работы ЦП в дорожке ЦП системного профиля .
Общее время работы процессора
Для измерения общего времени, затраченного процессором, выберите временной диапазон , включающий время между последовательными событиями отправки кадров. Событиями отправки кадров являются eglSwapBuffers (для OpenGL) и vkQueuePresentKHR (для Vulkan).

eglSwapBuffer . 
vkQueuePresentKHR . Это измерение представляет собой приблизительную оценку общего времени работы процессора, но не обязательно отражает активное время работы процессора. Например, в приложениях, сильно зависящих от графического процессора, процессор может ожидать завершения работы графического процессора перед отправкой нового кадра. Это часто происходит, когда событие dequeueBuffer , eglSwapBuffer (для OpenGL) или vkQueuePresent (для Vulkan) занимает большую часть времени работы процессора. Время ожидания включается в общее время работы процессора, но не в активное время работы процессора.

dequeueBuffer и eglSwapBuffer .Активное время ЦП
Активное время работы ЦП определяет, когда ЦП выполняет код приложения, не находясь в режиме ожидания.
Для измерения активного процессорного времени просмотрите срезы «Running» непосредственно над событиями ЦП. Подсчитайте все участки трассировки между двумя событиями отправки кадра, находящиеся в состоянии «Running» . Убедитесь, что вы включили работающие потоки.


Еще один способ измерить активное время работы процессора — просмотреть фрагменты приложения в треках ЦП. Эти фрагменты показывают, когда процессор работает, и соответствуют фрагментам «Работает» .

Для более точной идентификации фрагментов приложения можно добавить в него маркеры ATrace . Это позволит отобразить эти маркеры в дорожке загрузки ЦП в System Profiler.

Оценка времени отрисовки кадра на графическом процессоре
Для оценки времени отрисовки кадра на графическом процессоре можно использовать либо срезы данных с графического процессора, либо счетчики данных с графического процессора в System Profiler. При использовании срезов данных с графического процессора оценка будет более точной.
Срезы графического процессора
Если System Profiler предоставляет информацию о срезах графического процессора, вы можете получить очень точную информацию о времени обработки кадра графическим процессором, измерив общее время, которое ваше приложение тратит на выполнение задач, связанных с одним кадром.
Устройства Мали
На устройствах Mali фрагменты данных, обрабатываемые графическим процессором, состоят из фрагментных , нефрагментных и, иногда, дополнительных нефрагментных дорожек. Для менее сложных кадров фрагментная и нефрагментная обработка выполняются последовательно, поэтому отличить работу одного кадра от работы другого можно, ища промежутки между активной работой графического процессора.
В качестве альтернативы, если вы знакомы с работой, которая отправляется на графический процессор, определение шаблона отправленных проходов рендеринга позволяет получить информацию о начале и конце кадра.


Для приложений с более распараллеленным рабочим процессом на графическом процессоре время обработки кадров на графическом процессоре можно получить, найдя все кадры с одинаковым идентификатором отправки (submissionID) на панели «Выделение» для каждого фрагмента.
Для приложений, использующих Vulkan, для формирования кадра можно использовать несколько отправленных данных. Отслеживайте идентификаторы отправленных данных с помощью трека событий Vulkan , который содержит фрагмент для каждого отправленного данных. Выбор фрагмента данных из трека выделит все фрагменты активности графического процессора, соответствующие этому отправлению.


Адрено-устройства
На устройствах Adreno фрагменты графического процессора отображаются в дорожке GPU Queue 0 и всегда представлены последовательно, поэтому вы можете просмотреть все фрагменты, представляющие проходы рендеринга для кадра, и использовать их для измерения времени отрисовки кадра на графическом процессоре.


Аналогично описанному ранее сценарию с Mali: если приложение использует Vulkan, дорожка событий Vulkan предоставляет информацию о работе, выполняемой для обработки кадра. Чтобы выделить проходы рендеринга, щелкните фрагменты событий Vulkan , связанные с кадром.

В некоторых сценариях определить границы кадров на графическом процессоре сложнее из-за высокой вычислительной мощности приложения. В таких случаях, если вы знакомы с процессом обработки данных на графическом процессоре, вы можете определить шаблон выполнения проходов рендеринга и на основе этой информации определить границы кадров.

Счетчики GPU
Если информация о срезе GPU недоступна в трассировке, вы можете оценить время кадра GPU, используя данные счетчика GPU .
Устройства Мали
На устройствах Mali можно использовать шкалу загрузки графического процессора для оценки времени кадра, затрачиваемого на работу графического процессора, для приложений, не требующих интенсивной работы процессора. Приложения, менее ресурсоемкие с точки зрения графического процессора, имеют регулярные периоды высокой и низкой активности, а не постоянно высокую активность. Для оценки времени кадра с помощью шкалы загрузки графического процессора измерьте продолжительность периодов высокой активности в этой шкале.

Если приложение интенсивно использует графический процессор, его загрузка может быть постоянно очень высокой. В этом случае можно использовать данные об использовании очереди фрагментов и очереди нефрагментов для мониторинга активности графического процессора и оценки времени обработки кадров. Изучая закономерности в данных о фрагментах и нефрагментах , можно получить приблизительную оценку границ кадра и использовать это для измерения времени обработки кадра графическим процессором.

Адрено-устройства
На устройствах с Adreno, если приложение не сильно нагружает графический процессор, вы можете оценить время отрисовки кадра на GPU так же, как и на устройствах с Mali в предыдущем разделе.

Если приложение интенсивно использует графический процессор, и процент его загрузки постоянно высок, можно использовать треки «Вершинные инструкции / Вторая» и «Фрагментные инструкции / Вторая» для оценки времени обработки кадра графическим процессором. Анализируя закономерности в уровнях активности этих треков, можно получить приблизительную оценку границ кадра и использовать её для измерения времени обработки кадра графическим процессором.

Эти другие треки могут содержать аналогичную информацию:
- Затененные вершины / Второй
- Затененные фрагменты / Второй
- % Время затенения вершин
- % Фрагменты затенения времени