Uno de los problemas más difíciles que enfrentan los desarrolladores de apps es crear animaciones fluidas y sin problemas. Esto puede ser especialmente difícil de depurar cuando el sistema también realiza tareas en segundo plano de uso intensivo de recursos. Puede ser difícil determinar si una falla se debe a tu app o al sistema. Sin embargo, una herramienta de perfil puede ayudarte a identificar la posible fuente del mal comportamiento.
Renderización en ChromeOS
Una app refinada, como un juego, generalmente usa doble almacenamiento en búfer para mantener el tiempo de respuesta del usuario lo más bajo posible. Sin embargo, el rendimiento podría disminuir por varios motivos. Por ejemplo, si se tarda demasiado en renderizar un fotograma, el resultado renderizado no está listo para el próximo intercambio de búfer y se repite el fotograma anterior.
Entonces, el procesador no puede comenzar a procesar el siguiente fotograma, lo que causa aún más problemas. Esta situación es familiar para los desarrolladores de dispositivos móviles Android. Cuando una app se ejecuta en ChromeOS, el contexto es aún más complicado.
Una app que se ejecuta en el escritorio no se renderiza directamente en el fotograma que se ve en la pantalla. sino que convierte sus datos en una textura. Por lo general, hay muchas apps que procesan sus gráficos en una textura. El sistema construye la vista en la pantalla con un compositor para combinar todas las texturas en una sola imagen de escritorio.
El compositor trabaja de forma transparente en segundo plano, pero presenta un retraso de un fotograma para maximizar el uso de la canalización de GPU. Este retraso atenúa las fluctuaciones de rendimiento del sistema y ayuda a equilibrar una carga asimétrica.
Cuando el SO trabaja de manera intensiva, la GPU puede sufrir una sobrecarga, lo que provoca una demora entre el momento en que se renderiza un fotograma y el momento en que aparece en la pantalla. El sistema puede usar un búfer cuádruple para compensarlo, según el hardware. Incluso con un almacenamiento en búfer más profundo, la canalización gráfica aún podría fallar.
Seguimiento de gráficos ARC
ChromeOS tiene una herramienta de generación de perfiles que muestra cómo se filtran los búferes a través del sistema, cuándo ocurren intercambios de memoria, qué tan ocupadas están la CPU o GPU y qué hace la app en un momento determinado, como se muestra en la siguiente imagen:
Cómo configurar el generador de perfiles
Para usar el generador de perfiles, debes ejecutar M75 o una versión posterior. Para obtener mejores resultados, usa un dispositivo Intel.
Antes de usar el generador de perfiles, coloca registros en tu app.
Agrega Trace.traceCounter(Trace.TRACE_TAG_GRAPHICS, "Event", <number>); al código en los lugares que desees incluir un registro. Usa un Event que comience con el prefijo customTrace. El prefijo no aparece en el mensaje de registro.
Para configurar el generador de perfiles, sigue estos pasos:
- Activa el modo de desarrollador.
- Activa la configuración de Chrome y habilita la herramienta de visualización de búferes gráficos de ARC.
- Navega a
chrome://arc-graphics-tracing.
Ejecuta el generador de perfiles
- Selecciona stop on glitch.
- Ejecuta la app para Android.
- Cuando la app para Android esté activa y enfocada, presiona
Control+Shift+G.
Cuando se produce un problema, aparece una ventana del navegador. Usa las teclas W y S para ampliar y reducir el cronograma.