Sammeln Sie Leistungsdaten

Der native Watchdog-Dienst zeichnet E/A-Leistungsdaten seit der frühen Initialisierung beim Systemstart auf. Der native Dienst gibt die gesammelten Leistungsdaten im Fehlerbericht aus. Anbieter können den nativen Dienst über dumpsys abfragen, um entweder die gesammelten Daten zu sichern oder eine benutzerdefinierte Sammlungssitzung zum Debuggen zu starten.

Häufigkeit der Datenerfassung

Die Häufigkeit der Leistungsdatenerfassung variiert je nach Build-Typ.

  • Bei Userdebug- oder Eng-Builds sammelt Watchdog einmal alle eine (1) Sekunde Leistungsdaten während des Systemstarts und einmal alle eine (1) Minute nach Abschluss des Bootvorgangs.
  • Bei Benutzer-Builds erfasst Watchdog einmal alle 20 Sekunden während des Systemstarts und alle zwei (2) Minuten nach Abschluss eines Bootvorgangs Leistungsdaten.

Leistungsdaten ausgeben

Wenn ein Fehlerbericht erfasst wird, speichert der native Watchdog-Dienst die gesammelten Leistungsdaten im Fehlerbericht. Anbieter können den nativen Dienst über den folgenden dumpsys-Befehl abfragen, um die gesammelten Leistungsdaten auszugeben. Einzelheiten zum Bericht finden Sie im Abschnitt „Verstehen des Leistungsdatenberichts“ .

$ adb shell dumpsys android.automotive.watchdog.ICarWatchdog/default > /tmp/carwatchdog_dump.txt

Sammeln Sie Leistungsdaten zum Debuggen

Anbieter können den nativen Watchdog-Dienst nutzen, um Leistungsdaten für Debugging-Zwecke individuell zu erfassen. Um beispielsweise die E/A-Nutzung einer App oder eines Dienstes zu verstehen, können Anbieter eine benutzerdefinierte Leistungsdatenerfassung durchführen, die ein Profil der E/A-Nutzung entweder einer bestimmten Liste von Paketen oder des gesamten Systems erstellt.

Starten Sie die Sitzung zur benutzerdefinierten Sammlung

Unten sehen Sie den Befehl zum Starten einer benutzerdefinierten Sitzung zur Erfassung von Leistungsdaten:

$ adb shell dumpsys android.automotive.watchdog.ICarWatchdog/default --start_perf [--interval <seconds>] [--max_duration <seconds>] [--filter_packages <package_name>,<package_name>,...]
  • --start_perf . Startet eine benutzerdefinierte Sitzung zur Erfassung von Leistungsdaten.
  • --interval <seconds> . Gibt das Profilierungsintervall an. Standardmäßig beträgt das Intervall 30 Sekunden.
  • --max_duration <seconds> . Gibt die maximale Dauer der benutzerdefinierten Leistungsdatenerfassungssitzung an. Wenn die Sitzung nicht manuell beendet wird, wird die Sitzung beendet und die gesammelten Daten werden nach dieser Dauer verworfen. Standardmäßig beträgt die maximale Dauer 30 Minuten.
  • --filter_packages <package_name>,<package_name>,... . Gibt eine durch Kommas getrennte Liste von Paketnamen für die Profilierung an. Sofern bereitgestellt, ist die Leistungsdatenerfassung auf diese Pakete beschränkt. Andernfalls erfolgt die Erfassung der Leistungsdaten für alle Pakete im System.

Der folgende Befehl startet beispielsweise eine benutzerdefinierte Leistungsdatenerfassung mit einem Profilierungsintervall von 10 seconds , einer maximalen Erfassungsdauer von 1 hour und beschränkt die Profilerstellung auf com.google.android.car.kitchensink und com.google.android.apps.maps Pakete.

$ adb shell dumpsys android.automotive.watchdog.ICarWatchdog/default --start_perf --interval 10 --max_duration 3600 --filter_packages com.google.android.car.kitchensink,com.google.android.apps.maps

Stoppen Sie die benutzerdefinierte Sammlungssitzung und löschen Sie sie

Nach der Aufzeichnung der E/A-Nutzung einer App oder eines Dienstes von Interesse sollten Anbieter die Sitzung zur benutzerdefinierten Leistungsdatenerfassung beenden, um die gesammelten Daten zu sichern.

Der folgende Befehl stoppt die benutzerdefinierte Leistungsdatenerfassung und speichert die gesammelten Daten in /tmp/carwatchdog_dump.txt :

$ adb shell dumpsys android.automotive.watchdog.ICarWatchdog/default --stop-perf > /tmp/carwatchdog_custom_dump.txt

Dumpsys-Hilfe

$ adb shell dumpsys android.automotive.watchdog.ICarWatchdog/default --help

Verstehen Sie den Leistungsdatenbericht

Unten sehen Sie ein Beispiel für einen Leistungsdatenbericht:

$ adb shell dumpsys android.automotive.watchdog.ICarWatchdog/default

------------------------------
WatchdogPerfService report:
------------------------------
Boot-time collection information:
==========================
Event interval: 1 second

Periodic collection information:
=========================
Event interval: 60 seconds
--------------------------------
Boot-time I/O performance report:
============================
Collection duration: 1637609138 seconds
Number of collections: 12

Collection 0: <Fri Jan  7 19:53:53 2022 GMT>
===================================
CPU I/O wait time/percent: 18 / 0.63%
Number of I/O blocked processes/percent: 0 / 0.00%

Top N Reads:
-------------
Android User ID, Package Name, Foreground Bytes, Foreground Bytes %, Foreground Fsync, Foreground Fsync %, Background Bytes, Background Bytes %, Background Fsync, Background Fsync %
0, root, 56123392, 81.95%, 1, 100.00%, 0, 0.00%, 0, 0.00%
0, system, 12333056, 18.01%, 0, 0.00%, 0, 0.00%, 0, 0.00%

Top N Writes:
-------------
Android User ID, Package Name, Foreground Bytes, Foreground Bytes %, Foreground Fsync, Foreground Fsync %, Background Bytes, Background Bytes %, Background Fsync, Background Fsync %
0, root, 53248, 100.00%, 1, 100.00%, 0, 0.00%, 0, 0.00%

Top N I/O waiting UIDs:
-----------------------
Android User ID, Package Name, Number of owned tasks waiting for I/O, Percentage of owned tasks waiting for I/O
        Command, Number of I/O waiting tasks, Percentage of UID's tasks waiting for I/O
0, root, 2, 0.59%
        kworker/7:2+events, 1, 50.00%
        kworker/4:2+events, 1, 50.00%
0, system, 2, 7.14%
        ais_server, 2, 100.00%

Top N major page faults:
------------------------
Android User ID, Package Name, Number of major page faults, Percentage of total major page faults
        Command, Number of major page faults, Percentage of UID's major page faults
0, system, 48, 53.33%
        ais_server, 13, 27.08%
        audiod, 10, 20.83%
0, root, 41, 45.56%
        init, 39, 95.12%
        ueventd, 1, 2.44%
0, media, 1, 1.11%
        init.qti.media., 1, 100.00%
Number of major page faults since last collection: 90
Percentage of change in major page faults since last collection: 0.00%

Collection 1: <Fri Jan  7 19:53:54 2022 GMT>
===================================
 … Collection data …

Collection 2: <Fri Jan  7 19:53:55 2022 GMT>
===================================
 … Collection data …
 … Repeated collection data until boot-complete …

-----------------------------------------
Last N minutes I/O performance report:
================================
Collection duration: 10797 seconds
Number of collections: 181

Collection 0: <Tue Jan 11 19:43:05 2022 GMT>
====================================
CPU I/O wait time/percent: 18 / 0.04%
Number of I/O blocked processes/percent: 0 / 0.00%

Top N Writes:
-------------
Android User ID, Package Name, Foreground Bytes, Foreground Bytes %, Foreground Fsync, Foreground Fsync %, Background Bytes, Background Bytes %, Background Fsync, Background Fsync %
0, system, 33697792, 92.41%, 0, 0.00%, 0, 0.00%, 0, 0.00%
0, gps, 2420736, 6.64%, 0, 0.00%, 0, 0.00%, 0, 0.00%

Top N I/O waiting UIDs:
-----------------------
Android User ID, Package Name, Number of owned tasks waiting for I/O, Percentage of owned tasks waiting for I/O
        Command, Number of I/O waiting tasks, Percentage of UID's tasks waiting for I/O
0, root, 1, 0.19%
        crtc_commit:244, 1, 100.00%

Beim Erfassen eines Fehlerberichts, beim Ausführen eines Watchdog-Dumpsys-Befehls ohne Argumente oder beim Beenden einer benutzerdefinierten Erfassungssitzung erstellt der native Watchdog-Dienst einen Leistungsdatenbericht ähnlich dem oben genannten Bericht.

Der Bericht enthält Daten, die während des Systemstarts und der letzten N Minuten vor der Berichterstellung erfasst wurden.

  • Boot-time collection information . Stellt Informationen über die Sitzung zur Erfassung der Startleistungsdaten bereit.
  • Periodic collection information . Stellt Informationen zur regelmäßigen Leistungserfassungssitzung bereit, die nach Abschluss des Startvorgangs beginnt.
  • Boot-time I/O performance report . Enthält Leistungsdaten, die während des Systemstarts erfasst werden. Diese Daten bleiben bis zum Herunterfahren des Systems im Speicher erhalten, sodass die Daten in allen Berichten gespeichert werden.
  • Last N minutes I/O performance report . Enthält Leistungsdaten, die (von der regelmäßigen Erfassungssitzung) während der letzten N Minuten vor der Berichtserstellung erfasst wurden.
  • Collection duration . Gesamtdauer der Leistungsdatenerfassung.
  • Number of collections . Gesamtzahl der in einem einzelnen Bericht gemeldeten Sammlungen.

Jede im Bericht gemeldete Sammlung kann alle oder einige der folgenden Abschnitte enthalten. Bei den in jeder Sammlung gemeldeten Statistiken handelt es sich um das Delta seit der letzten Sammlung, mit Ausnahme der Statistiken, die unmittelbar sind (z. B. seit dem Systemstart nicht aggregiert).

  • CPU I/O wait time/percent . Absolute CPU-Zeit und Prozentsatz der gesamten CPU-Zeit, die seit der letzten Erfassung für Kontextwechsel oder Warten aufgrund von E/A-Vorgängen aufgewendet wurde.
  • Number of I/O blocked processes/percent . Gesamtzahl der blockierten Prozesse, die auf E/A warten, und Prozentsatz der Prozesse, die seit der letzten Erfassung blockiert sind und auf E/A warten.
  • Top N Reads . Top-N-Pakete, die seit der letzten Sammlung die meisten Daten von der Festplatte gelesen haben.
    • Jede Zeile enthält die Benutzer-ID, den Paketnamen, die Gesamtzahl der im Vordergrundmodus vs. Hintergrundmodus gelesenen Bytes, den Prozentsatz der Bytes bei allen Lesevorgängen im Vordergrundmodus vs. Hintergrundmodus im System, die Gesamtzahl der im Vordergrundmodus vs. Hintergrundmodus durchgeführten fsync-Aufrufe, und Prozentsatz der Fsync-Aufrufe über alle im System getätigten Fsync-Aufrufe im Vordergrundmodus im Vergleich zum Hintergrundmodus.
  • Top N Writes . Top-N-Pakete, die seit der letzten Sammlung die meisten Daten auf die Festplatte geschrieben haben.
    • Jede Zeile enthält Felder, die denen von Top N Reads ähneln.
  • Top NI/O waiting UIDs . Top-N-Pakete mit den meisten E/A-Warteaufgaben.
    • Jede Zeile der obersten Ebene enthält die Benutzer-ID, Paketnamen, Anzahl und Prozentsatz der Aufgaben, die dem Paket gehören und auf E/A warten.
    • Zeilen auf innerer Ebene enthalten die E/A-Warteinformationen für die obersten Prozesse, die dem Paket gehören.
  • Top N major page faults . Top-N-Pakete mit den meisten schwerwiegenden Seitenfehlern seit der letzten Sammlung.
    • Jede Zeile der obersten Ebene enthält die Benutzer-ID, Paketnamen sowie die Anzahl und den Prozentsatz der schwerwiegenden Seitenfehler, die dem Paket zugeordnet sind.
    • Zeilen auf innerer Ebene enthalten die wichtigsten Seitenfehlerinformationen für die obersten Prozesse, die dem Paket gehören.
  • Number of major page faults since last collection .
  • Percentage of change in major page faults since last collection .