En esta guía, se explica cómo navegar por un informe de Systrace e interpretarlo. Para interpretar un informe de Perfetto, consulta la documentación del Procesador de seguimiento.
Elementos de un informe típico
Systrace genera un archivo HTML de resultados que incluye una serie de secciones. En el informe, hay una lista de los subprocesos de cada proceso. Si un subproceso determinado renderiza fotogramas de IU, en el informe también se indican los fotogramas renderizados junto con el cronograma. El tiempo avanza a medida que te desplazas de izquierda a derecha en el informe.
El informe incluye las siguientes secciones, desde arriba hacia abajo.
Interacciones del usuario
En la primera sección se incluyen barras que representan interacciones del usuario específicas en tu app o juego, como presionar la pantalla del dispositivo. Estas interacciones funcionan como marcadores de tiempo útiles.
Actividad de la CPU
En la siguiente sección, se muestran barras que representan la actividad de subprocesos en cada CPU. Las barras muestran la actividad de la CPU en todas las apps, incluidos tu app o juego.
La sección Actividad de la CPU es expandible, lo que te permite ver la frecuencia del reloj de cada una. En la Figura 1, se muestra un ejemplo de una sección de actividad de la CPU contraída, y en la Figura 2, una versión expandida que muestra la frecuencia del reloj:
Eventos del sistema
En los histogramas de esta sección se muestran eventos específicos a nivel del sistema, como conteos de texturas y el tamaño total de objetos específicos.
Un histograma que vale la pena examinar en más detalle es el etiquetado SurfaceView. El conteo representa el número de búferes de fotogramas compuestos que se pasaron a la canalización de pantalla y que esperan para mostrarse en la pantalla del dispositivo. Debido a que la mayoría de los dispositivos tienen búfer doble o triple, este conteo casi siempre es igual a 0, 1 o 2.
En la Figura 3, se muestran otros histogramas que representan el proceso de Surface Flinger, incluidos los eventos VSync y el trabajo de intercambio de subproceso de IU:
Fotogramas de visualización
En esta sección, a menudo la más extensa en el informe, se muestra una línea multicolor seguida de pilas de barras. Estas formas representan el estado y la pila de fotogramas de un subproceso en particular que se creó. Cada nivel de la pila representa una llamada a beginSection()
o el comienzo de un evento de seguimiento personalizado que definiste para tu app o juego.
La línea multicolor encima de cada pila de barras representa el conjunto de estados de un subproceso en particular a lo largo del tiempo. Cada segmento de la línea puede tener uno de los siguientes colores:
- Verde: En ejecución
- El subproceso está completando una tarea relacionada con un proceso o respondiendo a una interrupción.
- Azul: Ejecutable
- El subproceso está disponible para ejecutarse, pero no está programado por el momento.
- Blanco: Suspendido
- El subproceso no tiene tareas para completar, quizás porque está bloqueado o porque tiene un bloqueo de exclusión mutua.
- Naranja: Suspensión ininterrumpible
- El subproceso está bloqueado en I/O o esperando a que se complete una operación del disco.
- Púrpura: Suspensión interrumpible
- El subproceso está bloqueado en otra operación de kernel, por lo general, relacionada con la administración de memoria.
Combinaciones de teclas
En la siguiente tabla, se incluyen las combinaciones de teclas que puedes usar mientras miras un informe de Systrace:
Clave | Descripción | |
---|---|---|
W | Acercar el cronograma del seguimiento | |
A | Desplazarse hacia la izquierda en el cronograma del seguimiento | |
S | Alejar el cronograma del seguimiento | |
D | Desplazarse hacia la derecha en el cronograma del seguimiento | |
E | Centrar el cronograma del seguimiento en la ubicación actual del mouse | |
M | Enmarcar la selección actual | |
1 | Cambiar el modelo de selección actualmente activo al modo "selección". Corresponde al primer botón que aparece en la barra de herramientas del selector del mouse (consulta la imagen que está a la derecha). | |
2 | Cambiar el modelo de selección actualmente activo al modo "desplazamiento". Corresponde al segundo botón que aparece en la barra de herramientas del selector del mouse (consulta la imagen que está a la derecha). | |
3 | Cambiar el modelo de selección actualmente activo al modo "acercar". Corresponde al tercer botón que aparece en la barra de herramientas del selector del mouse (consulta la imagen que está a la derecha). | |
4 | Cambiar el modelo de selección actualmente activo al modo "sincronización". Corresponde al cuarto botón que aparece en la barra de herramientas del selector del mouse (consulta la imagen que está a la derecha). | |
G | Mostrar cuadrícula al inicio de la tarea seleccionada actualmente | |
Mayúsculas + G | Mostrar cuadrícula al final de la tarea seleccionada actualmente | |
Flecha a la izquierda | Seleccionar el evento anterior en el cronograma seleccionado actualmente | |
Flecha a la derecha | Seleccionar el evento siguiente en el cronograma seleccionado actualmente |
Cómo investigar problemas de rendimiento
Cuando interactúas con un informe de Systrace, puedes inspeccionar el uso que el dispositivo hace de la CPU durante la grabación. Para obtener ayuda con la navegación del informe HTML, consulta la sección combinaciones de teclas o haz clic en el botón ? en la esquina superior derecha del informe.
En las siguientes secciones se explica cómo inspeccionar los datos en el informe a fin de encontrar y corregir problemas de rendimiento.
Cómo identificar problemas de rendimiento
Cuando navegas por un informe de Systrace, puedes identificar problemas de rendimiento más fácilmente si realizas una de las siguientes acciones:
- Dibuja un rectángulo alrededor del intervalo de tiempo que te interese para seleccionarlo.
- Usa la herramienta de regla para marcar o destacar un área con problemas.
- Si deseas ver una operación de actualización de la pantalla, haz clic en View Options > Highlight VSync.
Cómo inspeccionar alertas y fotogramas de IU
Como puedes ver en la Figura 4, en un informe de Systrace se muestra una lista de cada proceso que renderiza fotogramas de IU y se indica cada fotograma renderizado junto con el cronograma. Los fotogramas que se renderizan dentro de las 16.6 milésimas de segundos requeridas para mantener un nivel estable de 60 fotogramas por segundo se indican con círculos verdes. Los fotogramas que tardan más de 16.6 milésimas de segundos en renderizarse se indican con círculos amarillos o rojos.
Haz clic en el círculo de un fotograma para destacarlo y obtener información adicional sobre el trabajo que el sistema lleva a cabo a fin de renderizar ese fotograma, incluidas las alertas. En el informe también se muestran los métodos que el sistema estaba ejecutando mientras se renderizaba ese fotograma. Puedes investigar esos métodos para determinar las posibles causas de bloqueos de IU.
Después de seleccionar un fotograma lento, es posible que veas una alerta en el panel inferior del informe. En la alerta que se muestra en la Figura 5, se indica que el problema principal con el fotograma es que se dedicó demasiado tiempo al proceso de reciclaje y revinculación de ListView
. Hay vínculos a los eventos relevantes en el seguimiento que explican mejor las tareas que realiza el sistema durante ese tiempo.
Para ver todas las alertas que la herramienta descubrió en el seguimiento, además de la cantidad de veces que el dispositivo activó una alerta, haz clic en la pestaña Alerts en el extremo derecho de la ventana, como se muestra en la Figura 6. El panel Alerts te ayuda a ver qué problemas se producen en el seguimiento y con qué frecuencia contribuyen al bloqueo. Considera a este panel como una lista de errores para corregir. A menudo, un cambio o una mejora pequeños en un área pueden quitar todo un conjunto de alertas.
Si ves que hay demasiado trabajo en el subproceso de IU, usa uno de los siguientes enfoques para determinar qué métodos consumen demasiado tiempo de la CPU:
- Si tienes una idea de qué métodos podrían causar cuellos de botella, agrégales marcadores de seguimiento. Para obtener más información, consulta la guía sobre cómo definir eventos personalizados en tu código.
- Si no conoces el origen de los cuellos de botella de la IU, usa el Generador de perfiles de CPU, disponible en Android Studio. Puedes generar registros de seguimiento y, luego, importarlos e inspeccionarlos con el Generador de perfiles de CPU.