perfetto
est un outil qui vous permet de collecter des informations sur les performances des appareils Android via Android Debug Bridge (ADB). Appelez l'outil perfetto
à l'aide de la commande adb shell perfetto ...
.
perfetto
utilise différentes sources pour collecter des traces de performance sur votre appareil, par exemple :
ftrace
pour les informations du noyauatrace
pour l'annotation de l'espace utilisateur dans les services et les applicationsheapprofd
pour les informations sur l'utilisation de la mémoire native des services et des applications
Cette page explique comment appeler perfetto
et le configurer pour générer la sortie souhaitée. Pour en savoir plus, consultez la documentation sur perfetto
.
Syntaxe
Cette section explique comment utiliser ADB pour appeler perfetto
pour différents modes et comment générer une trace.
Sélection d'une source de données
perfetto
inclut les deux modes suivants qui déterminent les sources de données utilisées pour enregistrer votre trace :
- Light mode (Mode clair) : ne peut sélectionner qu'un sous-ensemble de sources de données, en particulier
atrace
etftrace
. Cependant, il offre une interface semblable àsystrace
. - Normal mode (Mode normal) : récupère sa configuration dans un tampon de protocole et vous permet de tirer pleinement parti des fonctionnalités de
perfetto
en utilisant des sources de données autres qu'atrace
etftrace
.
Options générales
Le tableau suivant indique les options disponibles lorsque vous utilisez perfetto
dans les deux modes :
Option | Description |
---|---|
--background |
|
perfetto quitte immédiatement l'interface de ligne de commande et continue à enregistrer la trace en arrière-plan. |
--background-wait | -D
|
Semblable à --background , mais attend (jusqu'à 30 s) que toutes les sources de données démarrent avant de se fermer. Le code de sortie est zéro en cas de confirmation reçue, ou non nul dans les autres circonstances (en cas d'erreur ou de délai d'inactivité).
|
--alert-id
|
ID de l'alerte ayant déclenché cette trace. |
--config-id
|
ID de la configuration de déclenchement. |
--config-uid
|
UID de l'application qui a enregistré la configuration. |
--subscription-id
|
ID de l'abonnement qui a déclenché cette trace. |
--out OUT_FILE |
|
Indique le chemin d'accès souhaité au fichier de suivi de sortie, ou Remarque : Vous devez spécifier le chemin d'accès complet du fichier de sortie. En règle générale, les fichiers doivent être écrits dans le dossier |
--upload
|
Une fois l'opération terminée, la trace est transmise au package spécifié par le message IncidentReportConfig dans la configuration de la trace proto. |
--no-guardrails
|
Désactive les protections contre une utilisation excessive des ressources quand l'option --upload est activée lors des tests. |
--reset-guardrails
|
Réinitialise l'état persistant des garde-fous et des sorties (à des fins de test). |
--rsave-for-bugreport
|
Si une trace pour laquelle bugreport_score est supérieur à 0 est en cours d'exécution, elle est enregistrée dans un fichier. Affiche le chemin d'accès une fois l'opération terminée.
|
--query
|
Interroge l'état du service et l'affiche sous forme de texte lisible. |
--query-raw
|
Semblable à --query , mais affiche les octets bruts encodés en proto de tracing_service_state.proto. . |
--help | -h
|
Affiche le texte d'aide de l'outil perfetto .
|
Mode clair
La syntaxe générale d'utilisation de perfetto
en mode clair est la suivante :
adb shell perfetto [ --time TIMESPEC ] [ --buffer SIZE ] [ --size SIZE ] [ ATRACE_CAT | FTRACE_GROUP/FTRACE_NAME | FTRACE_GROUP/* ]... --out FILE
Le tableau suivant indique les options disponibles lors de l'utilisation de perfetto
en mode clair.
Option | Description |
---|---|
--time TIME[s|m|h] |
|
Indique la durée de la trace en secondes, minutes ou heures.
Par exemple, --time 1m spécifie une durée de trace d'une minute.
La durée par défaut est de 10 secondes.
|
--buffer SIZE[mb|gb] |
|
Indique la taille de la mémoire tampon de l'anneau, en mégaoctets (Mo) ou en gigaoctets (Go).
Le paramètre par défaut est --buffer 32mb .
|
--size SIZE[mb|gb] |
|
Indique la taille maximale du fichier en mégaoctets (Mo) ou en gigaoctets (Go). Par défaut, perfetto n'utilise que la mémoire tampon de l'anneau en mémoire.
|
--app | -a
|
Nom de l'application Android (atrace) |
Ces options sont suivies d'une liste de spécificateurs d'événements :
Étape | Description |
---|---|
ATRACE_CAT |
Spécifie les catégories atrace pour lesquelles vous souhaitez enregistrer une trace.
Par exemple, la commande suivante effectue le suivi du gestionnaire de fenêtres à l'aide de atrace :
adb shell perfetto --out FILE wm
Pour enregistrer d'autres catégories, consultez la liste des catégories |
FTRACE_GROUP/FTRACE_NAME |
Spécifie les événements ftrace pour lesquels vous souhaitez enregistrer une trace.
Par exemple, la commande suivante permet de suivre les événements sched/sched_switch :
adb shell perfetto --out FILE sched/sched_switch |
Mode normal
La syntaxe générale de l'utilisation de perfetto
en mode normal est la suivante :
adb shell perfetto [ --txt ] --config CONFIG_FILE --out FILE
Le tableau suivant indique les options disponibles lors de l'utilisation de perfetto
en mode normal.
Option | Description |
---|---|
--config CONFIG_FILE | -c CONFIG_FILE
|
Indique le chemin d'accès à un fichier de configuration. En mode normal, certaines configurations peuvent être encodées dans un tampon de protocole de configuration. Ce fichier doit être conforme au schéma de tampon de protocole défini dans AOSP trace_config.proto .
Sélectionnez et configurez les sources de données à l'aide du membre |
--txt
|
Ordonne à perfetto d'analyser le fichier de configuration au format pbtxt . Cette option est réservée aux tests locaux. Il est déconseillé de l'activer en production. |
Sources de données prises en charge
Cette section décrit les différentes sources que perfetto
utilise pour générer votre trace.
ftrace
La source de données ftrace
permet à perfetto
d'obtenir les événements du noyau.
Pour activer cette source, définissez ftrace_config
dans DataSourceConfig.
Vous pouvez activer les événements suivants :
-
sched/sched_switch
sched/sched_wakeup
sched/sched_wakeup_new
sched/sched_process_exec
sched/sched_process_exit
sched/sched_process_fork
sched/sched_process_free
sched/sched_process_hang
sched/sched_process_wait
Événements du système de fichiers :
Selon votre appareil, la version de l'OS ou le noyau, d'autres événements peuvent être disponibles. Pour en savoir plus, consultez les fichiers proto de configuration.
Statistiques de traitement
La source de données de statistiques de traitement vous permet d'interroger des compteurs sur le système et des processus individuels.
Pour activer cette source, définissez process_stats_config
et sys_stats_config
dans DataSourceConfig.
Les données générées par perfetto
incluent :
-
/proc/meminfo
/proc/vmstat
/proc/stat
-
/proc/\<pid\>/status
/proc/\<pid\>/oom_score_adj
Selon votre appareil, la version de l'OS et le noyau, d'autres événements peuvent être disponibles. Pour en savoir plus, reportez-vous aux protos de configuration pour sys_stats
et process_stats
.
heapprofd
heapprofd
vous permet d'identifier les causes d'utilisation de la mémoire native.
Pour activer cette source, définissez heapprofd_config
dans DataSourceConfig. Ce paramètre génère ProfilePackets
, y compris les frames Java de la pile d'appels.
Pour en savoir plus sur l'utilisation de heapprofd
, consultez perfetto.dev
.
Autres sources
Selon votre appareil, la version de l'OS et le noyau, d'autres sources de données peuvent être disponibles. Pour en savoir plus, reportez-vous aux fichiers proto de configuration des sources de données.
Vous trouverez des informations supplémentaires sur perfetto
sur perfetto.dev.