Top-Level Throughput
Top-Level Throughput 代表利用率(Utilization),反映 GPU 各个硬件的繁忙程度
在Top-Level Throughput还能看到其他性能指标

可以将这些分成三大类:
- 核心计算与调度(SM, RTCORE, Front End):反映了 GPU 的“大脑”和专用加速器的繁忙程度
- Front End:负责指令解码、任务分发
如果Front End高,说明 CPU 提交的小命令(Draw Call )太多
-
SM:通用计算核心
如果 SM Throughput 高,通常是 计算受限(Compute Bound),说明有复杂、冗余的数学计算(如sin、cos)
-
RTCORE:光追核心,处理 BVH 遍历和射线/三角面相交测试
若RTCORE 高但 SM 不高,说明光追的求交是瓶颈,需要优化 BVH 结构或减少射线发射密度
若RTCORE 高且SM Instruction Throughput也高,说明很健康
若RTCORE 高Wait on Memory 或 Dependency Stall高,说明硬件在空等数据返回
- 存储与数据交互(VRAM, L2, PCIe)
-
VRAM:显存带宽
如果 VRAM 高,说明读写显存非常频繁
-
L2:二级缓存, 是SM、纹理单元和显存之间的缓冲区
如果 L2 高但 VRAM 低,说明缓存命中率高,是健康的。如果 L2 和 VRAM 齐高,说明 L2 无法承载当前的数据吞吐,发生了大量的缓存失效
-
PCIe:总线带宽,CPU 和 GPU 之间的数据交换
如果这里高,检查是否在每一帧都在上传巨大的顶点 Buffer 或纹理,或者频繁从 GPU
Readback数据
- 固定功能管线(World Pipe, Screen Pipe)
-
World Pipe:顶点着色器、曲面细分、几何着色器
如果这里高,说明三角形太多或几何负载过重
-
Screen Pipe:光栅化、像素着色器、混合
如果这里高且 ROP(后端)也高,说明 Overdraw(过度绘制) 严重,或者填充率(Fill-rate)达到了上限
SM Warp Occupancy
表示SM 中实际活跃的 Warp 数量与 SM 理论最大支持 Warp 数量的比值,是衡量 SM 运行效率的最关键指标
- 占用率低:通常意味着 SM 内部资源受限。可能是每个线程使用的 Register(寄存器) 太多,或者是 Shared Memory 分配量过大,导致 SM 无法容纳更多的 Warp
- 占用率高但性能差:说明虽然 Warp 很多,但它们都在等待(Stall),比如在等显存读取数据(Memory Latency)
- 如果是因为寄存器受限,尝试优化着色器逻辑以减少局部变量;如果是为了掩盖延迟,保持适当的高占用率是有益的
Unallocated Warps in Active SMs
虽然 SM 已经在运行(Active),但由于某种原因,它还有多少剩余的“坑位”没有被填满,反映了 GPU 的“闲置潜力”
- 数值高:说明 GPU 并没有满载。原因可能是 Global Dispatch 限制(比如当前 Dispatch 的总线程数不够多,分不到所有 SM 上)或者是 前端分发(Front End)速度 跟不上
- 与 SM WarpOccupancy 结合:如果 Occupancy 很低且 Unallocated 很高,说明是任务总量太少(比如渲染一个很小的图标);如果 Occupancy 已经触顶,Unallocated 应该接近于零
Pixel Warps、Vertex/Tess/Geometry Warps
展示了当前 GPU 正在忙着处理哪种类型的任务
- Pixel Warps
如果 Pixel Warps 占比极大,说明当前是 后端的像素着色瓶颈。检查是否存在严重的 Overdraw(过度绘制)或极其复杂的材质计算
-
Vertex / Tess / Geometry Warps
如果 Vertex Warps 异常高,检查是否模型面数过多或没做 LOD。
如果 Tessellation/Geometry Warps 很高,通常意味着曲面细分级别过高,产生了大量微小三角形,导致严重的硬件浪费
通用策略
| 现象 | 瓶颈 | 优化 |
|---|---|---|
| CS Warp Occupancy 极低 | 资源受限 | 减少 Shader 寄存器使用或 Shared Memory 大小 |
| Unallocated Warps 极高 | 任务量不足 | 增加任务并行度,或合并小型 Draw Call |
| Pixel Warps >> Vertex Warps | 像素受限 | 优化材质 Shader,检查不透明物体的渲染顺序 |
| Vertex Warps 占满总线 | 几何受限 | 使用 Mesh Shader 或 LOD |
存储与带宽
它们有PCIe Bandwidth、PCIe Incoming BAR Accesses、VRAM Bandwidth、L2 Bandwidth per Source Unit、L2 Sector Hit-Rate (Total)、L2 Sector Hit-Rate from L1TEX
它们反映了数据在 CPU、显存和各级缓存之间的流动效率
VRAM Bandwidth
- 含义:物理(显卡)显存(Video RAM)的读写带宽
- 分析
- 对比显卡的理论带宽。如果达到 70%-80% 以上,说明是显存带宽受限
PCIe Bandwidth
- 含义:表示CPU 与 GPU 之间通过 PCIe 总线交换数据的带宽
- 分析
- 高 PCIe + 低 VRAM:说明瓶颈在总线。可能每帧都在上传大量的动态顶点数据或更新庞大的CBuffer
- 低 PCIe + 高 VRAM:说明数据交换主要发生在 GPU 内部。这是现代渲染器的常态,说明瓶颈在显存带宽
PCIe Incoming BAR Accesses
- 含义:CPU 通过 Base Address Register 直接访问 GPU 内存的次数
- 分析
- 高频访问可能意味着CPU 正频繁地修改GPU中的小块数据,这通常比一次性大批量传输更低效
L2 Bandwidth per Source Unit
- 含义:每个请求源(如 SM、显示引擎)访问 L2 缓存的带宽
- 分析
- VRAM Bandwidth、L2 Bandwidth per Source Unit都很高,说明显存读写任务多
- L2 Bandwidth per Source Unit达到极限,即使VRAM Bandwidth没有,会产生瓶颈
L2 Sector Hit-Rate (Total)
- 含义:L2 缓存的总命中率
- 分析
- 若VRAM Bandwidth低,L2 Sector Hit-Rate高,说明L2利用率高,且越高越好,效率很高
- 若VRAM Bandwidth高,L2 Sector Hit-Rate低,说明存在缓存抖动,利用率低,效率很低
通用策略
| 现象 | 瓶颈 | 优化 |
|---|---|---|
| VRAM BW 高 + L2 Hit-Rate 低 | 带宽受限(Bandwidth Bound) | 压缩纹理格式 ,减少 Render Target ,使用Z-Prepass |
| VRAM BW 低 + L2 Hit-Rate 低 + Latency 高 | 内存延迟受限 (Latency Bound) | 优化采样点分布,减少随机跳转访问,使用更紧凑的数据结构 |
| PCIe BW 持续高位 | 总线受限 (PCIe Bound) | 使用 GPU Driven,减少 CPU 端的资源上传频率 |
指令执行与线程效率
它们有SM Instruction Throughput、Active Threads Per Warp、Warps Launched、Compute In Flight
它们反映了SM(流式多处理器)处理代码的速度
SM Instruction Throughput
- 含义:SM 实际执行指令的吞吐量,衡量 GPU 到底有没有“在干活”的核心指标
- 分析
- 如果很低,说明 SM 在等待或者没活干(需要看Avg Warp Latency 、Occupancy )
- 若 Throughput 低,Avg Warp Latency高,ALU被延迟卡住
- 若Throughput 低,Occupancy 低,任务量不足
- 如果极高,说明GPU的ALU满载,需要优化数学公式
- 波动较大,说明存在等待
Active Threads Per Warp
- 含义:每个 Warp 中实际活跃(未被掩码屏蔽)的线程数(最大 32)
- 分析
- 如果该值远低于 32,说明存在 Branch Divergence(分支分歧),即
if/else导致线程在串行执行
- 如果该值远低于 32,说明存在 Branch Divergence(分支分歧),即
Warps Launched
- 含义:创建新 Warp 的频率
Compute In Flight
- 含义:当前 GPU 执行的计算任务总量
通用策略
| 现象 | 瓶颈 | 优化 |
|---|---|---|
| SM Instruction 低 + Active Threads < 32 | 分支分歧受限 | 减少分支深度 |
| SM Instruction 低 + SM Warps Stalled (Math) | 算术指令延迟 | 检查是否有高延迟指令(如 long long 运算或复杂的 exp/log),尝试降低精度 |
| SM Instruction 高 + SM Warp Occupancy 低 | 资源受限但高效 | 虽然 Shader 跑得快,但因为寄存器占用多,无法并行。尝试减少局部变量 |
| SM Instruction 极低 + Compute In Flight 极低 | 任务量不足 | 将小的 Dispatch 合并,或者在计算时增大线程组(Thread Group)的大小 |
占用率与延迟
表示硬件资源的调度情况
SM Warp Occupancy
- 含义:SM 实际承载的 Warp 数量占硬件最大理论值的百分比
SM Warp Occupancy (sampled)
- 含义: 采样得到的瞬时占用率
- 分析
- 高占用率有助于隐藏延迟。如果占用率低,通常是因为 Shader 使用了太多Register或Shared Memory
Avg Warp Latency
- 含义:一个 Warp 从发射到完成的平均耗时
- 分析
- 延迟高并不一定意味着慢,只要 Occupancy 够高,GPU 就能在等待延迟时切换到其他 Warp 工作
通用策略
| 现象 | 瓶颈 | 优化 |
|---|---|---|
| 高 Latency + 高 Occupancy | 健康。虽然延迟大,但有足够的任务在跑,掩盖了等待 | 如果性能仍不达标,考虑减少指令总量 |
| 高 Latency + 低 Occupancy | 瓶颈。SM 在空转,因为没活干,又在等内存 | 最高优先级优化。减少寄存器占用(提占用率)或优化缓存命中 |
| 低 Latency + 低 Occupancy | GPU没任务 | 增加工作负载,合并小的 Dispatch |
| 低 Latency + 高 Occupancy | 完美。极速计算且满载 | 无需优化,已达硬件上限 |
停顿原因
SM Warps Stalled at Issue Stage
- 含义:Warp 已经准备好,但在“指令发射”阶段停顿
-
分析
可能有多个原因,如:
- Wait on Memory:Warp 正在执行
Load操作,数据还没从缓存或显存里回来 - Wait on Math:ALU瓶颈,即使 Warp 准备好了,也得排队等计算单元
- Wait on Barrier/Sync:通常出现在 Compute Shader 中,Warp 在等
GroupMemoryBarrierWithGroupSync()
- Wait on Memory:Warp 正在执行
Warp Can't Launch
- 含义:新的 Warp 无法被塞进 SM
-
分析
可能有多个原因,如:
- Register Limited:Shader 声明了太多局部变量。每个 SM 的寄存器总量是固定的(例如 64KB),如果每个 Warp 占用太多,能塞进去的 Warp 总数就会下降
- Shared Memory Limited:申请了大量的 groupshared 内存,SM 会因为存不下更多 Thread Group 而拒绝新的 Warp
- Max Blocks/Warps Per SM:达到了硬件设计的上限(如某些架构每个 SM 最多 32 个 Blocks)
TRAM Allocation Stalled / ISBE Allocation Stalled
- 含义:GPU 内部分配的缓冲区溢出
-
TRAM Allocation Stalled (Texture RAM): GPU 内部处理纹理/缓存请求的一个中间缓冲区
原因:
- 在短时间内发起了大量的、非连续的、且带有复杂地址计算的纹理采样请求,TRAM 可能会被占满
- ISBE Allocation Stalled (Instruction Scoreboard Event):ISBE 是硬件用来追踪“指令依赖关系”的记分板
原因:
- Shader 指令链非常长,且相互之间有复杂的依赖关系(例如:A 的结果给 B,B 给 C,C 再给 D... 同时还有几十个这样的链并行),记分板的条目被耗尽
- 分析
- 如果这两个指标高,通常意味着着色器逻辑极其复杂,超出了硬件内部管理小块临时数据的能力
通用策略
| 现象 | 瓶颈 | 优化 |
|---|---|---|
| Wait on Memory 高 + L2 Hit-Rate 低 + VRAM BW 低+Avg Warp Latency 极高 | 内存延迟受限。访问地址太随机 | 提升局部性:缩小采样半径或使用更紧凑的缓存友好布局 预取数据:利用groupshared 预加载块数据 |
| SM Instruction Throughput低+ Unallocated Warps高+SM Warp Occupancy低+Warp Can't Launch高 | 寄存器压力受限。局部变量太多,导致 SM 物理空间虽有,但塞不下更多 Warp,无法掩盖任何执行延迟 | 减少局部变量定义,复用变量寄存器 将一个超长 Shader 拆分为两个 Pass 使用 [branch] 减少展开后的寄存器占用 |
| L2 Bandwidth per Source Unit高+VRAM Bandwidth高+Wait on Memory 与 L2 Hit-Rate 呈现负相关 | 显存带宽受限 | 压缩纹理 利用共享内存减少重复读取 |
| SM Instruction Throughput高+Math Pipe Busy 高+Stalls at Issue Stage 主要是 Wait on Math | ALU满载 | 算法简化 精度折衷 LUT |
快速分析
- 看 Top-Level Throughput 视图中哪个单元的柱状图最高:确定是SM 还是 Memory 忙
-
SM > 80%:计算受限 (Math/Shader Bound)。Shader 代码太重
-
VRAM/L2 > 70%:带宽受限 (Memory Bound)。在疯狂搬运数据
-
World Pipe 高:几何受限 (Geometry Bound)。三角形太多或顶点 Shader 太慢
-
RT Core 高:光追受限 (RT Bound)。BVH 遍历太久或射线太多
-
Front End 高:调度受限 (Command/API Bound)。Draw Call 太碎
- 核心效率交叉验证
- 占用率 (Occupancy) 与 停顿 (Stalls)
- 高占用率 + 高吞吐量:完美状态。硬件正在全速跑
- 低占用率 + 高延迟 (Latency):危险状态。SM 因为资源压力塞不下更多 Warp,导致无法掩盖内存延迟,产生大量空转
- 带宽 (Bandwidth) 与 命中率 (Hit-Rate)
- 高 VRAM 带宽 + 低 L2 命中率:缓存抖动
- 低 VRAM 带宽 + 低 L2 命中率 + 高延迟:延迟瓶颈。虽然没塞满路,但每次请求都很慢




Comments | NOTHING