Estimer les temps de traitement des frames (frame times) du processeur et du GPU est essentiel pour comprendre les performances de votre application et identifier les goulots d'étranglement. Lorsque vous profilez une application avec AGI, System Profiler fournit des données de trace que vous pouvez utiliser pour estimer les temps de frame.
Temps CPU
Dans AGI, vous pouvez afficher les temps de frame CPU total et actif dans le canal CPU d'un profil système.
Temps CPU total
Pour mesurer le temps total passé par le processeur, sélectionnez la période qui inclut le temps écoulé entre les événements d'envoi de frame successifs. Les événements d'envoi de frame sont eglSwapBuffers
(pour OpenGL) et vkQueuePresentKHR
(pour Vulkan).

eglSwapBuffer
.
vkQueuePresentKHR
.Cette mesure est une estimation du temps CPU total,mais ne représente pas nécessairement le temps CPU actif. Par exemple, dans les applications liées au GPU, le processeur peut attendre que le GPU ait terminé son travail avant d'envoyer un nouveau frame. Cela se produit souvent lorsqu'un événement dequeueBuffer
, eglSwapBuffer
(pour OpenGL) ou vkQueuePresent
(pour Vulkan) occupe une grande partie du temps de processeur.
Le temps d'attente est inclus dans le temps CPU total, mais pas dans le temps CPU actif.

dequeueBuffer
et eglSwapBuffer
.
Temps CPU actif
Le temps CPU actif détermine quand le processeur exécute le code de l'application sans être à l'état d'inactivité.
Pour mesurer le temps de CPU actif, affichez les segments Running (En cours d'exécution) juste au-dessus des événements de CPU. Comptez toutes les parties de la trace entre les deux événements d'envoi de frame qui sont dans l'état Running (En cours d'exécution). Assurez-vous d'inclure des threads de travail.


Une autre façon de mesurer le temps CPU actif consiste à afficher les segments d'application dans les canaux CPU. Ces tranches indiquent quand le processeur est en cours d'exécution et correspondent aux tranches Running (En cours d'exécution).

Pour identifier plus facilement les tranches d'application, vous pouvez ajouter des repères ATrace à votre application. Les repères s'affichent alors dans le canal CPU du Profileur système.

Estimer les temps de frame du GPU
Pour estimer les délais de frame du GPU, vous pouvez utiliser des tranches de GPU ou des compteurs de GPU dans le Profileur système. L'estimation est plus précise lorsque vous utilisez des tranches de GPU.
Tranches de GPU
Si des informations sur les tranches de GPU sont disponibles dans l'outil de profilage système, vous pouvez obtenir des informations très précises sur le temps de rendu du GPU en mesurant la durée totale pendant laquelle votre application travaille sur des tâches associées à un seul frame.
Appareils Mali
Sur les appareils Mali, les tranches de GPU comportent des pistes fragment, non-fragment et parfois non-fragment supplémentaires. Pour les frames moins complexes, le travail de fragment et de non-fragment est séquentiel. Vous pouvez donc distinguer le travail d'un frame de celui d'un autre en recherchant des lacunes entre le travail GPU actif.
Si vous connaissez le travail envoyé au GPU, vous pouvez également identifier le schéma des passes de rendu envoyées pour obtenir des informations sur le début et la fin d'un frame.


Pour les applications dont le workflow GPU est plus fortement parallélisé, vous pouvez obtenir les temps de frame du GPU en recherchant tous les frames ayant le même ID de soumission dans le volet Sélection pour chaque tranche.
Pour les applications basées sur Vulkan, plusieurs envois peuvent être utilisés pour composer un frame. Gardez une trace des ID d'envoi à l'aide du canal Événements Vulkan, qui contient une tranche pour chaque envoi. Si vous sélectionnez un segment d'envoi, tous les segments d'activité du GPU correspondant à l'envoi seront mis en surbrillance.


Appareils Adreno
Sur les appareils Adreno, les tranches de GPU apparaissent dans la piste GPU Queue 0 et sont toujours représentées de manière séquentielle. Vous pouvez donc examiner toutes les tranches qui représentent les passes de rendu d'un frame et les utiliser pour mesurer les temps de frame du GPU.


Comme pour le scénario Mali décrit précédemment, si l'application utilise Vulkan, le canal Événements Vulkan fournit des informations sur le travail envoyé pour exécuter le frame. Pour mettre en surbrillance les passes de rendu, cliquez sur les tranches Événements Vulkan associées au frame.

Dans certains cas, il est plus difficile de distinguer les limites des frames du GPU, car l'application est fortement liée au GPU. Dans ces scénarios, si vous connaissez le travail envoyé au GPU, vous pouvez identifier le modèle avec lequel les passes de rendu sont exécutées et déterminer les limites de frame à partir de ces informations.

Compteurs du GPU
Si les informations sur les tranches de GPU ne sont pas disponibles dans une trace, vous pouvez estimer le temps de frame du GPU à l'aide des pistes du compteur GPU.
Appareils Mali
Sur les appareils Mali, vous pouvez utiliser le canal Utilisation du GPU pour estimer le temps de frame du GPU pour une application qui n'est pas gourmande en GPU. Lorsque les applications sont moins gourmandes en GPU, elles présentent des périodes régulières d'activité GPU élevée et faible, au lieu d'une activité constamment élevée. Pour estimer les temps de frame du GPU à l'aide du canal Utilisation du GPU, mesurez la durée des périodes d'activité élevée dans le canal.

Si l'application est plus gourmande en GPU, l'utilisation du GPU peut être très élevée de manière constante. Dans ce cas, vous pouvez utiliser les pistes Utilisation de la file d'attente de fragments et Utilisation de la file d'attente non fragmentée pour surveiller l'activité du GPU et estimer les délais de frame du GPU. En recherchant des tendances dans les pistes fragment et non-fragment, vous pouvez obtenir une estimation approximative de l'emplacement des limites d'un frame et l'utiliser pour mesurer le temps de frame du GPU.

Appareils Adreno
Sur les appareils Adreno, si l'application n'est pas gourmande en GPU, vous pouvez estimer les délais de frame du GPU de la même manière que pour les appareils Mali dans la section précédente.

Si l'application est plus gourmande en GPU et que son pourcentage d'utilisation du GPU est constamment élevé, vous pouvez utiliser les canaux Instructions de vertex/seconde et Instructions de fragment / seconde pour estimer les délais de frame du GPU. En recherchant des tendances dans les niveaux d'activité de ces pistes, vous pouvez obtenir une estimation approximative des limites d'un frame et l'utiliser pour mesurer le temps de frame du GPU.

Ces autres pistes peuvent fournir des informations similaires:
- Vertices ombrés / seconde
- Fragments ombrés / seconde
- % Temps d'ombrage des sommets
- % Temps de fragments d'ombrage