Zbierz dane o wydajności

Natywna usługa Watchdog rejestruje dane dotyczące wydajności we/wy od wczesnego uruchomienia podczas uruchamiania systemu. Usługa natywna zrzuca zebrane dane dotyczące wydajności do raportu o błędzie. Dostawcy mogą wysyłać zapytania do usługi natywnej za pośrednictwem dumpsys, aby zrzucić zebrane dane lub rozpocząć niestandardową sesję zbierania w celu debugowania.

Częstotliwość gromadzenia danych

Częstotliwość gromadzenia danych dotyczących wydajności różni się w zależności od typu kompilacji.

  • W przypadku debugowania użytkownika lub kompilacji programistycznych Watchdog zbiera dane dotyczące wydajności co jedną (1) sekundę podczas uruchamiania systemu i co jedną (1) minutę po zakończeniu rozruchu.
  • W przypadku kompilacji użytkownika Watchdog zbiera dane dotyczące wydajności raz na 20 sekund podczas uruchamiania systemu i raz na dwie (2) minuty po zakończeniu rozruchu.

Zrzuć dane dotyczące wydajności

Po przechwyceniu raportu o błędzie natywna usługa Watchdog zrzuca zebrane dane dotyczące wydajności do raportu o błędzie. Dostawcy mogą wysyłać zapytania do usługi natywnej za pomocą poniższego polecenia dumpsys, aby zrzucić zebrane dane dotyczące wydajności. Szczegółowe informacje na temat raportu można znaleźć w sekcji Omówienie raportu danych dotyczących wydajności .

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

Zbieraj dane dotyczące wydajności na potrzeby debugowania

Dostawcy mogą korzystać z natywnej usługi Watchdog w celu niestandardowego gromadzenia danych o wydajności do celów debugowania. Na przykład, aby zrozumieć wykorzystanie we/wy aplikacji lub usługi, dostawcy mogą przeprowadzić niestandardowy zbiór danych dotyczących wydajności, który profiluje wykorzystanie we/wy określonej listy pakietów lub całego systemu.

Rozpocznij niestandardową sesję zbierania

Poniżej pokazano polecenie umożliwiające rozpoczęcie niestandardowej sesji gromadzenia danych dotyczących wydajności:

$ adb shell dumpsys android.automotive.watchdog.ICarWatchdog/default --start_perf [--interval <seconds>] [--max_duration <seconds>] [--filter_packages <package_name>,<package_name>,...]
  • --start_perf . Rozpoczyna niestandardową sesję gromadzenia danych dotyczących wydajności.
  • --interval <seconds> . Określa interwał profilowania. Domyślnie interwał wynosi 30 sekund.
  • --max_duration <seconds> . Określa maksymalny czas trwania sesji gromadzenia danych o niestandardowej wydajności. Jeśli sesja nie zostanie zatrzymana ręcznie, zostanie ona zatrzymana, a zebrane dane zostaną po upływie tego czasu usunięte. Domyślnie maksymalny czas trwania wynosi 30 minut.
  • --filter_packages <package_name>,<package_name>,... . Określa rozdzieloną przecinkami listę nazw pakietów do profilowania. Jeśli są dostępne, gromadzenie danych dotyczących wydajności jest ograniczone do tych pakietów. W przeciwnym razie zbieranie danych dotyczących wydajności odbywa się dla wszystkich pakietów w systemie.

Na przykład poniższe polecenie rozpoczyna zbieranie niestandardowych danych dotyczących wydajności z interwałem profilowania wynoszącym 10 seconds , maksymalnym czasem trwania gromadzenia wynoszącym 1 hour i ogranicza profilowanie do com.google.android.car.kitchensink i com.google.android.apps.maps pakiety com.google.android.apps.maps .

$ 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

Zatrzymaj i zrzuć sesję kolekcji niestandardowej

Po zarejestrowaniu użycia operacji we/wy w interesującej aplikacji lub usłudze dostawcy powinni przerwać sesję gromadzenia danych o niestandardowej wydajności, aby zrzucić zebrane dane.

Następujące polecenie zatrzymuje zbieranie niestandardowych danych dotyczących wydajności i zrzuca zebrane dane do /tmp/carwatchdog_dump.txt :

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

Dumppsy pomóżcie

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

Zapoznaj się z raportem danych dotyczących wydajności

Poniżej pokazano przykładowy raport z danymi dotyczącymi wydajności:

$ 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%

Podczas przechwytywania raportu o błędzie, uruchamiania polecenia dumpsys Watchdog bez żadnych argumentów lub zatrzymywania niestandardowej sesji zbierania, natywna usługa Watchdog zrzuca raport danych o wydajności podobny do powyższego raportu.

Raport zawiera dane zebrane podczas uruchamiania systemu i ostatnich N minut przed wygenerowaniem raportu.

  • Boot-time collection information . Zawiera informacje na temat sesji zbierania danych dotyczących wydajności w czasie rozruchu.
  • Periodic collection information . Zawiera informacje o okresowej sesji gromadzenia danych o wydajności, która rozpoczyna się po zakończeniu rozruchu.
  • Boot-time I/O performance report . Zawiera dane dotyczące wydajności zebrane podczas uruchamiania systemu. Dane te są trwałe w pamięci aż do zamknięcia systemu, więc są one zrzucane we wszystkich raportach.
  • Last N minutes I/O performance report . Zawiera dane dotyczące wydajności zebrane (w ramach sesji okresowego gromadzenia danych) w ciągu ostatnich N minut przed wygenerowaniem raportu.
  • Collection duration . Całkowity czas gromadzenia danych dotyczących wydajności.
  • Number of collections . Łączna liczba kolekcji wykazana w jednym raporcie.

Każda kolekcja wykazana w raporcie może zawierać wszystkie lub niektóre z poniższych sekcji. Statystyki zgłaszane w każdej kolekcji to różnica od ostatniej kolekcji, z wyjątkiem statystyk, które są natychmiastowe (na przykład nie są zagregowane od momentu uruchomienia systemu).

  • CPU I/O wait time/percent . Bezwzględny czas procesora i procent całkowitego czasu procesora spędzonego na przełączaniu kontekstu lub oczekiwaniu na operacje we/wy od ostatniej kolekcji.
  • Number of I/O blocked processes/percent . Całkowita liczba zablokowanych procesów oczekujących na we/wy i procent procesów zablokowanych oczekujących na we/wy od ostatniej kolekcji.
  • Top N Reads . N najlepszych pakietów, które odczytują najwięcej danych z dysku od ostatniej kolekcji.
    • Każda linia zawiera identyfikator użytkownika, nazwę pakietu, całkowitą liczbę bajtów odczytanych w trybie na pierwszym planie i w tle, procent bajtów we wszystkich odczytach w trybie na pierwszym planie i w tle, całkowitą liczbę wywołań fsync wykonanych w trybie na pierwszym planie i w trybie tła, oraz procent wywołań fsync we wszystkich trybach pierwszego planu w stosunku do wywołań fsync w tle wykonanych w systemie.
  • Top N Writes . N najlepszych pakietów, które zapisały najwięcej danych na dysk od ostatniej kolekcji.
    • Każda linia zawiera pola podobne do tych z Top N Reads .
  • Top NI/O waiting UIDs . N najlepszych pakietów z największą liczbą oczekujących zadań we/wy.
    • Każda linia najwyższego poziomu zawiera identyfikator użytkownika, nazwy pakietów, liczbę i procent zadań będących własnością pakietu oczekujących na wejście/wyjście.
    • Linie poziomu wewnętrznego zawierają informacje o oczekiwaniu na wejścia/wyjścia dla najważniejszych procesów należących do pakietu.
  • Top N major page faults . N najlepszych pakietów z największą liczbą głównych błędów strony od ostatniej kolekcji.
    • Każda linia najwyższego poziomu zawiera identyfikator użytkownika, nazwy pakietów, liczbę i procent głównych błędów stron przypisanych do pakietu.
    • Linie poziomu wewnętrznego zawierają informacje o głównych błędach stron dla najważniejszych procesów należących do pakietu.
  • Number of major page faults since last collection .
  • Percentage of change in major page faults since last collection .