perfetto
ist ein Tool, mit dem Sie Leistungsinformationen von Android-Geräten über die Android Debug Bridge (ADB) erfassen können. Rufen Sie das perfetto
-Tool mit dem Befehl adb shell perfetto ...
auf.
perfetto
verwendet verschiedene Quellen, um Leistungs-Traces von Ihrem Gerät zu erfassen, z. B.:
ftrace
für Informationen vom Kernelatrace
für Anmerkungen zum Nutzerbereich in Diensten und Appsheapprofd
für Informationen zur Nutzung des nativen Arbeitsspeichers von Diensten und Apps
Auf dieser Seite wird beschrieben, wie Sie perfetto
aufrufen und so konfigurieren, dass die gewünschte Ausgabe generiert wird. Weitere Informationen finden Sie in der Dokumentation zu perfetto
.
Syntax
In diesem Abschnitt wird beschrieben, wie Sie ADB verwenden, um perfetto
für verschiedene Modi aufzurufen und einen Trace zu generieren.
Auswahl der Datenquelle
perfetto
enthält die folgenden zwei Modi, die die Datenquellen bestimmen, die zum Aufzeichnen des Trace verwendet werden:
- Heller Modus: Sie können nur einen Teil der Datenquellen auswählen, insbesondere
atrace
undftrace
. Dieser Modus bietet jedoch eine ähnliche Schnittstelle wiesystrace
. - Normaler Modus: Die Konfiguration erfolgt in einem Protokollpuffer. Sie können dann mehr Funktionen von
perfetto
nutzen, wenn Sie andere Datenquellen alsatrace
undftrace
verwenden.
Allgemeine Optionen
In der folgenden Tabelle sind die verfügbaren Optionen aufgeführt, wenn perfetto
in einem der beiden Modi verwendet wird:
Option | Beschreibung |
---|---|
--background |
|
perfetto beendet sofort die Befehlszeile und fährt mit der Aufzeichnung des Trace im Hintergrund fort. |
--background-wait | -D
|
Wie --background , wird jedoch mit einer Wartezeit von bis zu 30 Sekunden beendet, bis alle Datenquellen gestartet sind. Der Exit-Code ist null, wenn eine erfolgreiche Bestätigung empfangen wird, und andernfalls nicht null (Fehler oder Zeitlimit).
|
--alert-id
|
ID der Benachrichtigung, die dieses Trace ausgelöst hat. |
--config-id
|
ID der Triggerkonfiguration. |
--config-uid
|
UID der App, über die die Konfiguration registriert wurde. |
--subscription-id
|
ID des Abos, das dieses Trace ausgelöst hat. |
--out OUT_FILE |
|
Gibt den gewünschten Pfad zur Trace-Ausgabedatei oder Hinweis: Sie müssen den vollständigen Pfadnamen der Ausgabedatei angeben. Normalerweise sollten die Dateien in den Ordner |
--upload
|
Übergibt den Trace nach Abschluss an das in der IncidentReportConfig -Nachricht in der Proto-Trace-Konfiguration angegebene Paket. |
--no-guardrails
|
Deaktiviert den Schutz vor übermäßiger Ressourcennutzung, wenn das Flag --upload während des Tests aktiviert wird. |
--reset-guardrails
|
Setzt den dauerhaften Status der Schutzmaßnahmen und Exits zu Testzwecken zurück. |
--rsave-for-bugreport
|
Wird ein Trace mit bugreport_score > 0 ausgeführt, wird der Trace in einer Datei gespeichert. Gibt den Pfad aus, wenn der Vorgang abgeschlossen ist.
|
--query
|
Fragt den Dienststatus ab und gibt ihn als menschenlesbaren Text aus. |
--query-raw
|
Ähnlich wie --query , gibt aber proto-codierte Rohbyte von tracing_service_state.proto. aus |
--help | -h
|
Gibt Hilfetext für das perfetto -Tool aus.
|
Heller Modus
Die allgemeine Syntax für die Verwendung von perfetto
im hellen Modus lautet:
adb shell perfetto [ --time TIMESPEC ] [ --buffer SIZE ] [ --size SIZE ] [ ATRACE_CAT | FTRACE_GROUP/FTRACE_NAME | FTRACE_GROUP/* ]... --out FILE
In der folgenden Tabelle sind die verfügbaren Optionen aufgeführt, wenn perfetto
im hellen Modus verwendet wird:
Option | Beschreibung |
---|---|
--time TIME[s|m|h] |
|
Gibt die Trace-Dauer in Sekunden, Minuten oder Stunden an.
Zum Beispiel gibt --time 1m eine Trace-Dauer von 1 Minute an.
Die Standarddauer beträgt 10 Sekunden.
|
--buffer SIZE[mb|gb] |
|
Gibt die Größe des Ringpuffers in Megabyte (MB) oder Gigabyte (GB) an.
Der Standardparameter ist --buffer 32mb .
|
--size SIZE[mb|gb] |
|
Gibt die maximale Dateigröße in Megabyte (MB) oder Gigabyte (GB) an. Standardmäßig verwendet perfetto nur Ringzwischenspeicher im Arbeitsspeicher.
|
--app | -a
|
Name der Android-App (atrace) |
Auf diese Optionen folgt eine Liste der Ereignisspezifizierer:
Veranstaltung | Beschreibung |
---|---|
ATRACE_CAT |
Gibt die atrace -Kategorien an, für die Sie ein Trace aufzeichnen möchten.
Der folgende Befehl verfolgt beispielsweise den Fenstermanager mit atrace :
adb shell perfetto --out FILE wm
Informationen zum Erfassen weiterer Kategorien finden Sie in dieser Liste der |
FTRACE_GROUP/FTRACE_NAME |
Gibt die ftrace -Ereignisse an, für die Sie ein Trace aufzeichnen möchten.
Der folgende Befehl verfolgt beispielsweise sched/sched_switch -Ereignisse:
adb shell perfetto --out FILE sched/sched_switch |
Normaler Modus
Die allgemeine Syntax für die Verwendung von perfetto
im normalen Modus sieht so aus:
adb shell perfetto [ --txt ] --config CONFIG_FILE --out FILE
In der folgenden Tabelle sind die verfügbaren Optionen aufgeführt, wenn perfetto
im Normalmodus verwendet wird:
Option | Beschreibung |
---|---|
--config CONFIG_FILE | -c CONFIG_FILE
|
Gibt den Pfad zu einer Konfigurationsdatei an. Im normalen Modus können einige Konfigurationen in einem Konfigurationsprotokollpuffer codiert sein. Diese Datei muss dem Protokollpufferschema entsprechen, das in AOSP trace_config.proto definiert ist.
Wählen und konfigurieren Sie die Datenquellen mit dem |
--txt
|
Weist perfetto an, die Konfigurationsdatei als pbtxt zu parsen. Dieses Flag ist nur für lokale Tests vorgesehen und sollte nicht für die Produktion aktiviert werden. |
Unterstützte Datenquellen
In diesem Abschnitt werden die verschiedenen Quellen beschrieben, die perfetto
zum Generieren des Trace verwendet.
Ftrace
Mit der Datenquelle ftrace
kann perfetto
Ereignisse aus dem Kernel abrufen.
Aktivieren Sie diese Quelle, indem Sie ftrace_config
in der DataSourceConfig festlegen.
Folgende Ereignisse können aktiviert werden:
-
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
Dateisystemereignisse:
Je nach Gerät, Betriebssystemversion oder Kernel sind möglicherweise weitere Ereignisse verfügbar. Weitere Informationen finden Sie unter config protos.
Prozessstatistiken
Mit der Datenquelle für Prozessstatistiken können Sie abgefragte Zähler zum System und zu einzelnen Prozessen abrufen.
Aktivieren Sie diese Quelle, indem Sie process_stats_config
und sys_stats_config
in der DataSourceConfig festlegen.
Zu den von perfetto
generierten Daten gehören:
-
/proc/meminfo
/proc/vmstat
/proc/stat
-
/proc/\<pid\>/status
/proc/\<pid\>/oom_score_adj
Je nach Gerät, Betriebssystemversion und Kernel sind möglicherweise weitere Ereignisse verfügbar. Weitere Informationen finden Sie in den Konfigurationsprotos für sys_stats
und process_stats
.
heapprofd
Mit heapprofd
können Sie die Ursachen der nativen Arbeitsspeichernutzung ermitteln.
Aktivieren Sie diese Quelle, indem Sie heapprofd_config
in der DataSourceConfig festlegen. Mit dieser Einstellung wird ProfilePackets
erstellt, einschließlich der Java-Frames des Aufrufstacks.
Weitere Informationen zur Verwendung von heapprofd
finden Sie unter perfetto.dev
.
Andere Quellen
Je nach Gerät, Betriebssystemversion und Kernel sind möglicherweise weitere Datenquellen verfügbar. Weitere Informationen finden Sie unter Konfigurationsprotokolle für Datenquellen.
Weitere Informationen zu perfetto
finden Sie unter perfetto.dev.