MEDICIÓN DEL USO DE CPU EN DISPOSITIVOS MÓVILES

Si alguna vez ha querido medir el uso de CPU de una aplicación móvil o un juego y está atascado, siga leyendo para averiguar cómo se puede lograr esto.

El objetivo fundamental de cualquier aplicación o juego es proporcionar una gran experiencia al usuario. Para los juegos, los fotogramas por segundo son una buena medida de esto. Cuando su juego no es capaz de proporcionar una buena experiencia, naturalmente siente curiosidad por el uso de recursos en su sistema. Es probable que el juego esté bloqueado por el ancho de banda de la CPU/ GPU o de la memoria. Estas tres áreas fundamentales son la primera parada a la hora de identificar problemas de rendimiento. Veamos cómo medir el uso de la CPU en dispositivos Android e iOS.

Definiciones

¿Qué es la carga de CPU?
Antes de que podamos discutir los métodos para medir el uso de la CPU, es importante saber a qué nos referimos con la definición Carga de la CPU. La carga de CPU mide la cantidad de trabajo realizado por una CPU entre dos intervalos de muestreo. Los dispositivos modernos tienen CPU de varios núcleos que pueden operar a diferentes frecuencias dependiendo de la necesidad computacional del software que usa la CPU. Como resultado, una CPU que está completamente cargada a una frecuencia más baja aún puede aceptar más trabajos del sistema operativo si se aumenta la frecuencia.

Una observación clave a hacer es el hecho de que la carga de la CPU depende del punto de operación de la CPU. Una CPU cargada al 100% a 500 Mhz solo se cargará al 50% si la frecuencia se aumenta a 1 Ghz. Por lo tanto, es necesario normalizar la carga de la CPU a la frecuencia de funcionamiento máxima de la CPU.

La carga de CPU se puede obtener tanto para Android como para iOS de varias maneras. La carga de la CPU puede ser superior al 100%. Por ejemplo, en un dispositivo iOS con 4 núcleos, la carga de la CPU puede llegar hasta el 400% (100% de carga para cada núcleo de la CPU).

¿Qué es el Uso Normalizado de la CPU?
Cuando la métrica de carga de CPU mencionada anteriormente se vuelve a calcular utilizando el punto de operación Máximo de cada núcleo de CPU, obtenemos un Uso de CPU normalizado. Sé que esto es un poco complejo, así que tengo un ejemplo que lo explica a continuación,

Consideremos el siguiente escenario en un dispositivo que tiene una CPU de cuatro núcleos

  • Carga de CPU debido a la aplicación-50%
  • Número de núcleos que están en línea – 2 de 4
  • Punto de funcionamiento máximo de los núcleos de CPU – 1 GHz
  • Puntos de operación de los dos núcleos que estaban en – 500 MHz

El uso normalizado de la CPU se calcula de la siguiente manera,

  • Ciclos máximos de CPU disponibles: 4 * 1 GHz – 4 GHz
  • Ciclos de CPU disponibles cuando la aplicación se estaba ejecutando – 500 Mhz * 2 = 1 GHz
  • Porcentaje del Total de Ciclos de CPU Disponibles durante el muestreo-1GHz / 4Ghz = 25% o 0,25
  • Uso normalizado de CPU– 50% * (0.25) = 12.5%

Cuando se utiliza cualquier herramienta de creación de perfiles, siempre es útil hacer esta pregunta. ¿Estoy midiendo el Uso Normalizado de la CPU? Es importante porque cuando se normaliza el uso de la CPU, se puede comparar entre dos dispositivos. La carga de la CPU no se presta a comparaciones fáciles.

Ahora que hemos entendido las definiciones de carga de CPU, veamos algunas de las diferentes formas en que podemos medir esto en Android e iOS

Android
Como desarrollador, hay muchas formas en que puede medir el uso de CPU en Android para su aplicación o juego.

Comando ” Top ”
La forma más fácil de controlar rápidamente el uso de la CPU de sus aplicaciones es usar el comando “top”. Android está basado en Linux, viene con algunas de las ventajas de la línea de comandos también disponibles en Linux.

Si tiene acceso ADB al dispositivo, puede ejecutar un comando como el siguiente para ver el uso de la CPU,

El comando ADB shell top-m 5-d 1 produce un resultado como el siguiente:

Pantalla de shell ABD

Anterior, puede ver que el paquete com.kiloo.subwa + consumió el 142% de la CPU. Vale la pena señalar de nuevo que esto es carga de CPU y no está normalizado. Sin embargo, aún puede usar este número en el mismo dispositivo para comprender el uso de la CPU. Este método también es útil para obtener el uso de la CPU en cualquier aplicación que se ejecute en el dispositivo.

Android Profiler
Si tienes acceso al código fuente de la aplicación, puedes usar Android Studio profiler para obtener métricas de uso de CPU detalladas. Puedes seguir la documentación oficial de Android aquí para usar el generador de perfiles de CPU en Android Studio.

Herramientas de GameBench
Las herramientas de GameBench proporcionan la forma más fácil posible de recuperar el uso normalizado de la CPU en un dispositivo Android para cualquier aplicación o juego, incluso si no eres el desarrollador. Además del Uso de la CPU, las herramientas también informan de los Estados del núcleo de la CPU (Si el núcleo de la CPU estaba en línea) y también de sus frecuencias. Por ejemplo, un gráfico de ejemplo para Frecuencias de núcleo de CPU se ve a continuación,

El gráfico anterior muestra un chipset móvil con una CPU de 8 núcleos y de un vistazo puede ver que la frecuencia de la CPU se sincronizó durante los primeros 25 segundos aproximadamente y luego el sistema operativo Android decidió marcar todos los núcleos a frecuencias más bajas. En este caso, la aplicación perfilada estaba cargando recursos desde el disco y, como resultado, tuvo que operar todos los núcleos a una frecuencia más alta durante 25 segundos. Si quieres probar el uso de la CPU para tu dispositivo móvil, regístrate para una prueba de GameBench Pro a continuación y prueba rápidamente.

Póngase en contacto

iOS
Si es un desarrollador de iOS, la forma más fácil de medir el uso de la CPU es utilizando el conjunto de herramientas Xcode.

Hemos encontrado que las siguientes herramientas de Apple son particularmente útiles:

  1. Medidores de depuración Xcode
  2. Instrumentos
    1. Perfilador de tiempo
    2. Monitor de actividad

Medidores de depuración Xcode
Si tiene acceso al código fuente de su aplicación iOS, los medidores de depuración son una forma rápida y fácil de obtener el consumo de recursos de su aplicación. Obtenga más detalles sobre el uso de los medidores de depuración aquí. Todo lo que necesita hacer es iniciar la aplicación en el dispositivo conectado para obtener información muy útil sobre el uso de los recursos. Tenga en cuenta que solo se informa de la carga de la CPU en iOS (No normalizada).

Instrumentos
A veces, necesita acceder a información de perfiles de CPU más detallada y aquí es donde los instrumentos pueden ayudarlo. Los instrumentos tienen un par de instrumentos diferentes que pueden ayudar a medir el rendimiento de su aplicación.

Generador de perfiles de tiempo
El instrumento generador de perfiles de tiempo puede realizar muestreos de baja sobrecarga y basados en el tiempo de los procesos que se ejecutan en las CPU del sistema. Hay un par de puntos de vista diferentes en este instrumento que se pueden utilizar. La vista de uso de la estrategia de CPU se puede usar para comparar el uso del núcleo en períodos de tiempo determinados. Puede ver la carga de trabajo en cada núcleo del dispositivo y detectar cualquier comportamiento inesperado. La vista de estrategia de subprocesos se puede usar para examinar el uso de subprocesos de tu app al realizar un trabajo. Vale la pena señalar que el código fuente es necesario para comprender los cuellos de botella.

Monitor de actividad
El monitor de actividad puede proporcionar un buen indicador de salud de la aplicación que se está perfilando. Este instrumento puede mostrar el uso de CPU y memoria de todas las aplicaciones que se ejecutan en el dispositivo. Esto es útil si desea tener una prueba de larga duración y medir los parámetros de rendimiento de la aplicación/juego.

Herramientas de GameBench
Nuestras herramientas le permiten medir el uso de la CPU de su aplicación, incluso si no tiene acceso al código fuente. Esto es especialmente útil si desea crear un perfil de una versión candidata sin ninguna información de depuración. Además, nuestras herramientas le permiten medir el uso de la CPU desde un PC con Windows, lo que puede ser muy útil, ya que las formas de usar Xcode e Instrumentos mencionadas anteriormente solo funcionan en un Mac que ejecuta OSX.

 Gráfico de frecuencia de núcleo

Un punto importante a tener en cuenta aquí es que el uso de CPU reportado por GameBench varía en función del número de núcleos. Cada núcleo puede usar el 100%, por lo que para un sistema de seis núcleos, la carga máxima de la CPU puede llegar al 600%.

Un punto importante a tener en cuenta aquí es que el uso de CPU reportado por GameBench varía en función del número de núcleos. Cada núcleo puede usar el 100%, por lo que para un sistema de seis núcleos, la carga máxima de la CPU puede llegar al 600%.

¿Qué debe buscar?

iOS
Los valores sostenidos de alta carga de CPU deben examinarse con más cuidado (Comprenda lo que estaba sucediendo en la pantalla utilizando las capturas de pantalla para contextualizar), ya que lo más probable es que esto provoque un mayor consumo de batería. Debido a la forma en que funciona la CPU moderna, un aumento en la carga de la CPU generalmente activará la CPU para pasar a la siguiente frecuencia de operación más alta. La transición al siguiente punto de operación debería resultar en un valor de carga de CPU más bajo. Si una aplicación carga constantemente la CPU, el sistema operativo continúa aumentando el punto de operación hasta que alcanza el valor máximo. Este no es un comportamiento deseable y debe investigarse.

También debe mirar los valores de uso de CPU que son más del 25% del máximo permitido. Por lo tanto, en un sistema de 6 núcleos, cualquier carga sostenida de CPU superior al 150% generalmente apunta a un problema y es posible que desee usar Time Profiler instrument para investigar esto con más detalle.

Las ráfagas cortas de carga de CPU alta están bien.

Android
Esto depende del número de núcleos en el dispositivo utilizado para la prueba. En un sistema de cuatro núcleos, un valor superior al 25% significaría que un núcleo se ha utilizado completamente para la aplicación y, como resultado, se consideraría un alto uso de CPU, aunque esto está bien en ráfagas cortas. El uso constante de CPU > 25% necesita más investigación.

Todos los hilos utilizados en la aplicación deben ser “nombrados” para usar la información proporcionada de la mejor manera posible. Siempre es una buena idea comprobar si alguno de los hilos” ligeros ” está consumiendo inesperadamente más Ciclos de CPU

¿Qué sigue?

Si estás interesado en obtener más información sobre las métricas recopiladas por GameBench Pro tools, puedes encontrar varias publicaciones de blog sobre el tema a continuación.

Métricas de rendimiento Blogs

Leave a Reply