Cómo analizar la eficiencia de la memoria

Las características de uso de memoria de una app son un aspecto fundamental de su rendimiento. Puedes usar el Generador de perfiles del sistema a fin de analizar estas características y observar la información disponible del contador de GPU.

Dispositivos Adreno

En los dispositivos Adreno, primero destaca un período coherente con un solo fotograma de GPU, tal como se describe en Estimar los tiempos de procesamiento de fotogramas de la CPU y la GPU. Usa la técnica descrita en esa página que involucre el uso del uso de porcentaje de GPU o una pista de contador similar para tus límites de latencia de fotogramas, ya que todos los seguimientos del contador usan la misma técnica de sincronización y permitirá 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 las porciones de GPU cuyos datos se recopilan independientemente de los datos de la pista del contador).

El segmento de utilización se alinea con los contadores relevantes debajo de él
Figura 1: Seguimiento de uso alineado con los contadores relevantes debajo

Totales de lectura/escritura

Una vez que hayas destacado un solo fotograma en el generador de perfiles, comienza por observar los contadores de Read Total (Bytes/s) y Write Total (Bytes/s). Estos contadores proporcionan un buen panorama general de la cantidad de datos que cruzan el bus de memoria en el transcurso de 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 agotamiento de la batería en los dispositivos móviles.

Total de contadores de lectura y escritura
Figura 2: Lectura y escritura de contadores totales

También puedes examinar los contadores de lectura de memoria de Vertex (bytes/segundo) y lectura de memoria de textura (bytes/segundo) a fin de determinar la porción del ancho de banda que se usa para los datos de vértices y texturas.

Contadores de lectura de memoria de textura y Vertex
Figura 3: Contadores de lectura de Vertex y de memoria de textura

Lo que consideres “bueno” para estos valores depende del tipo de cargas de trabajo que se observa en tu app. Por ejemplo, las aplicaciones 2D pueden ver cantidades relativamente grandes (alrededor de 2 GB/s) de ancho de banda de lectura de memoria de textura, pero el ancho de banda de memoria de Vertex puede ser muy mínimo (alrededor de 50 MB/s). Si deseas obtener más información, consulta la documentación de los artículos Cómo analizar el ancho de banda de memoria de vértices y Cómo analizar el uso del ancho de banda de memoria de texturas.

Recupera puestos

Observa los contadores de % de bloqueos de recuperación de Vertex, % de demora de recuperación de texturas y % de bloqueo en la memoria del sistema, ya que te darán algunas sugerencias sobre el rendimiento general de la memoria de nuestra aplicación. Si los valores son superiores al 5%, esto sugiere que tu app no distribuye los datos en la memoria de manera eficiente o que está accediendo a los datos de manera eficiente para aprovechar la caché. Para obtener detalles sobre cómo mejorar el uso de memoria de estos tipos de elementos, consulta Analiza el ancho de banda de memoria de vértices y Analiza el uso del ancho de banda de memoria de textura.

Contadores de recuerdos
Figura 4: Contadores de bloqueos de memoria

Dispositivos Malí

En los dispositivos Mali, comienza primero destacando un período coherente con un solo fotograma de GPU, tal como se describe en Estimar los tiempos de procesamiento de fotogramas de CPU y GPU. Usa la técnica descrita en esa página que involucre el uso del uso de porcentaje de GPU o una pista de contador similar para tus límites de latencia de fotogramas, ya que todos los seguimientos del contador usan la misma técnica de sincronización y permitirá 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 las porciones de GPU cuyos datos se recopilan independientemente de los datos de la pista del contador).

El segmento de utilización se alinea con los contadores que te interesan debajo de él
Figura 5: Seguimiento de uso alineado con los contadores que le interesan a continuación

Totales externos de salida

Después de destacar un solo fotograma en el Generador de perfiles del sistema, comienza observando los contadores de Output External Read bytes Output External Write bytes. Estos contadores proporcionan un buen panorama general de cuántos datos cruzan el bus de memoria en el transcurso de 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.

Pistas de contador externas de salida
Figura 6: Pistas de contador externas de salida

Ingresar totales internos

También existen contadores que te proporcionan información acerca de los cachés. Los contadores que te interesan son "Ingresar ciclos de bloqueo [read|write] internos". Los valores más altos significan que llegas a la caché de forma correcta, pero se están realizando demasiadas solicitudes de lectura y, como resultado, el código del sombreador se detiene en espera para obtener acceso a la memoria.

Pistas de contador internas de entrada
Figura 7: Pistas de contador internas de entrada

Recupera puestos

El siguiente conjunto de contadores que puedes consultar son los contadores de Vertex Prefetcher Stall Cycles y Texture Recovery Stall, ya que estos te darán algunas sugerencias sobre el rendimiento general de la memoria de nuestra aplicación. Si observas valores superiores al 5%, quiere decir que no estás presentando nuestros datos en la memoria de forma eficiente o que estás accediendo a nuestros datos de manera eficiente para aprovechar el almacenamiento en caché. Para obtener detalles sobre cómo mejorar el uso de memoria de este tipo de recursos, lea los artículos sobre cómo analizar el ancho de banda de memoria de [Vertex|Texture]

Recuperar pistas de contador de puestos
Figura 8: Recuperar pistas de contador de puestos