Parcourir un rapport Systrace

Ce guide explique comment parcourir et interpréter un rapport Systrace. Pour interpréter un rapport Perfetto, consultez la documentation sur le processeur de trace.

Éléments d'un rapport standard

Systrace génère un fichier HTML de sortie qui contient plusieurs sections. Le rapport liste les threads de chaque processus. Si un thread donné affiche des images d'interface utilisateur, le rapport indique également les images affichées le long de la timeline. Le temps défile lorsque vous progressez de gauche à droite dans le rapport.

De haut en bas, le rapport contient les sections suivantes.

Interactions des utilisateurs

La première section contient des barres qui représentent des interactions utilisateur spécifiques dans votre application ou votre jeu, par exemple lorsque vous appuyez sur l'écran de l'appareil. Ces interactions sont des repères temporels utiles.

Activité du processeur

La section suivante montre des barres qui représentent l'activité des threads au sein de chaque processeur. Les barres indiquent l'activité du processeur dans toutes les applications, y compris votre application ou votre jeu.

La section "Activité du processeur" est extensible et vous permet de consulter la fréquence d'horloge de chaque processeur. La figure 1 montre un exemple de section d'activité de processeur réduite, et la figure 2 montre une version développée qui affiche la fréquence d'horloge :

Capture d'écran du rapport Systrace
Figure 1 : Exemple d'activité du processeur (vue réduite) dans un rapport Systrace

Capture d'écran du rapport Systrace
Figure 2 : Exemple d'activité du processeur (vue développée) qui affiche la fréquence d'horloge du processeur dans un rapport Systrace

Événements système

Les histogrammes de cette section présentent des événements spécifiques au niveau du système tels que le nombre de textures et la taille totale d'objets spécifiques.

Un histogramme qu'il peut être utile d'examiner de plus près est celui qui s'intitule SurfaceView. Le nombre représente le nombre de mémoires tampons graphiques composées qui ont été transmises dans le pipeline d'affichage et qui attendent d'être affichées sur l'écran de l'appareil. Étant donné que la plupart des appareils sont mis en mémoire tampon double ou triple, ce nombre est presque toujours de 0, 1 ou 2.

La figure 3 montre d'autres histogrammes qui illustrent le processus Surface Flinger, y compris les événements VSync et les tâches d'échange de threads utilisateur :

Capture d'écran du rapport Systrace
Figure 3 : Exemple de graphique Surface Flinger dans un rapport Systrace

Images d'affichage

Cette section, souvent la plus grande du rapport, représente une ligne multicolore suivie de piles de barres. Ces formes représentent l'état et la pile d'images d'un thread qui a été créé. Chaque niveau de la pile représente un appel à beginSection() ou au début d'un événement de trace personnalisée que vous avez défini pour votre application ou votre jeu.

La ligne multicolore au-dessus de chaque pile représente un ensemble d'états pour thread spécifique dans le temps. Chaque segment de ligne peut contenir l'une des couleurs suivantes :

Vert : en cours d'exécution
Le thread effectue une tâche liée à un processus ou répond à une interruption.
Bleu : exécutable
Le thread est disponible, mais n'est pas programmé pour le moment.
Blanc : en veille
Le thread n'a aucune tâche à effectuer, peut-être parce qu'il est bloqué par un verrouillage mutex.
Orange : veille non interruptible
Le thread est bloqué sur E/S ou en attente d'une opération du disque.
Violet : veille interruptible
Le thread est bloqué pour une autre opération du noyau, généralement la gestion de mémoire.

Raccourcis clavier

Le tableau suivant liste les raccourcis clavier disponibles lorsque vous consultez un rapport Systrace :

Raccourci Description
W Faire un zoom avant sur la chronologie de la trace.
A Faire un panoramique vers la gauche sur la chronologie de la trace.
S Faire un zoom arrière sur la chronologie de la trace.
D Faire un panoramique vers la droite sur la chronologie de la trace.
E Centrer la timeline de trace sur la position actuelle de la souris.
M Encadrer la sélection actuelle.
1 Passez le modèle de sélection actif en mode "sélectionner". Correspond au premier bouton qui apparaît dans la barre d'outils du sélecteur de souris (voir l'image à droite). Capture d'écran de la barre d'outils du sélecteur de souris dans le rapport Systrace
2 Passez le modèle de sélection actif en mode "panoramique". Correspond au deuxième bouton qui apparaît dans la barre d'outils du sélecteur de souris (voir l'image à droite). Capture d'écran de la barre d'outils du sélecteur de souris dans le rapport Systrace
3 Passez le modèle de sélection actif en mode "zoom". Correspond au troisième bouton qui apparaît dans la barre d'outils du sélecteur de souris (voir l'image à droite). Capture d'écran de la barre d'outils du sélecteur de souris dans le rapport Systrace
4 Passez le modèle de sélection actif en mode "durée". Correspond au quatrième bouton qui apparaît dans la barre d'outils du sélecteur de souris (voir l'image à droite). Capture d'écran de la barre d'outils du sélecteur de souris dans le rapport Systrace
G Afficher la grille au début de la tâche sélectionnée.
Maj+G Afficher la grille à la fin de la tâche sélectionnée.
Flèche vers la gauche Sélectionnez l'événement précédent sur la chronologie sélectionnée.
Flèche vers la droite Sélectionnez l'événement suivant sur la chronologie sélectionnée.

Examiner les problèmes de performances

Lorsque vous interagissez avec un rapport Systrace, vous pouvez inspecter l'utilisation du processeur de l'appareil pendant toute la durée de l'enregistrement. Pour obtenir de l'aide sur la navigation dans le rapport HTML, consultez la section Raccourcis clavier ou cliquez sur le bouton ? dans le coin supérieur droit du rapport.

Les sections ci-dessous expliquent comment inspecter les informations du rapport pour identifier et résoudre les problèmes de performances.

Identifier les problèmes de performances

Lorsque vous parcourez un rapport Systrace, vous pouvez identifier plus facilement les problèmes de performances en effectuant une ou plusieurs des actions suivantes :

  • Sélectionnez un intervalle de temps qui vous intéresse en dessinant un rectangle autour de l'intervalle de temps.
  • Marquez ou surlignez une zone problématique à l'aide de l'outil Règle.
  • Affichez chaque opération d'actualisation d'affichage en cliquant sur View Options > Highlight VSync (Options d'affichage > Mettre en surbrillance VSync).

Inspecter les images et les alertes de l'interface utilisateur

Comme le montre la figure 4, un rapport Systrace liste chaque processus qui affiche des images de l'interface utilisateur et indique chaque image affichée le long de la timeline. Les images qui s'affichent dans les 16,6 millisecondes requises pour maintenir une valeur stable de 60 images par seconde sont indiquées par des cercles verts. Les images qui mettent plus de 16,6 millisecondes à s'afficher sont indiquées par des cercles jaunes ou rouges.

Zoom avant sur une image
Figure 4 : Affichage Systrace après un zoom avant sur une image de longue durée

Un clic sur une image permet de la mettre en surbrillance et d'obtenir des informations supplémentaires sur les tâches effectuées par le système pour l'afficher, y compris les alertes. Le rapport indique également les méthodes que le système exécutait lors de l'affichage de cette image. Vous pouvez étudier ces méthodes pour déterminer les causes potentielles des à-coups dans l'interface utilisateur.

Image problématique sélectionnée
Figure 5 : Si vous sélectionnez une image problématique, une alerte s'affiche sous le rapport de trace pour identifier le problème

Si vous avez sélectionné une image qui s'affiche lentement, une alerte peut s'afficher dans le volet inférieur du rapport. L'alerte illustrée dans la figure 5 indique que le problème principal de l'image est que trop de temps est consacré au recyclage et à la réassociation dans ListView. La trace contient des liens vers les événements pertinents qui détaillent ce que fait le système pendant ce temps.

Pour afficher chaque alerte détectée par l'outil dans votre trace, ainsi que le nombre de fois où l'appareil a déclenché chaque alerte, cliquez sur l'onglet Alerts (Alertes) à l'extrême droite de la fenêtre, comme illustré dans la figure 6. Le panneau Alerts (Alertes) vous permet d'identifier les problèmes qui se produisent dans la trace et la fréquence à laquelle ils contribuent aux à-coups. Vous pouvez considérer ce panneau comme une liste de bugs à corriger. Souvent, une légère modification ou amélioration dans une zone peut supprimer tout un pan d'alertes.

Onglet des alertes affiché
Figure 6 : Un clic sur le bouton Alert affiche l'onglet des alertes

Si vous constatez que le thread UI contient trop de tâches, utilisez l'une des approches suivantes pour identifier les méthodes qui consomment trop de temps CPU :