Sammeln von Leistungsdaten

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

Der native Watchdog-Dienst zeichnet E/A-Leistungsdaten seit der frühen Initialisierung während des Systemstarts 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 auszugeben oder eine benutzerdefinierte Sammlungssitzung zum Debuggen zu starten.

Häufigkeit der Datenerhebung

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

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

Leistungsdaten ausgeben

Wenn ein Fehlerbericht erfasst wird, gibt der native Watchdog-Dienst die gesammelten Leistungsdaten im Fehlerbericht aus. Anbieter können den nativen Dienst über den folgenden dumpsys-Befehl abfragen, um die gesammelten Leistungsdaten auszugeben. Einzelheiten zum Bericht finden Sie im Abschnitt zum Verständnis 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 verwenden, um Leistungsdaten für Debugging-Zwecke individuell zu erfassen. Um beispielsweise die E/A-Nutzung einer Anwendung oder eines Dienstes zu verstehen, können Anbieter eine benutzerdefinierte Leistungsdatenerfassung durchführen, die die E/A-Nutzung entweder einer bestimmten Liste von Paketen oder des gesamten Systems profiliert.

Starten Sie eine benutzerdefinierte Erfassungssitzung

Unten ist der Befehl zum Starten einer benutzerdefinierten Leistungsdatenerfassungssitzung dargestellt:

$ 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 Leistungsdatenerfassungssitzung.
  • --interval <seconds> . Gibt das Profilerstellungsintervall 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 das Profil an. Sofern bereitgestellt, ist die Erfassung von Leistungsdaten auf diese Pakete beschränkt. Andernfalls erfolgt die Erfassung der Leistungsdaten für alle Pakete im System.

Beispielsweise startet der folgende Befehl eine benutzerdefinierte Erfassung von Leistungsdaten mit einem Profilerstellungsintervall 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

Anhalten und Sichern der benutzerdefinierten Erfassungssitzung

Nach dem Aufzeichnen der E/A-Nutzung einer Anwendung oder eines Dienstes von Interesse sollten Anbieter die Sitzung zur Sammlung benutzerdefinierter Leistungsdaten beenden, um die gesammelten Daten zu speichern.

Der folgende Befehl stoppt die benutzerdefinierte Leistungsdatensammlung 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 helfen

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

Verstehen des Leistungsdatenberichts

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, Ausführen eines Watchdog-dumpsys-Befehls ohne Argumente oder Beenden einer benutzerdefinierten Erfassungssitzung gibt der native Watchdog-Dienst einen Leistungsdatenbericht ähnlich dem obigen Bericht aus.

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

  • Boot-time collection information . Stellt Informationen über die Sitzung zum Sammeln von Leistungsdaten beim Start bereit.
  • Periodic collection information . Stellt Informationen über die regelmäßige Leistungserfassungssitzung bereit, die nach Abschluss des Startvorgangs beginnt.
  • Boot-time I/O performance report . Enthält Leistungsdaten, die während des Systemstarts erfasst wurden. Diese Daten bleiben bis zum Herunterfahren des Systems dauerhaft im Speicher, sodass die Daten in allen Berichten abgelegt 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 Berichterstellung gesammelt 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. Die in jeder Sammlung gemeldeten Statistiken sind 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 für Kontextwechsel oder Wartezeiten aufgrund von E/A-Vorgängen seit der letzten Erfassung aufgewendet wurde.
  • Number of I/O blocked processes/percent . Gesamtzahl der Prozesse, die beim Warten auf E/A blockiert sind, und Prozentsatz der Prozesse, die seit der letzten Erfassung beim Warten auf E/A blockiert sind.
  • 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 im Vergleich zum Hintergrundmodus gelesenen Bytes, den Prozentsatz der Bytes für alle Lesevorgänge im Vordergrundmodus im Vergleich zum Hintergrundmodus im System, die Gesamtzahl der im Vordergrundmodus im Vergleich zum Hintergrundmodus getätigten fsync-Aufrufe. und Prozentsatz der fsync-Aufrufe über alle im System getätigten fsync-Aufrufe im Vordergrundmodus im Vergleich zu Hintergrundmodus-fsync-Aufrufen.
  • 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, das auf E/A wartet.
    • 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 Erfassung.
    • Jede Zeile der obersten Ebene enthält die Benutzer-ID, Paketnamen, Anzahl und Prozentsatz der schwerwiegenden Seitenfehler, die dem Paket zugeschrieben werden.
    • 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 .