Perfetto

perfetto ist ein Tool, mit dem Sie Leistungsinformationen von Android-Geräte über das Android Debug Bridge (ADB): Rufen Sie die Methode perfetto-Tool mit dem Befehl adb shell perfetto .... perfetto verwendet verschiedene Quellen zur Erfassung von Leistungs-Traces von Ihrem Gerät, z. B.:

  • ftrace für Informationen vom Kernel
  • atrace für die Anmerkung zum Nutzerbereich in Diensten und Apps
  • heapprofd für Informationen zur nativen Arbeitsspeichernutzung von Diensten und Apps

Auf dieser Seite wird beschrieben, wie Sie perfetto aufrufen und so konfigurieren, dass die Methode gewünschte Ausgabe. Weitere Informationen finden Sie in der Dokumentation zu perfetto

Syntax

In diesem Abschnitt wird beschrieben, wie du mit ADB perfetto für verschiedene Modi aufrufen kannst und generieren einen Trace.

Auswahl der Datenquelle

perfetto enthält die folgenden zwei Modi, die die Datenquellen bestimmen wird der Trace damit aufgezeichnet:

  • Heller Modus: Es können nur bestimmte Datenquellen ausgewählt werden, insbesondere atrace. und ftrace. Dieser Modus bietet jedoch eine Oberfläche, die systrace
  • Normalmodus: Die Konfiguration erfolgt in einem Protokollzwischenspeicher. Nutzen Sie mehr Funktionen von perfetto, indem Sie Datenquellen von atrace und ftrace.

Allgemeine Optionen

In der folgenden Tabelle sind die verfügbaren Optionen aufgeführt, wenn Sie perfetto in einem der folgenden Typen verwenden: Modus:

Tabelle 1 Liste der verfügbaren allgemeinen Perfetto-Tool-Optionen.

Option Beschreibung
--background |
-d
perfetto beendet sofort die Befehlszeile und fährt fort den Trace im Hintergrund aufzeichnen.
--background-wait | -D Wie --background, aber es wird bis zu 30 Sekunden gewartet die vor dem Schließen gestartet werden sollen. Beenden ist Null, wenn eine erfolgreiche Bestätigung empfangen, andernfalls nicht Null (Fehler oder Zeitüberschreitung).
--alert-id ID der Benachrichtigung, die diesen Trace ausgelöst hat.
--config-id ID der auslösenden Konfiguration.
--config-uid UID der App, in der die Konfiguration registriert wurde.
--subscription-id ID des Abos, das diesen Trace ausgelöst hat.
--out OUT_FILE |
-o OUT_FILE

Gibt den gewünschten Pfad zur Trace-Ausgabedatei oder zu - für stdout an. perfetto schreibt die Ausgabe in die Datei, die im vorherigen Flags. Das Ausgabeformat wird mit dem Format kompiliert, das in AOSP trace.proto.

Hinweis: Sie müssen den vollständigen Pfadnamen des Ausgabedatei. Normalerweise sollten die Dateien im Ordner „/data/misc/perfetto-traces“.

--upload Übergibt den Trace nach Abschluss an das Paket, das durch die IncidentReportConfig-Nachricht in der Proto-Trace-Konfiguration.
--no-guardrails Deaktiviert den Schutz vor übermäßiger Ressourcennutzung beim Aktivieren der Das Flag --upload während des Tests.
--reset-guardrails Setzt den persistenten Status der Schutzmaßnahmen und Exits für Tests zurück.
--rsave-for-bugreport Wenn ein Trace mit bugreport_score > 0 läuft, speichert den Trace in einer Datei. Gibt den Pfad nach Abschluss aus.
--query Fragt den Dienststatus ab und gibt ihn als menschenlesbaren Text aus.
--query-raw Ähnlich wie --query, gibt jedoch Proto-codierte Rohbyte von Byte aus tracing_service_state.proto.
--help | -h Druckt einen Hilfetext für das perfetto-Tool aus.

Heller Modus

Die allgemeine Syntax für die Verwendung von perfetto im hellen Modus lautet so:

 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 bei Verwendung von perfetto in heller Modus:

Tabelle 2: Liste der verfügbaren perfetto im hellen Modus.

Option Beschreibung
--time TIME[s|m|h] |
-t TIME[s|m|h]
Gibt die Trace-Dauer in Sekunden, Minuten oder Stunden an. Beispielsweise gibt --time 1m eine Trace-Dauer von 1 Minute an. Die Standarddauer beträgt 10 Sekunden.
--buffer SIZE[mb|gb] |
-b 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] |
-s SIZE[mb|gb]
Gibt die maximale Dateigröße in Megabyte (MB) oder Gigabyte (GB) an. Von Standardmäßig verwendet perfetto nur einen Ringpuffer im Arbeitsspeicher.
--app | -a Name der Android-App (atrace)

Diesen Optionen folgt eine Liste von Ereignisspezifizierern:

Tabelle 3 Liste der Ereignisspezifizierer für heller Modus.

Veranstaltung Beschreibung
ATRACE_CAT Gibt die atrace-Kategorien an, für die Sie einen Trace aufzeichnen möchten. Der folgende Befehl verfolgt beispielsweise den Fenstermanager mit atrace:
    adb shell perfetto --out FILE wm
    

Informationen zum Aufzeichnen anderer Kategorien findest du hier: Liste von atrace Kategorien.

FTRACE_GROUP/FTRACE_NAME Gibt die ftrace-Ereignisse an, für die Sie einen Trace aufzeichnen möchten. Der folgende Befehl erfasst 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 lautet so:

 adb shell perfetto [ --txt ] --config CONFIG_FILE --out FILE

In der folgenden Tabelle sind die verfügbaren Optionen bei Verwendung von perfetto in Normaler Modus:

Tabelle 4 Liste der verfügbaren perfetto im normalen Modus.

Option Beschreibung
--config CONFIG_FILE | -c CONFIG_FILE Gibt den Pfad zu einer Konfigurationsdatei an. Im normalen Modus werden Konfigurationen in einem Konfigurationsprotokollzwischenspeicher codiert werden können. Diese Datei muss dem Protokollpufferschema entsprechen, das in AOSP trace_config.proto.

Wählen und konfigurieren Sie die Datenquellen mithilfe der DataSourceConfig Mitglied von TraceConfig, als definiert in AOSP data_source_config.proto.

--txt Weist perfetto an, die Konfigurationsdatei als pbtxt zu parsen. Dieses Das Flag ist nur für lokale Tests vorgesehen. Es wird nicht empfohlen, für die Produktion aktivieren.

Unterstützte Datenquellen

In diesem Abschnitt werden die verschiedenen Quellen beschrieben, die perfetto zum Generieren von Ihren Trace.

ftrace

Mit der Datenquelle ftrace kann perfetto Ereignisse aus dem Kernel abrufen.

Diese Quelle durch Einstellung aktivieren ftrace_config in DataSourceConfig.

Folgende Ereignisse können aktiviert werden:

  • Aktivität planen:

    • 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:

  • atrace Ereignisse

Je nach Gerät, Betriebssystemversion oder Kernel können weitere Ereignisse verfügbar. Weitere Informationen finden Sie in den Konfigurationsprotokollen.

Prozessstatistiken

Mit der Datenquelle „Prozessstatistiken“ können Sie abgefragte Zähler zum und einzelnen Prozessen.

Aktivieren Sie diese Quelle, indem Sie process_stats_config festlegen und sys_stats_config in DataSourceConfig.

Zu den von perfetto generierten Daten gehören:

  • Systemweit

    • /proc/meminfo
    • /proc/vmstat
    • /proc/stat
  • Pro Prozess

    • /proc/\<pid\>/status
    • /proc/\<pid\>/oom_score_adj

Je nach Gerät, Betriebssystemversion und Kernel können weitere Ereignisse verfügbar. Weitere Informationen finden Sie in den Konfigurationsprotokollen für sys_stats. und process_stats.

heapprofd

Mit heapprofd können Sie die Ursachen der nativen Speichernutzung abfragen.

Aktivieren Sie diese Quelle, indem Sie heapprofd_config festlegen in DataSourceConfig. Diese Einstellung erzeugt ProfilePackets, 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 werden möglicherweise weitere Datenquellen verfügbar. Weitere Informationen finden Sie im Konfigurationsprotokolle für Datenquellen.

Weitere Informationen zu perfetto finden Sie unter perfetto.dev implementieren.