El servicio nativo de perro guardián registra datos de rendimiento de E/S desde el inicio temprano durante iniciar el sistema. El servicio nativo vuelca los datos de rendimiento recopilados en la informe de errores. Los proveedores pueden consultar el servicio nativo mediante dumpsys para volcar los recopilado datos 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 la compilación el tipo de letra.
- En compilaciones userdebug o eng, Watchdog recopila datos de rendimiento una vez cada uno (1) segundo durante el inicio del sistema y una vez que se complete el inicio de cada uno (1) minuto.
- En 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 complete el inicio.
Eventos de recopilación de datos
La generación de perfiles basada en muestras se realiza durante diversos eventos del sistema (como el inicio, activación del sistema y cambio de usuario) y durante el período de los últimos N minutos.
- Eventos de los últimos N minutos antes de la generación del informe de errores: se generan durante un una ventana móvil de 30 minutos.
- Eventos de tiempo de inicio: Se generan después del inicio.
- Eventos de cambio de usuario: Se generan después de que se inicia un cambio de usuario.
- Eventos de recopilación personalizados: Puede especificar el período de sondeo y la duración máxima. filtrar por paquetes.
Volcar datos de rendimiento
Cuando se captura un informe de errores, el servicio nativo de Watchdog vuelca los datos recopilados. datos de rendimiento en el informe de errores. Los proveedores pueden consultar el servicio nativo a través del debajo del comando dumpsys para volcar los datos de rendimiento recopilados Consulta la sección Información sobre el rendimiento informe de datos 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 personalizar el rendimiento de la recopilación con fines de depuración. Por ejemplo, para comprender el uso de E/S de una los proveedores pueden realizar una recopilación de datos de rendimiento personalizada que perfila el uso de E/S de una lista específica de paquetes o de la en un sistema de archivos.
Iniciar sesión de recopilación personalizada
A continuación, se muestra el comando para iniciar una recopilación de datos de rendimiento personalizada sesión:
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 detiene y se descartan los datos recopilados después de este período. De forma predeterminada, 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 generar perfiles. Cuando se proporciona, la recopilación de datos de rendimiento se limita a estos paquetes. De lo contrario, el 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 segundos, recopilación máxima
de 1 hora de duración y limita la generación de perfiles a las
com.google.android.car.kitchensink
y
com.google.android.apps.maps
paquetes.
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
Detén y vuelca la sesión de recopilación personalizada
Después de registrar el uso de E/S de una aplicación o un servicio de interés, los proveedores deben detener la
sesión personalizada de recopilación de datos de rendimiento para volcar los datos recopilados. Este comando detiene la
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
Para obtener ayuda con dumpsys:
adb shell dumpsys android.automotive.watchdog.ICarWatchdog/default --help
Volcar en formato proto
De manera opcional, los datos de dumpsys se pueden volcar en formato proto:
adb shell dumpsys android.automotive.watchdog.ICarWatchdog/default --proto
Cómo interpretar el informe de datos de rendimiento
Para obtener más información, consulta el siguiente ejemplo de informe de datos de rendimiento:
adb shell dumpsys android.automotive.watchdog.ICarWatchdog/default --------------------------------- WatchdogPerfService report: --------------------------------- Boot-time collection information: ================================= Event polling interval: 1 second Wake-up collection information: =============================== Event polling interval: 1 second User-switch collection information: =================================== Event polling interval: 1 second Periodic collection information: ================================ Event polling interval: 60 seconds --------------------------------------------------------------------------- Boot-time performance report: ================================= No collection recorded --------------------------------------------------------------------------- Wake-up performance report: =========================== No collection recorded --------------------------------------------------------------------------- User-switch events performance report: ====================================== No collection recorded --------------------------------------------------------------------------- Last N minutes performance report: ====================================== Collection duration: 10800 seconds Number of collections: 181 Collection 0: <Mon Oct 2 18:36:06 2023 GMT> ============================================= Total CPU time (ms): 473210 Total CPU cycles: 39553152000 Total idle CPU time (ms)/percent: 435860 / 92.11% CPU I/O wait time (ms)/percent: 0 / 0.00% Number of context switches: 13723415093 Number of I/O blocked processes/percent: 0 / 0.00% Top N CPU Times: ---------------- Android User ID, Package Name, CPU Time (ms), Percentage of total CPU time, CPU Cycles Command, CPU Time (ms), Percentage of UID's CPU Time, CPU Cycles 10, com.google.android.carassistant, 13357, 2.82%, 16409088000 assistant:interactor, 13360, 100.02%, 16409088000 0, system, 9097, 1.92%, 9640512000 sensors@1.0-ser, 3790, 41.66%, 3773184000 system_server, 2760, 30.34%, 3135936000 com.android.car, 1150, 12.64%, 1099584000 binder:621_4, 1000, 10.99%, 1281024000 surfaceflinger, 230, 2.53%, 245376000 0, audioserver, 4383, 0.93%, 4597248000 Main, 2690, 61.37%, 2980416000 binder:916_2, 950, 21.67%, 925056000 audioserver, 720, 16.43%, 691776000 0, root, 4357, 0.92%, 3727872000 irq/311-iam2068, 2630, 60.36%, 2471616000 irq/26-90b6400., 370, 8.49%, 561024000 kworker/u16:4-bwmon_wq, 290, 6.66%, 48960000 kworker/u16:1-memlat_wq, 270, 6.20%, 0 ipcdaemon, 220, 5.05%, 218304000 10, com.google.android.apps.geo.automotive.adas, 1509, 0.32%, 1756416000 adas:publishing, 1490, 98.74%, 1735680000 as:clientparams, 10, 0.66%, 20736000 0, com.android.vending, 796, 0.17%, 765504000 android.vending, 790, 99.25%, 765504000 0, shared:com.google.uid.shared, 581, 0.12%, 481152000 google.android.gms, 340, 58.52%, 237312000 .gms.persistent, 190, 32.70%, 184512000 process.gservices, 50, 8.61%, 59328000 0, gps, 507, 0.11%, 659136000 binder:920_2, 500, 98.62%, 659136000 10, com.android.vending, 489, 0.10%, 372288000 android.vending, 480, 98.16%, 372288000 0, shared:android.uid.systemui, 438, 0.09%, 449856000 android.systemui, 440, 100.46%, 449856000 Top N Storage I/O 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 Storage I/O Writes: ------------------------- Android User ID, Package Name, Foreground Bytes, Foreground Bytes %, Foreground Fsync, Foreground Fsync %, Background Bytes, Background Bytes %, Background Fsync, Background Fsync % 0, com.android.vending, 0, 0.00%, 0, 0.00%, 520192, 46.35%, 20, 47.62% 10, com.android.vending, 0, 0.00%, 0, 0.00%, 520192, 46.35%, 20, 47.62% 10, shared:com.google.uid.shared, 0, 0.00%, 0, 0.00%, 45056, 4.01%, 0, 0.00% 0, shared:com.google.uid.shared, 0, 0.00%, 0, 0.00%, 36864, 3.28%, 2, 4.76% 0, logd, 24576, 40.00%, 0, 0.00%, 0, 0.00%, 0, 0.00% 0, root, 20480, 33.33%, 0, 0.00%, 0, 0.00%, 0, 0.00% 0, system, 16384, 26.67%, 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, 2, 0.39% dp_hdcp2p2, 1, 50.00% hdcp_2x, 1, 50.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, com.android.vending, 104, 48.83% android.vending, 104, 100.00% 10, com.android.vending, 104, 48.83% android.vending, 104, 100.00% 0, shared:com.google.uid.shared, 4, 1.88% .gms.persistent, 4, 100.00% 10, shared:com.google.uid.shared, 1, 0.47% .gms.persistent, 1, 100.00% Number of major page faults since last collection: 213 Percentage of change in major page faults since last collection: 0.00%
Cuando se captura un informe de errores, se ejecuta un comando de dumpsys de Watchdog sin argumentos ni se detiene. una sesión de recopilación personalizada, el servicio nativo de perro guardián vuelca un informe de datos de rendimiento similar al el informe anterior.
El informe contiene datos recopilados durante el inicio del sistema y los últimos N minutos antes generar informes.
Artículo | Descripción |
---|---|
Información de recopilación durante el inicio | Proporciona información sobre la sesión de recopilación de datos de rendimiento del inicio. |
Información de recopilación de activaciones | Proporciona información sobre la sesión de recopilación de datos de rendimiento de la activación cuando el sistema se despierta tras una suspensión. |
Información de recopilación de cambio de usuario | Proporciona información sobre la sesión de recopilación de datos de rendimiento de cambio de usuario cuando hay es un cambio de usuario. |
Información sobre la recopilación periódica | Proporciona información sobre la sesión periódica de recopilación de rendimiento que comienza después del boot-complete. |
Informe de rendimiento del tiempo de inicio | Contiene datos de rendimiento recopilados durante el arranque del sistema. Estos datos persisten en la memoria hasta el cierre del sistema, por lo que se vuelcan los datos en todos los informes. |
Informe de rendimiento de activación | Contiene datos de rendimiento recopilados durante la activación. Estos datos permanecen en la memoria hasta que el cierre del sistema, por lo que los datos se vuelcan en todos los informes. |
Informe de rendimiento de cambios de usuario | Contiene datos de rendimiento recopilados durante el cambio de usuario. Estos datos persisten en la memoria hasta el cierre del sistema, por lo que los datos se vuelcan en todos los informes. |
Informe de rendimiento de E/S de los últimos N minutos | Contiene datos de rendimiento recopilados (por la sesión de recopilación periódica) durante los últimos N minutos antes de que se genere el informe. |
Duración de la recopilación | Es la duración total de la recopilación de datos de rendimiento. |
Cantidad de colecciones | Cantidad total de colecciones que se registraron en un solo informe. |
Cada colección incluida en el informe puede contener todos o algunos de los que se indican a continuación secciones. Las estadísticas informadas en cada colección son el delta desde el último la recopilación de imágenes, excepto las estadísticas instantáneas (por ejemplo, no agregadas desde el arranque del sistema).
Artículo | Descripción |
---|---|
Tiempo de espera/porcentaje de E/S de CPU | El tiempo de CPU absoluto y el porcentaje del tiempo de CPU total dedicado al cambio de contexto o en espera debido a operaciones de E/S desde la última recopilación. |
Tiempo de CPU total | Tiempo de CPU total en milisegundos. |
Tiempo total de CPU inactivo | Tiempo total de CPU en estado inactivo. |
Tiempo de espera de E/S de CPU | Tiempo total de CPU dedicado a esperar operaciones de E/S. |
Cantidad de cambios de contexto | Cantidad de cambios de CPU de un proceso o subproceso a otro. |
Cantidad de procesos bloqueados de E/S/porcentaje | Cantidad total de procesos bloqueados a la espera de E/S y porcentaje de procesos bloqueados que está esperando la E/S desde la última recopilación. |
Tiempos de CPU principales para N |
N paquetes principales que consumieron más tiempo de CPU desde la última recopilación:
|
Principales lecturas de E/S de almacenamiento de N |
N paquetes principales que leen la mayor cantidad de datos del disco desde la última colección. Cada línea contiene el ID de usuario, el nombre del paquete y la cantidad total de bytes leídos en primer plano.
frente al modo en segundo plano, el porcentaje de bytes en el modo en primer plano y
lecturas en segundo plano del sistema, cantidad total de llamadas a |
Principales escrituras de E/S de almacenamiento de N | N paquetes principales que escribieron más datos en el disco desde la última recopilación. Cada línea contiene campos similares a los de Top N Reads. |
Principales UIDs de N E/S en espera | N paquetes principales con la mayor cantidad de tareas de E/S en espera.
|
Principales fallas N de páginas importantes | N paquetes principales con la mayor cantidad de fallas de página importantes desde la última recopilación. |