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 :
É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 :
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). | |
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). | |
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). | |
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). | |
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.
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.
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.
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 :
- Si vous savez quelles méthodes peuvent entraîner des goulots d'étranglement, ajoutez des repères de trace à ces méthodes. Pour en savoir plus, consultez le guide sur la définition d'événements personnalisés dans votre code.
- Si vous n'êtes pas sûr de la source des goulots d'étranglement de l'interface utilisateur, utilisez le Profileur de processeur disponible dans Android Studio. Vous pouvez générer des journaux de trace, puis les importer et les vérifier à l'aide du Profileur de processeur.