Recopilar datos de rendimiento

El servicio nativo de vigilancia registra los datos de rendimiento de E/S desde el inicio temprano durante el inicio del sistema. El servicio nativo vuelca los datos de rendimiento recopilados en el informe de errores. Los proveedores pueden consultar el servicio nativo a través de dumpsys para volcar los datos recopilados o iniciar una sesión de recopilación personalizada para la depuración.

Frecuencia de recopilación de datos

La frecuencia de la recopilación de datos de rendimiento varía según el tipo de compilación.

  • En las compilaciones de depuración de usuario o eng, Watchdog recopila datos de rendimiento una vez cada (1) segundo durante el inicio del sistema y una vez cada (1) minuto después de completar el inicio.
  • En las compilaciones de usuarios, Watchdog recopila datos de rendimiento una vez cada 20 segundos durante el inicio del sistema y una vez cada dos (2) minutos después de que se completa el inicio.

Volcar datos de rendimiento

Cuando se captura un informe de error, el servicio nativo Watchdog vuelca los datos de rendimiento recopilados en el informe de error. Los proveedores pueden consultar el servicio nativo mediante el siguiente comando dumpsys para volcar los datos de rendimiento recopilados. Consulte la sección sobre Comprensión del informe de datos de rendimiento para obtener detalles sobre el informe.

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

Recopile datos de rendimiento para la depuración

Los proveedores pueden utilizar el servicio nativo Watchdog para recopilar datos de rendimiento personalizados con fines de depuración. Por ejemplo, para comprender el uso de E/S de una aplicación o servicio, los proveedores pueden realizar una recopilación de datos de rendimiento personalizada que perfile el uso de E/S de una lista específica de paquetes o de todo el sistema.

Iniciar sesión de recolección personalizada

A continuación se muestra el comando para iniciar una sesión de recopilación de datos de rendimiento personalizada:

$ adb shell dumpsys android.automotive.watchdog.ICarWatchdog/default --start_perf [--interval <seconds>] [--max_duration <seconds>] [--filter_packages <package_name>,<package_name>,...]
  • --start_perf . Inicia una sesión de recopilación de datos de rendimiento personalizada.
  • --interval <seconds> . Especifica el intervalo de generación de perfiles. De forma predeterminada, el intervalo es de 30 segundos.
  • --max_duration <seconds> . Especifica la duración máxima de la sesión de recopilación de datos de rendimiento personalizada. Si la sesión no se detiene manualmente, la sesión se detiene y los datos recopilados se descartan después de esta duración. Por defecto, la duración máxima es de 30 minutos.
  • --filter_packages <package_name>,<package_name>,... . Especifica una lista separada por comas de nombres de paquetes para perfilar. Cuando se proporciona, la recopilación de datos de rendimiento se limita a estos paquetes. De lo contrario, la recopilación de datos de rendimiento se realiza para todos los paquetes del sistema.

Por ejemplo, el siguiente comando inicia una recopilación de datos de rendimiento personalizada con un intervalo de creación de perfiles de 10 seconds , una duración máxima de recopilación de 1 hour y limita la creación de perfiles a com.google.android.car.kitchensink y com.google.android.apps.maps Paquetes 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

Detener y volcar sesión de recopilación personalizada

Después de registrar el uso de E/S de una aplicación o servicio de interés, los proveedores deben detener la sesión de recopilación de datos de rendimiento personalizada para volcar los datos recopilados.

El siguiente comando detiene la recopilación de datos de rendimiento personalizados y vuelca los datos recopilados en /tmp/carwatchdog_dump.txt :

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

ayuda de dumpsys

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

Comprender el informe de datos de rendimiento

A continuación se muestra un informe de datos de rendimiento de muestra:

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

Al capturar un informe de error, ejecutar un comando dumpsys de Watchdog sin ningún argumento o detener una sesión de recopilación personalizada, el servicio nativo de Watchdog descarga un informe de datos de rendimiento similar al informe anterior.

El informe contiene datos recopilados durante el inicio del sistema y los últimos N minutos antes de la generación del informe.

  • Boot-time collection information . Proporciona información sobre la sesión de recopilación de datos de rendimiento en el momento del arranque.
  • Periodic collection information . Proporciona información sobre la sesión periódica de recopilación de rendimiento que comienza después del inicio completo.
  • Boot-time I/O performance report . Contiene datos de rendimiento recopilados durante el inicio del sistema. Estos datos persisten en la memoria hasta que se apaga el sistema, por lo que se volcan en todos los informes.
  • Last N minutes I/O performance report . Contiene datos de rendimiento recopilados (por la sesión de recopilación periódica) durante los últimos N minutos antes de la generación del informe.
  • Collection duration . Duración total de la recopilación de datos de rendimiento.
  • Number of collections . Número total de cobros reportados en un solo informe.

Cada colección incluida en el informe puede contener todas o algunas de las secciones siguientes. Las estadísticas reportadas en cada colección son el delta desde la última colección, excepto las estadísticas que son instantáneas (por ejemplo, no agregadas desde el inicio del sistema).

  • CPU I/O wait time/percent . Tiempo absoluto de CPU y porcentaje del tiempo total de CPU dedicado al cambio de contexto o a la espera debido a operaciones de E/S desde la última recopilación.
  • Number of I/O blocked processes/percent . Número total de procesos bloqueados esperando E/S y porcentaje de procesos bloqueados esperando E/S desde la última recopilación.
  • Top N Reads . Los N paquetes principales que leen la mayoría de los datos del disco desde la última recopilación.
    • Cada línea contiene la ID de usuario, el nombre del paquete, el número total de bytes leídos en el modo de primer plano frente al modo de fondo, el porcentaje de bytes en todas las lecturas del modo de primer plano frente al modo de fondo en el sistema, el número total de llamadas fsync realizadas en el modo de primer plano frente al modo de fondo, y porcentaje de llamadas fsync en todas las llamadas fsync en modo de primer plano frente a las llamadas en segundo plano realizadas en el sistema.
  • Top N Writes . Los N paquetes principales que escribieron la mayor cantidad de datos en el disco desde la última recopilación.
    • Cada línea contiene campos similares al de Top N Reads .
  • Top NI/O waiting UIDs . Los N paquetes principales con la mayor cantidad de tareas de E/S en espera.
    • Cada línea de nivel superior contiene el ID de usuario, los nombres de los paquetes, el número y el porcentaje de tareas propiedad del paquete en espera de E/S.
    • Las líneas de nivel interno contienen la información de E/S en espera para los procesos principales propiedad del paquete.
  • Top N major page faults ". Los N paquetes principales con la mayor cantidad de errores de página importantes desde la última colección.
    • Cada línea de nivel superior contiene el ID de usuario, los nombres de los paquetes, el número y el porcentaje de errores de página importantes atribuidos al paquete.
    • Las líneas de nivel interno contienen información sobre los principales errores de página de los procesos principales propiedad del paquete.
  • Number of major page faults since last collection .
  • Percentage of change in major page faults since last collection .