Cómo inspeccionar la actividad de la CPU con el Generador de perfiles de CPU

Reducir el uso de CPU de tu app tiene muchas ventajas; por ejemplo, proporciona una experiencia de usuario más rápida y fluida, y prolonga la duración de batería del dispositivo.

Puedes usar el Generador de perfiles de CPU para inspeccionar el uso de la CPU de tu app y la actividad de subprocesos en tiempo real mientras interactúas con ella, o bien puedes inspeccionar los detalles en los seguimientos de métodos registrados y de funciones, y los registros del sistema.

Se determinarán los tipos específicos de información que registre y muestre el Generador de perfiles de CPU según la configuración que elijas:

  • System Trace: captura detalles específicos que te permiten inspeccionar cómo interactúa tu app con los recursos del sistema.
  • Seguimiento de métodos y funciones: para cada subproceso del proceso de tu app, puedes averiguar qué métodos (Java) o funciones (C/C++) se ejecutan durante un período, así como los recursos de CPU que consume cada método o función mientras se ejecuta. También puedes usar seguimientos de métodos y funciones para identificar emisores y destinatarios. Un emisor es un método o función que invoca a otro método o función, y un destinatario es uno que es invocado. Puedes utilizar esta información para determinar qué métodos o funciones son responsables de invocar con demasiada frecuencia tareas particulares que tienen muchos recursos y optimizar el código de tu app a fin de evitar trabajos innecesarios.

    Cuando registras seguimientos de métodos, puedes elegir registros muestreados o instrumentados. Para registrar seguimientos de funciones, solo puedes utilizar el registro muestreado.

Para obtener detalles sobre el uso y la elección de cada una de estas opciones de seguimiento, consulta Cómo elegir una configuración de registro.

Descripción general del Generador de perfiles de CPU

Para abrir el Generador de perfiles de CPU, sigue estos pasos:

  1. Elige View > Tool Windows > Profiler o haz clic en Profile en la barra de herramientas.

    Si aparece el diálogo Select Deployment Target, elige el dispositivo en el que quieres implementar tu app para la generación de perfiles. Si conectaste un dispositivo mediante USB, pero no lo ves en la lista, asegúrate de haber habilitado la depuración USB.

  2. Haz clic en cualquier parte del cronograma CPU para abrir el Generador de perfiles de CPU.

Cuando abres el Generador de perfiles de CPU, comienza a mostrarse inmediatamente el uso de CPU y la actividad de subprocesos de tu app. Verás algo similar a lo que se muestra en la figura 1.

Figura 1: Cronogramas del Generador de perfiles de CPU

Como se indica en la Figura 1, en la vista predeterminada del Generador de perfiles de CPU, se incluye lo siguiente:

  1. Cronograma de eventos: Muestra las actividades en tu app mientras pasan por diferentes estados durante su ciclo de vida. También indica las interacciones de los usuarios con el dispositivo, incluidos los eventos de rotación de pantalla. Para obtener información sobre cómo habilitar el cronograma de eventos en dispositivos que ejecutan Android 7.1 (nivel de API 25) o versiones anteriores, consulta Cómo habilitar la generación de perfiles avanzada.
  2. Cronograma de CPU: muestra el uso de CPU de tu app en tiempo real (como un porcentaje del tiempo de CPU total disponible) y la cantidad total de subprocesos que usa. El cronograma también muestra el uso de CPU de otros procesos (como los del sistema y otras apps), por lo que puedes compararlo con el uso que hace tu app. Puedes inspeccionar datos históricos del uso de CPU desplazando el mouse por el eje horizontal del cronograma.
  3. Cronograma de la actividad del subproceso: muestra cada subproceso que pertenece al proceso de tu app e indica su actividad en un cronograma usando los colores que se detallan a continuación. Después de registrar un seguimiento de métodos, puedes seleccionar un subproceso de este cronograma para inspeccionar sus datos en el panel de seguimiento.
    • Verde: el subproceso está activo o está listo para usar la CPU. Es decir, se está ejecutando o puede ejecutarse.
    • Amarillo: el subproceso está activo, pero espera una operación de E/S, como una de disco o red, para poder completar su trabajo.
    • Gris: el subproceso está suspendido y no consume tiempo de CPU. A veces, esto ocurre cuando accede a un recurso que todavía no está disponible. Puede ocurrir que el subproceso entre en suspensión voluntaria, o bien el kernel suspenda el subproceso hasta que se encuentre disponible el recurso requerido.

    El Generador de perfiles de CPU también informa el uso de CPU de los subprocesos que Android Studio y la plataforma de Android agregan al proceso de tu app, como JDWP, Profile Saver, Studio:VMStats, Studio:Perfa y Studio:Heartbeat (aunque los nombres exactos que se muestran en el cronograma de actividad de subprocesos pueden variar). Android Studio presenta estos datos para que puedas identificar fácilmente los casos en que la actividad de los subprocesos y el uso de CPU se deban al código de tu app.