Comment capturer localement une trace système sur Android Pie

Le traçage est un outil inestimable qui permet aux développeurs de comprendre l’impact des divers changements sur un système et peut fournir des indices permettant d’identifier la cause première des problèmes.

systrace est un outil de traçage puissant qui collecte des informations de synchronisation à partir de processus s'exécutant sur un périphérique Android. systrace a été largement utilisé par l'équipe de performance Android de Google pour optimiser les performances sur les téléphones Google Pixel. J'ai utilisé systrace pour examiner, par exemple, l'impact des modifications du planificateur de noyau sur les placements de tâches sur les processeurs et pour identifier les causes possibles des janks. systrace peut capturer une grande variété de données, notamment la planification de la CPU, la fréquence de la CPU, les E / S de disque, les graphiques, l'activité du classeur, etc. Les informations sont combinées dans un rapport qui peut être analysé dans Google Chrome.

Avant Android Pie, le seul moyen de capturer des traces avec systrace était de connecter un périphérique Android à un ordinateur et d'exécuter systrace à partir de celui-ci, généralement à partir d'un terminal. Cependant, tout le monde n’a pas toujours accès à un ordinateur, ni aux connaissances et à la confiance nécessaires pour exécuter systrace.

Avec la sortie d'Android Pie, ce désagrément a été résolu avec l'introduction du package Traceur, un outil qui capture les données de trace brutes directement sur un téléphone Android. Traceur est disponible comme option de «traçage système» dans les options de développement de l'application Paramètres. Les données de traçage brutes capturées sur le périphérique par Traceur peuvent ultérieurement être converties par systrace en un rapport HTML pour analyse.

La nouvelle option «Suivi du système» permet aux utilisateurs de facilement capturer et partager des traces avec les développeurs, sans avoir à savoir comment exécuter systrace sur un ordinateur. Les développeurs bénéficient de la possibilité de capturer des traces sans ordinateur et d’analyser ultérieurement à leur convenance. Les données de trace brutes complètes collectées par «System Tracing» ont également une taille nettement inférieure à celle du rapport HTML généré par systrace, ce qui rend donc les données de trace brutes plus appropriées pour le stockage et le partage avec d'autres.

Guide: Collecte et analyse des traces système

Tout d’abord, assurez-vous que vous avez un appareil sous Android Pie et un ordinateur sur lequel Python 2 est installé. Les instructions suivantes ont été effectuées sur un OnePlus 6 exécutant la dernière version bêta d’OxygenOS Android Pie.

  1. Activez les options du développeur dans l’application Paramètres, puis accédez à l’option «Suivi du système» de la section «Débogage» des Options du développeur.

  2. À l'ouverture du suivi du système, une bascule permettant d'activer le suivi du système vous sera présentée, ainsi que la possibilité de personnaliser les catégories de suivi et la taille de la mémoire tampon des suivis. Pour cette démonstration, les catégories par défaut sont utilisées, ce qui suffit dans la plupart des cas. Une bascule «Afficher les paramètres rapides» permet de lancer / arrêter le traçage via Paramètres rapides. J'ai activé ceci pour ce guide.

  3. Pour commencer à capturer une trace, appuyez sur la vignette de paramètres rapides «Enregistrer trace» récemment ajoutée.

  4. Lorsque vous avez terminé le traçage d'un scénario de test, vous pouvez arrêter le traçage à partir de l'ombre de la notification.

  5. Génial! Vous avez capturé avec succès une trace brute. Une notification vous invitera à partager le fichier de trace brut. Vous devriez pouvoir l’enregistrer sur votre appareil, le télécharger sur un stockage en ligne, l’envoyer par courrier électronique à une personne, etc. Sinon, vous pouvez utiliser ADB pour extraire directement la trace de votre appareil sur votre ordinateur ( adb pull /data/local/traces/ ). Allez-y et sauvegardez le fichier de trace sur votre ordinateur.

  6. Le fichier de trace brut a le format .ctrace créé. Il ne peut être interprété sous sa forme brute. Nous pouvons utiliser systrace pour générer un rapport HTML interactif plus utile et plus compréhensible à partir de notre fichier de trace brut.

  7. Nous utiliserons la dernière version de systrace du compte de projet catapult. Dans une application de terminal, clonez le référentiel (assurez-vous que git est installé):
     git clone //github.com/catapult-project/catapult.git 
  8. Pour générer le rapport HTML à partir de notre fichier de trace brut à l'aide de systrace, entrez les commandes suivantes:
     python2 catapult/systrace/bin/systrace --from-file= 

    Un fichier HTML portant le même nom que le fichier de trace brut sera généré. Remarque: systrace ne prend en charge que Python 2 au moment de la rédaction.

  9. Pour afficher le rapport HTML, lancez le navigateur Google Chrome et accédez à l'URL «chrome: // traçage». N'ouvrez pas le rapport HTML directement dans Google Chrome, car il apparaîtrait vide.

  10. Cliquez sur «Charger» et ouvrez le fichier de rapport HTML à partir de la boîte de dialogue contextuelle. Voila! Votre rapport de trace est maintenant disponible pour inspection.

Et après?

Maintenant que vous pouvez capturer une trace et générer un rapport systrace, il est important de comprendre comment lire et interpréter les données présentées dans le rapport. Pour commencer, je vous recommande de lire «Comprendre Systrace », et de consulter «Performances Android: aperçu (Google I / O '17)» et « Systrace pour les jeux» pour voir systrace en action.

Ceci est un article d'invité qui a été écrit à l'origine par Josh Choo, également connu sous le nom de développeur reconnu joshuous. Le message a été légèrement modifié pour le formatage.