分析頂點記憶體頻寬用量

頂點資料的記憶體頻寬可能會成為遊戲 GPU 效能的瓶頸。AGI 系統設定檔中有幾個計數器可協助診斷頂點記憶體頻寬問題。

Qualcomm Adreno 計數器

在搭載 Qualcomm Adreno GPU 的裝置上,一些值得注意的計數器包括:

計數器 說明
Vertex 記憶體讀取 從外部記憶體讀取的頂點資料頻寬。
平均位元組/頂點 頂點資料的平均大小 (以位元組為單位)。
% Vertex Fetch Stall GPU 因頂點資料而遭到封鎖的時脈週期百分比。

ARM Mali 計數器 (開發中)

在搭載 ARM Mali GPU 的裝置上,一些值得注意的計數器包括:

計數器 說明
從外部記憶體載入/儲存讀取節拍 由載入/儲存單元從外部記憶體讀取的資料節拍,在著色器核心中平均。
從 L2 快取載入/儲存讀取節拍 負載/儲存單元從 L2 快取讀取的資料節拍,在著色器核心中平均分配。
[更多]

如要根據平均讀取節拍計算整體頻寬,請將計數器值乘以匯流排寬度 (通常為 16 個位元組) 和著色器核心總數。[更多]

計數器分析

如要測量這些計數器的行為,您可以測量單一 GPU 影格期間的平均和尖峰頻寬,這可透過連續的「GPU 使用率」區塊劃分。

單一影格的 Vertex 記憶體讀取頻寬,平均值為 327 MBps,峰值為 1.16 GBps
圖 1: 單一影格的頂點記憶體讀取頻寬,平均值為 327 MBps,峰值為 1.16 GBps

建議尖峰頂點記憶體讀取頻寬不超過 1.5 Gbps,平均頻寬不超過 500 MB/秒。值越高,表示可能出現下列常見問題:

  • 頂點大小過大:頂點可能具有大型頂點屬性或大量頂點屬性,大幅影響頂點著色時間。
  • 頂點屬性串流未分割:頂點屬性會交錯插入單一緩衝區,降低快取效率。
  • 每個影格提交的頂點過多:複雜模型和/或大量模型可能會佔用更多頻寬,且需要較長時間才能著色。

您也可以透過「每個頂點的平均位元組數」軌跡診斷頂點大小問題,建議不要超過 32 個位元組或頂點。

單一影格的平均頂點大小,平均值為 31.3 個位元組
圖 2: 單一影格的平均頂點大小,平均值為 31.3 個位元組

如要診斷您可能面臨的問題,最好的方法是擷取影格設定檔追蹤記錄,以分析頂點格式