分析顶点内存带宽使用情况

顶点数据的内存带宽可能是您游戏 GPU 性能的潜在瓶颈。AGI 系统分析中有一些计数器可以帮助诊断顶点内存带宽问题。

Qualcomm Adreno 计数器

在配备 Qualcomm Adreno GPU 的设备上,一些值得注意的计数器包括:

计数器 描述
顶点内存读取 从外部内存读取顶点数据的带宽。
平均字节/顶点 顶点数据的平均大小(以字节为单位)。
顶点获取停顿百分比 GPU 由于顶点数据而阻塞的时钟周期的百分比。

ARM Mali 计数器(开发中)

在配备 ARM Mali GPU 的设备上,一些值得注意的计数器包括:

计数器 描述
从外部内存加载/存储读取节拍 加载/存储单元从外部内存读取的数据节拍,平均值取自着色器核心。
从 L2 缓存加载/存储读取节拍 加载/存储单元从 L2 缓存读取的数据节拍,平均值取自着色器核心。
更多

要计算根据平均读取节拍计算的总带宽,计数器值将乘以总线宽度(通常为 16 字节)和着色器核心总数。更多

计数器分析

要测量这些计数器的行为,您可以测量单个 GPU 帧过程中的平均和峰值带宽,这可以使用连续的 **GPU 利用率** 块来划分。

Vertex memory read bandwidth for a single frame, with an average value of 327 MBps and a peak value of 1.16 GBps
图 1:单个帧的顶点内存读取带宽,平均值为 327 MBps,峰值为 1.16 GBps

我们建议峰值顶点内存读取带宽不高于 1.5 GBps,平均带宽不高于 500 MBps。较高的值表示以下几个常见问题之一:

  • 顶点大小太大:顶点可能具有较大的顶点属性或大量的顶点属性,从而影响大型的顶点着色时间。
  • 顶点属性流未拆分:顶点属性被交错到单个缓冲区中,降低了缓存效率。
  • 每帧提交的顶点过多:复杂的模型和/或大量的模型可能会占用更大的带宽,并且着色时间更长。

也可以通过 **平均字节/顶点** 轨迹来诊断顶点大小问题,我们建议该值不高于 32 字节或顶点。

Average vertex size for a single frame, with an average value of 31.3 bytes
图 2:单个帧的平均顶点大小,平均值为 31.3 字节

诊断您可能面临的这些问题的最佳方法是进行帧分析跟踪以 分析顶点格式