perfetto
es una herramienta que te permite recopilar información de rendimiento de dispositivos Android a través de Android Debug Bridge (ADB). Invoca la herramienta perfetto
con el comando adb shell perfetto ...
.
La herramienta perfetto
usa varias fuentes para recopilar registros de rendimiento de tu dispositivo, como los siguientes:
ftrace
para obtener información del kernelatrace
para la anotación del espacio del usuario en servicios y appsheapprofd
para la información de uso de memoria nativa de servicios y apps
En esta página, se describe cómo llamar a la herramienta perfetto
y configurarla para generar el resultado deseado. Para obtener más información, consulta la documentación de perfetto
.
Sintaxis
En esta sección, se describe cómo usar ADB para llamar a perfetto
en diferentes modos y generar un registro.
Selección de fuentes de datos
perfetto
incluye los dos modos siguientes, que determinan las fuentes de datos que se usan para guardar el registro:
- Modo ligero: Solo se puede seleccionar un subconjunto de fuentes de datos, específicamente
atrace
yftrace
. Sin embargo, ofrece una interfaz similar asystrace
. - Modo normal: Obtiene su configuración en un búfer de protocolo y te permite aprovechar más la funcionalidad de
perfetto
con fuentes de datos diferentes deatrace
yftrace
.
Opciones generales
En la siguiente tabla, se enumeran las opciones disponibles cuando se usa la herramienta perfetto
en cualquier modo:
Opción | Descripción |
---|---|
--background |
|
perfetto sale inmediatamente de la interfaz de línea de comandos y continúa con el registro en segundo plano. |
--background-wait | -D
|
Es similar a --background , pero espera (hasta 30 segundos) a que todas las fuentes de datos comiencen antes de salir. El código de salida es cero si se recibe una confirmación correcta y, de lo contrario, no es cero (error o tiempo de espera).
|
--alert-id
|
ID de la alerta que activó este registro. |
--config-id
|
ID de la configuración de activación. |
--config-uid
|
UID de la app que registró la configuración. |
--subscription-id
|
ID de la suscripción que activó este registro. |
--out OUT_FILE |
|
Especifica la ruta de acceso deseada al archivo de registro de salida o Nota: Debes especificar el nombre de ruta de acceso completo del archivo de salida. Por lo general, los archivos deben escribirse en la carpeta |
--upload
|
Al finalizar, pasa el registro al paquete especificado por el mensaje IncidentReportConfig en la configuración de registro de proto. |
--no-guardrails
|
Inhabilita las protecciones contra el uso excesivo de recursos cuando se habilita la marca --upload durante las pruebas. |
--reset-guardrails
|
Restablece el estado persistente de los mecanismos de seguridad y salidas para pruebas. |
--rsave-for-bugreport
|
Si se está ejecutando un registro con bugreport_score > 0, lo guarda en un archivo. Muestra la ruta cuando termina.
|
--query
|
Consulta el estado del servicio y lo imprime como texto legible. |
--query-raw
|
Similar a --query , pero imprime bytes protocodificados de tracing_service_state.proto. sin procesar. |
--help | -h
|
Imprime el texto de ayuda de la herramienta perfetto . |
Modo ligero
La sintaxis general para usar perfetto
en el modo ligero es la siguiente:
adb shell perfetto [ --time TIMESPEC ] [ --buffer SIZE ] [ --size SIZE ] [ ATRACE_CAT | FTRACE_GROUP/FTRACE_NAME | FTRACE_GROUP/* ]... --out FILE
En la siguiente tabla, se enumeran las opciones disponibles cuando se usa perfetto
en el modo ligero:
Opción | Descripción |
---|---|
--time TIME[s|m|h] |
|
Especifica la duración del registro en segundos, minutos u horas.
Por ejemplo, --time 1m especifica una duración de registro de 1 minuto.
La duración predeterminada es de 10 segundos.
|
--buffer SIZE[mb|gb] |
|
Especifica el tamaño del búfer de anillo en megabytes (mb) o gigabytes (gb).
El parámetro predeterminado es --buffer 32mb .
|
--size SIZE[mb|gb] |
|
Especifica el tamaño máximo de archivo en megabytes (MB) o gigabytes (GB). De forma predeterminada, perfetto usa el búfer de anillo solamente en la memoria.
|
--app | -a
|
Nombre de la app de Android (atrace) |
A estas opciones les sigue una lista de especificadores de eventos:
Evento | Descripción |
---|---|
ATRACE_CAT |
Especifica las categorías de atrace para las que deseas llevar un registro.
Por ejemplo, el siguiente comando registra el administrador de ventanas con atrace :
adb shell perfetto --out FILE wm Para registrar otras categorías, consulta esta lista de categorías de |
FTRACE_GROUP/FTRACE_NAME |
Especifica los eventos de ftrace para los que deseas llevar un registro.
Por ejemplo, el siguiente comando registra los eventos sched/sched_switch :
adb shell perfetto --out FILE sched/sched_switch |
Modo normal
La sintaxis general para usar perfetto
en el modo normal es la siguiente:
adb shell perfetto [ --txt ] --config CONFIG_FILE --out FILE
En la siguiente tabla, se enumeran las opciones disponibles cuando se usa la herramienta perfetto
en el modo normal:
Opción | Descripción |
---|---|
--config CONFIG_FILE | -c CONFIG_FILE
|
Especifica la ruta de acceso a un archivo de configuración. En el modo normal, es posible que algunas configuraciones estén codificadas en un búfer de protocolo de configuración. Este archivo debe cumplir con el esquema de búfer de protocolo definido en AOSP trace_config.proto .
Selecciona y configura las fuentes de datos con el miembro |
--txt
|
Indica a perfetto que debe analizar el archivo de configuración como pbtxt . Esta marca solo está diseñada para pruebas locales, y no se recomienda habilitarla para la producción. |
Fuentes de datos compatibles
En esta sección, se describen las diferentes fuentes que la herramienta perfetto
usa para generar tu registro.
ftrace
La fuente de datos ftrace
permite que perfetto
obtenga eventos del kernel.
Para habilitar esta fuente, configura ftrace_config
en DataSourceConfig.
Los eventos que se pueden habilitar incluyen los siguientes:
-
sched/sched_switch
sched/sched_wakeup
sched/sched_wakeup_new
sched/sched_process_exec
sched/sched_process_exit
sched/sched_process_fork
sched/sched_process_free
sched/sched_process_hang
sched/sched_process_wait
Eventos del sistema de archivos:
Según el dispositivo, la versión del SO y el kernel, es posible que haya más eventos disponibles. Para obtener más información, consulta los protocolos de configuración.
Estadísticas de procesos
La fuente de datos de estadísticas de procesos te permite obtener contadores sondeados para el sistema y los procesos individuales.
Para habilitar esta fuente, configura process_stats_config
y sys_stats_config
en DataSourceConfig.
Entre los datos que genera perfetto
, se incluyen los siguientes:
-
/proc/meminfo
/proc/vmstat
/proc/stat
-
/proc/\<pid\>/status
/proc/\<pid\>/oom_score_adj
Según el dispositivo, la versión del SO y el kernel, es posible que haya más eventos disponibles. Para obtener más información, consulta los protocolos de configuración de sys_stats
y process_stats
.
heapprofd
heapprofd
te permite hacer un muestreo de las causas del uso de la memoria nativa.
Para habilitar esta fuente, configura heapprofd_config
en DataSourceConfig. Esta configuración produce ProfilePackets
, incluidos los marcos de Java de la pila de llamadas.
Puedes encontrar información adicional sobre cómo usar heapprofd
en perfetto.dev
.
Otras fuentes
Según el dispositivo, la versión del SO y el kernel, es posible que haya más fuentes de datos disponibles. Para obtener más información, consulta los protocolos de configuración de fuentes de datos.
Para encontrar información adicional sobre la herramienta perfetto
, consulta perfetto.dev.