Recopilar datos de rendimiento

El servicio nativo de Watchdog registra los datos de rendimiento de E/S desde el inicio temprano durante el arranque 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 ingeniería, Watchdog recopila datos de rendimiento una vez cada (1) segundo durante el arranque del sistema y una vez cada (1) minuto después de completar el arranque.
  • En las compilaciones del usuario, Watchdog recopila datos de rendimiento una vez cada 20 segundos durante el arranque del sistema y una vez cada dos (2) minutos después de que se completa el arranque.

Volcar datos de rendimiento

Cuando se captura un informe de errores, el servicio nativo de Watchdog vuelca los datos de rendimiento recopilados en el informe de errores. Los proveedores pueden consultar el servicio nativo a través del siguiente comando dumpsys para volcar los datos de rendimiento recopilados. Consulte la sección 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

Recopilar datos de rendimiento para la depuración

Los proveedores pueden usar el servicio nativo de 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 recopilación personalizada

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

$ 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 personalizados. Si la sesión no se detiene manualmente, la sesión se detendrá y los datos recopilados se descartarán 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 generación de perfiles de 10 seconds , una duración máxima de recopilación de 1 hour y limita la generació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 la 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 personalizados 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

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

Descripción del informe de datos de rendimiento

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

$ 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 errores, ejecutar un comando dumpsys de Watchdog sin ningún argumento o detener una sesión de recopilación personalizada, el servicio nativo de Watchdog vuelca un informe de datos de rendimiento similar al informe anterior.

El informe contiene datos recopilados durante el arranque 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 durante el arranque.
  • Periodic collection information . Proporciona información sobre la sesión periódica de recopilación de rendimiento que se inicia después de que finaliza el arranque.
  • Boot-time I/O performance report . Contiene datos de rendimiento recopilados durante el arranque del sistema. Estos datos son persistentes en la memoria hasta que se apaga el sistema, por lo que los datos se vuelcan 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 colecciones reportadas en un solo informe.

Cada colección reportada en el informe puede contener todas o algunas de las siguientes secciones. 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 de CPU absoluto y porcentaje del tiempo total de CPU empleado en cambios de contexto o en 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 en espera de E/S y porcentaje de procesos bloqueados en espera de E/S desde la última recopilación.
  • Top N Reads . Paquetes N principales que leen la mayoría de los datos del disco desde la última recopilación.
    • Cada línea contiene el ID de usuario, el nombre del paquete, la cantidad total de bytes leídos en modo de primer plano frente a modo de fondo, el porcentaje de bytes en todas las lecturas de modo de primer plano frente a modo de fondo en el sistema, la cantidad total de llamadas fsync realizadas en modo de primer plano frente a modo de fondo, y porcentaje de llamadas fsync en todo el modo de primer plano frente a llamadas fsync en modo de fondo realizadas en el sistema.
  • Top N Writes . Paquetes N principales que escribieron la mayoría de los datos en el disco desde la última recopilación.
    • Cada línea contiene campos similares a los de Top N Reads .
  • Top NI/O waiting UIDs . N principales paquetes con la mayor cantidad de tareas de espera de E/S.
    • Cada línea de nivel superior contiene el ID de usuario, los nombres de los paquetes, el número y el porcentaje de tareas que pertenecen al paquete en espera de E/S.
    • Las líneas de nivel interno contienen la información de espera de E/S para los principales procesos que pertenecen al paquete.
  • Top N major page faults Paquetes N principales con la mayor cantidad de fallas de página importantes desde la última recopilació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 principales atribuidos al paquete.
    • Las líneas de nivel interno contienen la información de fallas de página principales para los procesos principales que pertenecen al paquete.
  • Number of major page faults since last collection .
  • Percentage of change in major page faults since last collection .