Las características de uso de memoria de una app son un aspecto fundamental de su rendimiento. Puedes usar el System Profiler para analizar estas características consultando la información disponible del contador de GPU.
Dispositivos Adreno
En los dispositivos Adreno, primero destaca un período que coincida con un solo fotograma de GPU, como se describe en Cómo estimar los tiempos de procesamiento de fotogramas de CPU y GPU. Usa la técnica que se describe en esa página, que implica el uso del contador % de uso de la GPU o de un contador similar para hacer un seguimiento de los límites de latencia de fotogramas, ya que todos los contadores usan la misma técnica de sincronización y permitirán estimaciones más precisas del uso de la memoria (en comparación con el uso de los límites de latencia de fotogramas derivados de los segmentos de GPU cuyos datos se recopilan de forma independiente de los datos del contador).
Totales de lectura y escritura
Una vez que hayas destacado un solo fotograma en el generador de perfiles, comienza por observar los contadores Lectura total (bytes/s) y Escritura total (bytes/s). Estos contadores proporcionan una buena visión general de la cantidad de datos que cruzan el bus de memoria durante un solo fotograma. Haz todo lo posible para minimizar la cantidad de datos que envías a través del bus, ya que el ancho de banda de la memoria es una gran fuente de consumo de batería en los dispositivos móviles.
También puedes examinar los contadores Vertex Memory Read (Bytes/Second) y Texture Memory Read (Bytes/Second) para determinar la parte del ancho de banda que se usa para los datos de vértices y texturas.
Lo que consideres “bueno” para estos valores depende del tipo de cargas de trabajo que se observen en tu app. Por ejemplo, las aplicaciones en 2D pueden observar cantidades relativamente grandes (~2 GB/s o más) de ancho de banda de lectura de memoria de texturas en uso, pero el ancho de banda de memoria de vértices puede ser muy mínimo (~50 MB/s). Para obtener más detalles, consulta la documentación de Analizar el ancho de banda de la memoria de vértices y Analizar el uso del ancho de banda de la memoria de texturas.
Paradas de recuperación
Observa los contadores % Vertex Fetch Stall, % Texture Fetch Stall y % Stall on System Memory, ya que te darán algunas pistas sobre el rendimiento general de la memoria de nuestra aplicación. Si los valores son superiores al 5% aproximadamente, esto sugiere que tu app no está organizando los datos en la memoria de manera eficiente o no está accediendo a sus datos de manera eficiente para aprovechar la caché. Consulta Analiza el ancho de banda de la memoria de vértices y Analiza el uso del ancho de banda de la memoria de texturas para obtener detalles sobre cómo mejorar el uso de memoria para estos tipos de recursos.
Dispositivos Mali
En los dispositivos Mali, primero destaca un período que coincida con un solo fotograma de la GPU, como se describe en Cómo estimar los tiempos de procesamiento de fotogramas de la CPU y la GPU. Usa la técnica que se describe en esa página, que implica el uso del contador % de uso de la GPU o de un contador similar para hacer un seguimiento de los límites de latencia de fotogramas, ya que todos los contadores usan la misma técnica de sincronización y permitirán estimaciones más precisas del uso de la memoria (en comparación con el uso de los límites de latencia de fotogramas derivados de los segmentos de GPU cuyos datos se recopilan de forma independiente de los datos del contador).
Totales externos de salida
Después de destacar un solo fotograma en el Generador de perfiles del sistema, comienza por observar los contadores Bytes de lectura externa de salida y Bytes de escritura externa de salida. Estos contadores proporcionan una buena visión general de la cantidad de datos que cruzan el bus de memoria durante un solo fotograma. Haz todo lo posible para minimizar la cantidad de datos que envías a través del bus, ya que el ancho de banda de la memoria es una gran fuente de consumo de batería en los dispositivos móviles.
Ingresa los totales internos
También hay contadores que te brindan información sobre las propias memorias caché. Los contadores que te interesan son "Input internal [read|write] stall cycles". Los valores más altos para estos contadores significan que estás accediendo a la caché correctamente, pero se realizan demasiadas solicitudes de lectura y, como resultado, el código del sombreador se detiene a la espera de obtener acceso a la memoria.
Paradas de recuperación
El siguiente conjunto de contadores que puedes consultar son los contadores Vertex Prefetcher Stall Cycles y Texture Fetch Stall, ya que te darán algunas pistas sobre el rendimiento general de la memoria de nuestra aplicación. Si ves valores superiores al 5%, significa que no estás organizando nuestros datos en la memoria de manera eficiente o que no estás accediendo a ellos de manera eficiente para aprovechar la caché. Consulta los artículos sobre el análisis del ancho de banda de memoria de [vértices|texturas] para obtener detalles sobre cómo mejorar el uso de memoria para estos tipos de recursos.