Analiza el uso del ancho de banda de la memoria de Vertex

El ancho de banda de la memoria de los datos de vértices puede ser un cuello de botella potencial para el rendimiento de la GPU de tu juego. Hay algunos contadores en un perfil del sistema de la AGI que pueden ayudar a diagnosticar problemas de ancho de banda de la memoria de vértices.

Contadores de Qualcomm Adreno

En los dispositivos con GPUs Qualcomm Adreno, algunos contadores notables incluyen los siguientes:

Contador Descripción
Lectura de memoria de vértices Es el ancho de banda de los datos de vértices que se leen de la memoria externa.
Promedio de bytes por vértice Tamaño promedio de los datos de vértices, en bytes.
% de bloqueos de recuperación de Vertex Es el porcentaje de ciclos de reloj en los que la GPU está bloqueada en los datos de vértices.

Contadores de ARM Mali (en desarrollo)

En los dispositivos con GPUs ARM Mali, algunos contadores destacados son los siguientes:

Contador Descripción
Carga y almacena ritmos de lectura desde la memoria externa Son los bits de datos que lee la unidad de carga/almacenamiento de la memoria externa, promediados en los núcleos del sombreador.
Carga y almacena los ritmos de lectura desde la caché L2 Son los datos leídos de la caché de L2 por la unidad de carga/almacenamiento, promediados en los núcleos del sombreador.
[Más]

Para calcular el ancho de banda general a partir de los beats de lectura promedio, el valor del contador se multiplica por el ancho del bus (por lo general, 16 bytes) y por la cantidad total de núcleos de sombreador. [Más]

Análisis de contador

Para medir el comportamiento de estos contadores, puedes medir el ancho de banda promedio y máximo durante el transcurso de un solo fotograma de la GPU, que se puede delinear con un bloque contiguo de Utilización de la GPU.

Ancho de banda de lectura de memoria de vértices para un solo fotograma, con un valor promedio de 327 MB/s y un valor máximo de 1.16 GB/s
Figura 1: Ancho de banda de lectura de memoria de Vertex para un solo fotograma, con un valor promedio de 327 MB/s y un valor máximo de 1.16 GB/s

Recomendamos un ancho de banda máximo de lectura de memoria de vértices de no más de 1.5 GB/s y un ancho de banda promedio de no más de 500 MB/s. Los valores más altos son indicadores de uno de los siguientes problemas comunes:

  • El tamaño del vértice es demasiado grande: Es posible que los vértices tengan atributos grandes o una gran cantidad de atributos, lo que afecta el tiempo de sombreado de los vértices en general.
  • No se dividen los flujos de atributos de vértice: Los atributos de vértice se intercalan en un solo búfer, lo que reduce la eficiencia de la caché.
  • Se enviaron demasiados vértices por fotograma: Los modelos complejos o una gran cantidad de modelos pueden ocupar más ancho de banda y tardar más en generar sombras.

Los problemas de tamaño de los vértices también se pueden diagnosticar a través del seguimiento de Bytes promedio por vértice, que recomendamos que no supere los 32 bytes o vértices.

Tamaño promedio de los vértices para un solo fotograma, con un valor promedio de 31.3 bytes
Figura 2: Tamaño promedio de los vértices para un solo fotograma, con un valor promedio de 31.3 bytes

La mejor manera de diagnosticar cuál de estos problemas puedes estar enfrentando es tomar un registro de perfil de fotogramas para analizar los formatos de vértices.