本文介绍 PerfKitty 中的 Qualcomm Adreno GPU 性能指标,包括中英文名称、单位、指标含义和常见分析方法。指标是否可采集取决于 GPU 型号、驱动版本、Android 系统、设备厂商开放情况和当前工作负载;界面中没有返回某项指标时,不应把缺失值理解为 0。
指标范围
PerfKitty 当前将 Adreno 指标整理为 9 个大类、32 个分析组,共 89 个语义指标条目。为了兼容不同来源和版本,其中 Clocks、Fragments Shaded、Vertices Shaded 各保留了两个语义相同的条目,因此本文会在表格中分别标明兼容条目。
不同 Adreno 代际支持的计数器集合并不完全相同。光线追踪、BVH 和 RTU 相关指标只会出现在具备相应硬件与驱动支持的设备上;其他指标也可能因权限、驱动或采集接口限制而缺失。本文解释的是 PerfKitty 中的统一显示语义,不代表所有 Adreno GPU 都使用完全相同的底层计数器或计算公式。
如何阅读单位和百分比
%:比例指标。不同指标的分母可能是总采样时间、GPU 忙碌周期、Shader 忙碌周期或某类请求总数,因此不能看到百分比就直接相加。
Count:采样区间内的事件数或厂商定义的计数量。跨测试比较时应尽量保持采样周期、场景时长和负载一致。
Count/Second:已按时间归一化的每秒事件速率,适合比较不同长度的采样区间。
Bytes/Second:带宽速率。界面可能自动换算为 KB/s、MB/s 或 GB/s,比较时应确认单位量级。
Cycles:GPU 时钟周期数。周期对应的实际时间会随频率变化,不能脱离 GPU 频率直接换算成固定延迟。
Bytes/Fragment、Bytes/Vertex、Textures/Fragment 等:按工作项归一化的密度指标,更适合判断单个片元或顶点的成本。
同一指标没有适用于所有设备和场景的固定“正常值”。优先比较同一设备、相近温度、相近 GPU 频率、相同画质、相同场景和相同 PerfKitty 版本下的数据。
Adreno 模块术语速查
| 缩写 |
常用含义 |
阅读提示 |
| CP |
Command Processor,命令处理器 |
负责命令流、调度和部分抢占相关工作。 |
| RBBM |
Register Bus and Bus Monitor,寄存器总线与忙碌监控模块 |
常用于提供 GPU 整体忙碌周期等状态。 |
| SP |
Shader Processor,着色器处理器 |
执行顶点、片元和计算着色工作。 |
| TP |
Texture Processor,纹理处理器 |
负责纹理取样、过滤和相关缓存访问。 |
| UCHE |
Unified Cache,统一缓存 |
位于多个 GPU 客户端与系统内存路径之间;具体结构随代际变化。 |
| GBIF |
Graphics Bus Interface,图形总线接口 |
连接 GPU 与更下游的内存/互连路径。 |
| VFD |
Vertex Fetch/Decode,顶点获取与解码 |
读取并准备顶点数据。 |
| PC |
Primitive Controller,图元控制模块 |
参与顶点复用、图元组织和前端处理。 |
| LRZ |
Low Resolution Z,低分辨率深度测试 |
用于在更早阶段拒绝被遮挡的图元或像素,减少后续片元工作。 |
| EFU |
Elementary Function Unit,特殊函数单元 |
执行倒数、平方根、三角函数等较复杂运算;具体能力随架构变化。 |
| RTU |
Ray Tracing Unit,光线追踪单元 |
负责或协助光线与包围盒、三角形求交。 |
| BVH |
Bounding Volume Hierarchy,包围体层次结构 |
光线追踪中用于加速场景求交的数据结构。 |
这些名称用于帮助理解指标所属路径,不应据此假设所有 Adreno 型号具有完全相同的内部微架构。
建议的组合分析顺序
- 先用
GPU % Busy、GPU % Utilization、GPU 频率、FPS 和帧时间确认问题是否与 GPU 压力同步。
- GPU 忙碌较高时,再看
% Shaders Busy、% Texture Pipes Busy、% LRZ Busy 和 % RTU Busy,定位主要活跃单元。
- 查看
% Shaders Stalled、系统内存停顿、纹理取样停顿和顶点获取停顿,判断高忙碌是否包含大量等待。
- 结合读写带宽、L1/L2 命中或未命中率、每片元/顶点字节数,确认是否受内存流量或访问局部性限制。
- 最后用每片元/顶点指令数、过滤方式、图元裁剪、平均多边形面积和阶段时间占比定位具体内容成本。
GPU General / GPU 常规指标
GPU Clock Rate / GPU 时钟计数速率
Clocks 表示设备时钟计数器的每秒速率。它适合与利用率、帧时间和系统报告的 GPU 频率一起观察,但不应直接当作界面中的 MHz 频率值。
| PerfKitty 英文名 |
中文名 |
单位 |
指标解释 |
分析提示 |
Clocks |
时钟计数速率 |
Count/Second |
GPU 常开时钟计数器在每秒内的推进速率。 |
与 GPU 频率、GPU % Busy 和帧时间一起看;速率变化可能来自调频而不只是负载变化。 |
Clocks |
时钟计数速率(兼容条目) |
Count/Second |
与上一项语义和计算口径相同的兼容条目。 |
若界面同时出现两个同名值,以趋势一致性为主,不要把二者相加。 |
GPU Execution Time / GPU 执行时间指标
| PerfKitty 英文名 |
中文名 |
单位 |
指标解释 |
分析提示 |
GPU Execution Time |
GPU 执行时间计数 |
Count |
由设备侧语义接口提供的 GPU 执行时间相关计数量;当前显示单位不是毫秒。 |
适合在同一设备与相同采样设置下比较趋势;不要直接换算为一帧耗时,应同时查看帧时间。 |
GPU Utilization Overview / GPU 利用率概览
| PerfKitty 英文名 |
中文名 |
单位 |
指标解释 |
分析提示 |
% Bus Busy |
总线忙碌率 |
% |
综合反映 RBBM、UCHE 和 GBIF 等 GPU 总线或内存路径的活跃程度。 |
与读写带宽及系统内存停顿一起看;高值可能表示内存路径繁忙,但不等同于一定达到带宽上限。 |
GPU % Busy |
GPU 忙碌率 |
% |
GPU 忙碌周期占常开计数周期的比例,表示采样期间 GPU 有多少时间处于工作状态。 |
高值且帧时间升高通常说明 GPU 压力较大;低值但帧慢时应检查 CPU、同步、限帧和等待。 |
GPU % Utilization |
GPU 利用率 |
% |
按 GPU 最大频率口径估算的总体利用程度,会同时受到忙碌时间和运行频率影响。 |
与 GPU % Busy 对照:忙碌高而该值较低时,可能是 GPU 运行频率较低或最大频率口径发生变化。 |
GPU Memory Stats / GPU 内存指标
Global Memory Bandwidth / 全局内存带宽
| PerfKitty 英文名 |
中文名 |
单位 |
指标解释 |
分析提示 |
Global Buffer Read Bytes |
全局缓冲区读取字节数 |
Bytes |
采样区间内从全局缓冲区内存路径读取的总字节数。 |
与采样时长、负载规模和 Global Buffer Read Request BW 一起比较;不同采样时长下不要只比总量。 |
Global Buffer Read Request BW |
全局缓冲区读取请求带宽 |
Bytes/Second |
全局缓冲区读取请求按时间归一化后的带宽。 |
高值时结合 L2 命中率和系统内存停顿判断请求是否大量落到下游内存。 |
Global Image Compressed Read BW |
全局图像压缩读取带宽 |
Bytes/Second |
压缩图像数据在相关解压缩与内存路径上的读取带宽。 |
与未压缩读取带宽、纹理带宽和画质设置一起看;压缩流量增加不一定代表总外部带宽增加。 |
Global Image Read Request BW |
全局图像读取请求带宽 |
Bytes/Second |
图像资源读取请求按时间归一化后的带宽。 |
高值常见于纹理或图像访问密集场景;结合纹理缓存未命中和每片元纹理数判断。 |
Global Image Uncompressed Read BW |
全局图像未压缩读取带宽 |
Bytes/Second |
以未压缩口径统计的图像读取带宽。 |
与压缩读取带宽对照,观察资源格式、压缩和访问方式变化带来的流量差异。 |
L2 Cache Hit Ratios / L2 缓存命中率
| PerfKitty 英文名 |
中文名 |
单位 |
指标解释 |
分析提示 |
% Global Buffer Read L2 Hit |
全局缓冲区读取 L2 命中率 |
% |
Shader 或全局缓冲区读取在统一缓存路径中的命中比例。 |
持续下降且外部读取带宽、系统内存停顿同时上升时,优先检查工作集大小和访问局部性。 |
% Global Buffer Write L2 Hit |
全局缓冲区写入 L2 命中率 |
% |
Shader 或全局缓冲区写入在 L2/统一缓存路径中的命中比例。 |
与实际写入字节数、请求写入字节数和总写带宽一起看,判断写入合并与缓存效率。 |
% Image Read L2 Hit |
图像读取 L2 命中率 |
% |
纹理或图像读取在 L2/统一缓存路径中的命中比例。 |
低值并伴随纹理读取带宽和取样停顿升高时,可能存在大纹理工作集、随机访问或 Mipmap 使用不佳。 |
Load Store Efficiency / Load/Store 效率
| PerfKitty 英文名 |
中文名 |
单位 |
指标解释 |
分析提示 |
Avg Load Store Instructions Per Cycle |
每周期平均 Load/Store 指令数 |
Count |
Shader 执行期间每个相关周期平均处理的加载与存储指令数量。 |
与 Load Store Utilization、ALU 指令密度和内存停顿一起看,区分内存指令密集与真正的带宽等待。 |
Load Store Utilization |
Load/Store 单元利用率 |
% |
Load/Store 控制单元工作周期占 Shader 忙碌周期的比例。 |
高值表示 Shader 中内存访问活动较多;若同时系统内存停顿低,可能仍是有效的数据吞吐。 |
Memory Bandwidth Overview / 内存带宽概览
| PerfKitty 英文名 |
中文名 |
单位 |
指标解释 |
分析提示 |
Read Total BW |
总读取带宽 |
Bytes/Second |
GPU 通过 GBIF 读取路径产生的合计带宽。 |
与设备内存能力、% Bus Busy 和系统内存停顿一起比较;跨设备不要用同一绝对阈值。 |
Write Total BW |
总写入带宽 |
Bytes/Second |
GPU 通过 GBIF 写入路径产生的合计带宽。 |
高值时检查渲染目标分辨率、颜色/深度格式、MSAA、后处理和中间缓冲区数量。 |
Memory Bytes per Work Item / 每工作项内存字节数
| PerfKitty 英文名 |
中文名 |
单位 |
指标解释 |
分析提示 |
Avg Bytes Per Fragment |
每片元平均字节数 |
Bytes/Fragment |
平均每个着色片元对应的内存流量。 |
上升时检查过度绘制、纹理层数、渲染目标格式和每像素读写;与片元数量一起判断总影响。 |
Avg Bytes Per Vertex |
每顶点平均字节数 |
Bytes/Vertex |
平均每个着色顶点对应的内存流量。 |
上升时检查顶点格式、属性数量、蒙皮数据和顶点复用;与顶点吞吐一起观察。 |
Memory Instruction Counts / 内存指令计数
| PerfKitty 英文名 |
中文名 |
单位 |
指标解释 |
分析提示 |
Global Memory Atomic Instructions |
全局内存原子指令数 |
Count |
采样区间内执行的全局内存原子操作数量。 |
原子操作多时容易产生串行化和争用;结合计算工作负载、Shader 停顿和带宽判断。 |
Global Memory Load Instructions |
全局内存加载指令数 |
Count |
Shader 执行的全局内存读取指令数量。 |
与存储指令、ALU 指令和工作项数量归一化后比较,避免仅凭总数判断复杂度。 |
Global Memory Store Instructions |
全局内存存储指令数 |
Count |
Shader 执行的全局内存写入指令数量。 |
高值时结合写带宽和实际写入字节数,判断是否存在频繁散写或大输出。 |
Local Memory Atomic Instructions |
局部内存原子指令数 |
Count |
采样区间内执行的局部或工作组内存原子操作数量。 |
在计算 Shader 中与线程组设计一起分析;高争用可能降低并行效率。 |
Local Memory Load Instructions |
局部内存加载指令数 |
Count |
Shader 执行的局部或工作组内存读取指令数量。 |
与局部存储、计算阶段时间和 Wave 占用率一起看,判断共享数据复用是否有效。 |
Local Memory Store Instructions |
局部内存存储指令数 |
Count |
Shader 执行的局部或工作组内存写入指令数量。 |
高值不一定异常;需结合算法的数据交换方式、同步次数和计算吞吐判断。 |
Memory Read Bandwidth by Client / 按客户端划分的读取带宽
| PerfKitty 英文名 |
中文名 |
单位 |
指标解释 |
分析提示 |
SP Memory Read |
Shader 处理器读取带宽 |
Bytes/Second |
SP 通过统一缓存和下游内存路径产生的读取带宽。 |
与全局内存加载指令、Load/Store 利用率和系统内存停顿一起看。 |
Texture Memory Read BW |
纹理内存读取带宽 |
Bytes/Second |
TP 纹理路径产生的下游读取带宽。 |
高值且纹理缓存未命中、纹理取样停顿同时升高时,优先优化纹理尺寸、格式、Mipmap 和采样局部性。 |
Vertex Memory Read |
顶点内存读取带宽 |
Bytes/Second |
VFD 顶点获取路径产生的下游读取带宽。 |
与顶点获取停顿、每顶点字节数和顶点复用一起判断顶点数据是否过重。 |
Memory Write Bytes / 内存写入字节数
| PerfKitty 英文名 |
中文名 |
单位 |
指标解释 |
分析提示 |
Bytes Data Actually Written |
实际写入字节数 |
Bytes |
采样区间内最终在相关内存路径上实际写出的数据量。 |
与请求写入字节数比较,可观察压缩、合并或写放大后的实际流量变化。 |
Bytes Data Write Requested |
请求写入字节数 |
Bytes |
GPU 工作负载发起或逻辑上要求写入的数据量。 |
若实际写入明显高于请求量,应检查写放大和格式;若更低,可能受压缩或写合并影响。 |
Texture Cache Efficiency / 纹理缓存效率
| PerfKitty 英文名 |
中文名 |
单位 |
指标解释 |
分析提示 |
% L1 Hit |
纹理 L1 命中率 |
% |
纹理 L1 请求中未发生缓存行未命中的比例。 |
与 % Texture L1 Miss 应呈互补趋势;命中率下降时检查纹理访问连续性和工作集。 |
% Texture L1 Miss |
纹理 L1 未命中率 |
% |
纹理 L1 缓存行请求中发生未命中的比例。 |
高值并不单独等于瓶颈;只有与带宽或纹理停顿同步升高时才更值得优先处理。 |
% Texture L2 Miss |
纹理 L2 未命中率 |
% |
纹理请求未在 L2/统一缓存路径中满足、需要继续访问下游的比例口径。 |
与图像 L2 命中率、纹理读取带宽和系统内存停顿联合判断。 |
L1 Texture Cache Miss Per Pixel |
每像素纹理 L1 未命中数 |
Misses/Pixel |
每个输出像素平均触发的纹理 L1 缓存未命中次数。 |
适合跨分辨率比较纹理访问成本;升高时检查每像素采样数量、Mipmap 和访问局部性。 |
GPU Preemption / GPU 抢占指标
Preemption Events and Latency / 抢占事件与延迟
| PerfKitty 英文名 |
中文名 |
单位 |
指标解释 |
分析提示 |
Average Preemption Delay |
平均抢占延迟 |
Cycles |
每次 GPU 抢占事件从请求到响应的平均延迟周期数。 |
与抢占次数、GPU 频率和帧时间尖峰一起看;跨频率时不要只比较周期数。 |
Preemptions |
每秒抢占次数 |
Count/Second |
GPU 每秒发生的抢占事件数量。 |
偶发抢占通常不代表问题;持续升高且伴随延迟或帧时间抖动时,再检查多任务与系统调度影响。 |
GPU Primitive Processing / GPU 图元处理指标
Primitive Culling and Rejection / 图元裁剪与拒绝
| PerfKitty 英文名 |
中文名 |
单位 |
指标解释 |
分析提示 |
% LRZ Busy |
LRZ 忙碌率 |
% |
低分辨率深度测试模块处于忙碌状态的比例。 |
高值时结合 LRZ 拒绝量、片元着色量和过度绘制判断早期深度处理的压力与收益。 |
% Prims Clipped |
图元裁剪率 |
% |
输入图元中被裁剪阶段部分或全部裁剪的比例。 |
高值时检查相机裁剪面、屏幕边缘的大图元和场景提交范围;裁剪本身也会产生前端工作。 |
% Prims Trivially Rejected |
图元快速拒绝率 |
% |
输入图元中无需复杂裁剪即可直接判定不可见的比例。 |
高值说明提交了较多屏幕外或裁剪空间外图元,可考虑更早的对象级或网格级剔除。 |
LRZ Pixels Killed |
LRZ 拒绝像素数 |
Count |
LRZ 阶段提前拒绝、无需进入后续片元处理的像素数量。 |
与片元着色数和画面内容一起看;较高可能表示早期深度有效,也可能说明场景过度绘制较重。 |
LRZ Prims Killed |
LRZ 拒绝图元数 |
Count |
LRZ 阶段提前拒绝的图元数量。 |
与输入图元吞吐和平均多边形面积一起看,判断遮挡剔除收益及无效几何提交。 |
Primitive Geometry Shape / 图元几何形态
| PerfKitty 英文名 |
中文名 |
单位 |
指标解释 |
分析提示 |
Average Polygon Area |
平均多边形面积 |
Pixels |
可见多边形投影到屏幕后平均覆盖的像素面积。 |
很小时常见于微小三角形,会增加前端和栅格化开销;结合 LOD、分辨率和图元吞吐判断。 |
Average Vertices Per Polygon |
每多边形平均顶点数 |
Vertices/Polygon |
图元工作负载中每个多边形对应的平均顶点处理量,反映一定程度的顶点复用。 |
值偏高时检查索引缓冲、重复顶点、网格切分和顶点缓存局部性。 |
Primitive Throughput / 图元吞吐
| PerfKitty 英文名 |
中文名 |
单位 |
指标解释 |
分析提示 |
Pre-Clipped Polygons |
裁剪前多边形速率 |
Count/Second |
每秒进入裁剪阶段之前的输入图元数量。 |
与裁剪率、快速拒绝率和最终片元量一起看,定位前端提交是否过量。 |
Reused Vertices |
复用顶点速率 |
Count/Second |
每秒从顶点复用或缓存路径命中的顶点数量。 |
应与顶点着色速率和输入图元量联合判断;复用更多通常有利,但绝对值也受场景规模影响。 |
GPU Shader Processing / GPU Shader 处理指标
Fragment Instruction Counts / 片元指令计数
| PerfKitty 英文名 |
中文名 |
单位 |
指标解释 |
分析提示 |
Fragment ALU Instructions Full |
片元全精度 ALU 指令数 |
Count |
片元阶段执行的全精度 ALU 指令数量。 |
与半精度、EFU 指令和片元数量一起归一化比较;高值时检查 Shader 算术复杂度和精度选择。 |
Fragment ALU Instructions Half |
片元半精度 ALU 指令数 |
Count |
片元阶段执行的半精度 ALU 指令数量。 |
半精度增加可能有利于吞吐和功耗,但应以画质与实际设备收益为准。 |
Fragment EFU Instructions |
片元 EFU 指令数 |
Count |
片元阶段在特殊函数单元执行的指令数量。 |
与 EFU Per Fragment 和 % Time Efus Working 一起看,定位复杂数学函数成本。 |
Shader ALU Activity / Shader ALU 活跃度
| PerfKitty 英文名 |
中文名 |
单位 |
指标解释 |
分析提示 |
% Kernel ALU Capacity Utilized |
计算内核 ALU 容量利用率 |
% |
计算工作负载对可用 ALU 执行容量的利用程度。 |
高值且 % Time Compute、GPU 忙碌率均高时,计算 Shader 可能受算术吞吐限制。 |
% Shader ALU Capacity Utilized |
Shader ALU 容量利用率 |
% |
图形与计算 Shader 对总体 ALU 执行容量的利用程度。 |
与 ALU 指令密度、Shader 忙碌率和停顿率一起看;高利用且低停顿更接近有效算术负载。 |
% Time Alus Working |
ALU 工作时间占比 |
% |
采样期间 ALU 实际执行工作的时间比例。 |
高值表示 ALU 活跃,但是否构成瓶颈需结合 GPU 忙碌率、帧时间和容量利用率判断。 |
Shader Instruction Cache / Shader 指令缓存
| PerfKitty 英文名 |
中文名 |
单位 |
指标解释 |
分析提示 |
% ICache Miss |
指令缓存未命中率 |
% |
Shader 指令缓存请求中发生未命中的比例。 |
持续偏高时检查 Shader 体积、变体数量、动态分支和频繁切换;同时观察 Shader 停顿。 |
Shader Instruction Density / Shader 指令密度
| PerfKitty 英文名 |
中文名 |
单位 |
指标解释 |
分析提示 |
ALU Per Fragment |
每片元 ALU 指令数 |
ALU/Fragment |
每个着色片元平均执行的 ALU 指令数量。 |
是判断片元 Shader 算术复杂度的核心密度指标;与过度绘制和分辨率一起估算总成本。 |
ALU Per Vertex |
每顶点 ALU 指令数 |
ALU/Vertex |
每个着色顶点平均执行的 ALU 指令数量。 |
上升时检查蒙皮、顶点变换、形变和冗余计算;结合顶点着色速率判断总影响。 |
EFU Per Fragment |
每片元 EFU 指令数 |
EFU/Fragment |
每个着色片元平均执行的特殊函数指令数量。 |
较高时检查归一化、幂、三角函数等复杂运算是否可简化、预计算或降低执行频率。 |
EFU Per Vertex |
每顶点 EFU 指令数 |
EFU/Vertex |
每个着色顶点平均执行的特殊函数指令数量。 |
与顶点数量和阶段时间一起看,避免在高密度网格上重复执行昂贵函数。 |
Shader Instruction Throughput / Shader 指令吞吐
| PerfKitty 英文名 |
中文名 |
单位 |
指标解释 |
分析提示 |
Fragment Instructions |
片元指令速率 |
Count/Second |
按不同类型指令的执行宽度折算后,每秒处理的片元 Shader 指令量。 |
与每片元指令数、片元着色速率和 ALU 容量利用率一起看,区分“单个片元很贵”和“片元数量很多”。 |
Vertex Instructions |
顶点指令速率 |
Count/Second |
按执行宽度折算后的每秒顶点 Shader 指令量。 |
与每顶点指令数、顶点着色速率和复用顶点速率一起看。 |
Shader Stage Time Breakdown / Shader 阶段时间分布
带 % 前缀的三项由设备侧语义接口提供;不带 % 前缀的 Time Compute、Time Shading Fragments、Time Shading Vertices 是 PerfKitty 当前按各阶段执行单元工作周期计算的占比。两套口径可能接近,但不应默认完全相等。
| PerfKitty 英文名 |
中文名 |
单位 |
指标解释 |
分析提示 |
% Time Efus Working |
EFU 工作时间占比 |
% |
特殊函数单元处于工作状态的时间比例。 |
与 EFU 指令密度和 Shader 忙碌率一起看,判断特殊函数是否占据显著执行资源。 |
% Time Shading Fragments |
片元着色时间占比(设备口径) |
% |
设备侧语义接口给出的片元着色时间比例。 |
高值时优先查看每片元 ALU/EFU、纹理数、分辨率、过度绘制和片元吞吐。 |
% Time Shading Vertices |
顶点着色时间占比(设备口径) |
% |
设备侧语义接口给出的顶点着色时间比例。 |
高值时检查顶点数量、网格 LOD、顶点复用、蒙皮和每顶点指令密度。 |
Time Compute |
计算阶段时间占比(PerfKitty 口径) |
% |
计算阶段执行单元工作周期占计算、片元和顶点三类阶段工作周期总和的比例。 |
与 GPU Compute 组的 % Time Compute 对照趋势,不要把两项相加。 |
Time Shading Fragments |
片元着色时间占比(PerfKitty 口径) |
% |
片元阶段执行单元工作周期占三类 Shader 阶段工作周期总和的比例。 |
适合观察同一设备上的阶段重心变化;不代表完整帧时间中有相同比例耗在片元阶段。 |
Time Shading Vertices |
顶点着色时间占比(PerfKitty 口径) |
% |
顶点阶段执行单元工作周期占三类 Shader 阶段工作周期总和的比例。 |
与顶点吞吐、每顶点指令数和几何前端指标一起分析。 |
Shader Utilization Ratios / Shader 利用与停顿
| PerfKitty 英文名 |
中文名 |
单位 |
指标解释 |
分析提示 |
% Shaders Busy |
Shader 忙碌率 |
% |
SP 忙碌周期占 GPU 忙碌周期的比例。 |
高值表示 GPU 忙碌时大部分时间有 Shader 活动;再看 ALU、纹理、Load/Store 和停顿指标定位原因。 |
% Shaders Stalled |
Shader 停顿率 |
% |
SP 未执行工作的周期占 GPU 忙碌周期的比例。 |
高值时结合纹理取样停顿、系统内存停顿、指令缓存未命中和 Wave 占用率定位等待来源。 |
% Wave Context Occupancy |
Wave 上下文占用率 |
% |
可用 Wave 上下文被在途工作占用的比例。 |
低值可能来自工作量不足、寄存器/资源限制或依赖等待;高值也不必然代表吞吐已满。 |
Shader Workload Throughput / Shader 工作负载吞吐
| PerfKitty 英文名 |
中文名 |
单位 |
指标解释 |
分析提示 |
Fragments Shaded |
片元着色速率 |
Count/Second |
每秒进入或完成片元着色工作的片元数量。 |
与分辨率、过度绘制、LRZ 拒绝像素和每片元成本一起看。 |
Fragments Shaded |
片元着色速率(兼容条目) |
Count/Second |
与上一项语义和计算口径相同的兼容条目。 |
若同时出现两个同名值,不要相加;任选一项观察趋势即可。 |
Vertices Shaded |
顶点着色速率 |
Count/Second |
每秒执行的顶点 Shader 调用数量。 |
与裁剪前图元、复用顶点、平均每多边形顶点数和每顶点成本一起看。 |
Vertices Shaded |
顶点着色速率(兼容条目) |
Count/Second |
与上一项语义和计算口径相同的兼容条目。 |
若同时出现两个同名值,不要相加;任选一项观察趋势即可。 |
GPU Texture Processing / GPU 纹理处理指标
Texture Pipe Utilization / 纹理管线利用率
| PerfKitty 英文名 |
中文名 |
单位 |
指标解释 |
分析提示 |
% Texture Pipes Busy |
纹理管线忙碌率 |
% |
TP 忙碌周期占 GPU 忙碌周期的比例。 |
高值且 Shader 停顿、纹理读取带宽也高时,纹理取样路径可能是主要压力来源。 |
Texture Sampling Density / 纹理采样密度
| PerfKitty 英文名 |
中文名 |
单位 |
指标解释 |
分析提示 |
Textures Per Fragment |
每片元纹理采样数 |
Textures/Fragment |
每个着色片元平均执行的纹理采样数量。 |
上升会同时放大纹理单元、缓存和带宽压力;结合分辨率与过度绘制评估总成本。 |
Textures Per Vertex |
每顶点纹理采样数 |
Textures/Vertex |
每个着色顶点平均执行的纹理采样数量。 |
高值时检查顶点纹理获取、动画或地形方案;结合顶点吞吐判断影响。 |
Texture Sampling Mix / 纹理采样方式构成
| PerfKitty 英文名 |
中文名 |
单位 |
指标解释 |
分析提示 |
% Anisotropic Filtered |
各向异性过滤采样占比 |
% |
使用各向异性过滤的纹理采样比例。 |
增加通常提升斜视角纹理质量,但会提高采样成本;结合纹理管线忙碌和画质收益判断。 |
% Linear Filtered |
线性过滤采样占比 |
% |
使用线性过滤的纹理采样比例。 |
与最近点和各向异性过滤占比一起观察过滤方式变化,不应单独判断好坏。 |
% Nearest Filtered |
最近点过滤采样占比 |
% |
使用最近点过滤的纹理采样比例。 |
通常采样成本较低,但画质取决于内容;异常变化可能来自材质或采样器状态调整。 |
% Non Base Level Textures |
非基础 Mipmap 层采样占比 |
% |
从非基础 Mipmap 层进行的纹理采样比例。 |
适当使用 Mipmap 通常有利于缓存和带宽;若比例异常低,检查资源是否生成并正确启用 Mipmap。 |
GPU Compute / GPU 计算指标
Compute Workload Time / 计算工作负载时间
| PerfKitty 英文名 |
中文名 |
单位 |
指标解释 |
分析提示 |
% Compute Kernel Load Cycles |
计算内核加载周期占比 |
% |
与计算内核加载、准备或切换相关的周期比例。 |
持续较高时检查计算任务粒度、内核切换频率和短小 Dispatch 是否过多。 |
% Time Compute |
计算工作时间占比(设备口径) |
% |
设备侧语义接口给出的计算工作负载时间比例。 |
与 Shader 阶段组中的 Time Compute、ALU 利用率、内存指令和 Dispatch 行为一起分析。 |
GPU Ray Tracing / GPU 光线追踪指标
这些指标只适用于具有相应光线追踪硬件、驱动和工作负载支持的 Adreno GPU。普通光栅化场景缺失这些指标是正常现象。
BVH Fetch Latency and Stalls / BVH 获取延迟与停顿
| PerfKitty 英文名 |
中文名 |
单位 |
指标解释 |
分析提示 |
% BVH Fetch Stall |
BVH 获取停顿率 |
% |
光线追踪工作因等待 BVH 数据获取而停顿的比例。 |
高值时检查 BVH 规模、更新策略、内存局部性和光线相干性,并结合总读取带宽判断。 |
Avg BVH Fetch Latency Cycles |
BVH 平均获取延迟周期 |
Cycles |
获取 BVH 数据的平均等待周期数。 |
与 GPU 频率、BVH 停顿率和系统内存停顿一起看;跨设备不要直接比较周期绝对值。 |
Ray Intersection Density / 光线求交密度
| PerfKitty 英文名 |
中文名 |
单位 |
指标解释 |
分析提示 |
RTU Ray Box Intersections Per Instruction |
每指令 RTU 光线-包围盒求交数 |
Count |
每条相关 RTU 指令平均执行的光线与包围盒求交数量。 |
值高表示 BVH 遍历工作密集;需与三角形求交、RTU 忙碌率和最终画质效果一起判断。 |
RTU Ray Triangle Intersections Per Instruction |
每指令 RTU 光线-三角形求交数 |
Count |
每条相关 RTU 指令平均执行的光线与三角形求交数量。 |
高值可能来自更多候选几何或更复杂场景;检查加速结构质量、实例数量和光线数量。 |
Ray Tracing Unit Utilization / 光线追踪单元利用率
| PerfKitty 英文名 |
中文名 |
单位 |
指标解释 |
分析提示 |
% RTU Busy |
RTU 忙碌率 |
% |
光线追踪单元处于忙碌状态的比例。 |
高值且帧时间同步上升时,RTU 可能接近主要瓶颈;低值但 BVH 停顿高时则更像数据等待。 |
GPU Stalls / GPU 停顿指标
Pipeline Stall Breakdown / 管线停顿分解
| PerfKitty 英文名 |
中文名 |
单位 |
指标解释 |
分析提示 |
% Stalled On System Memory |
系统内存停顿率 |
% |
GPU 因等待系统内存流量而停顿的时间比例。 |
高值时结合总读写带宽、L2 命中率、工作集和其他处理器的内存竞争判断。 |
% Texture Fetch Stall |
纹理获取停顿率 |
% |
Shader 因等待纹理取样或纹理数据返回而停顿的比例。 |
与纹理管线忙碌、纹理读取带宽、L1/L2 未命中和每片元纹理数一起看。 |
% Vertex Fetch Stall |
顶点获取停顿率 |
% |
图元前端因等待 VFD 顶点数据获取而停顿的比例。 |
与顶点读取带宽、每顶点字节数、顶点复用和网格布局一起分析。 |
常见组合场景
GPU 忙碌率高,但 Shader 忙碌率不高
先看 % Bus Busy、% Texture Pipes Busy、% LRZ Busy、% RTU Busy 和三类停顿指标。GPU 可能主要在等待内存、处理纹理、几何或光线追踪,而不是持续执行 ALU 指令。
Shader 忙碌率和 ALU 利用率都高
结合 ALU Per Fragment、ALU Per Vertex、EFU 密度、片元/顶点吞吐和阶段时间占比。若片元侧占比更高,优先检查分辨率、过度绘制和片元 Shader;若顶点侧更高,优先检查网格密度、蒙皮和顶点复用。
带宽高且系统内存停顿高
继续看各客户端读取带宽、L2 命中率、纹理缓存未命中、每片元/顶点字节数以及实际/请求写入字节。优化方向通常包括减少中间渲染目标、降低不必要的高精度格式、改善资源压缩与 Mipmap、提高访问局部性和降低过度绘制。
纹理取样停顿高
同时检查 % Texture Pipes Busy、Textures Per Fragment、纹理 L1/L2 未命中率和 Texture Memory Read BW。只有停顿、缓存效率和带宽趋势能够互相印证时,才应优先判断为纹理路径瓶颈。
图元量高,但最终片元量没有同步增加
查看裁剪前多边形、裁剪率、快速拒绝率、LRZ 拒绝量、平均多边形面积和复用顶点。常见原因包括屏幕外几何、微小三角形、过细 LOD、较差的索引局部性或遮挡后仍提交了大量对象。
官方资料与使用边界
PerfKitty 的名称、分组和部分派生口径用于统一不同设备上的阅读体验,不应把所有表格说明理解为 Qualcomm 对每个 Adreno 型号的固定硬件定义。需要研究某一具体 SoC 的微架构、峰值能力或精确计数器公式时,应以该平台、驱动和 Qualcomm 官方工具实际提供的资料为准。
本文不提供跨所有 Adreno GPU 通用的固定阈值。分析结论应优先建立在同一设备、相同场景和相近运行条件下的对照测试上。