Adreno GPU 指标说明

更新于 2026-08-24

本文介绍 PerfKitty 中的 Qualcomm Adreno GPU 性能指标,包括中英文名称、单位、指标含义和常见分析方法。指标是否可采集取决于 GPU 型号、驱动版本、Android 系统、设备厂商开放情况和当前工作负载;界面中没有返回某项指标时,不应把缺失值理解为 0

指标范围

PerfKitty 当前将 Adreno 指标整理为 9 个大类、32 个分析组,共 89 个语义指标条目。为了兼容不同来源和版本,其中 ClocksFragments ShadedVertices Shaded 各保留了两个语义相同的条目,因此本文会在表格中分别标明兼容条目。

不同 Adreno 代际支持的计数器集合并不完全相同。光线追踪、BVH 和 RTU 相关指标只会出现在具备相应硬件与驱动支持的设备上;其他指标也可能因权限、驱动或采集接口限制而缺失。本文解释的是 PerfKitty 中的统一显示语义,不代表所有 Adreno GPU 都使用完全相同的底层计数器或计算公式。

如何阅读单位和百分比

  • %:比例指标。不同指标的分母可能是总采样时间、GPU 忙碌周期、Shader 忙碌周期或某类请求总数,因此不能看到百分比就直接相加。
  • Count:采样区间内的事件数或厂商定义的计数量。跨测试比较时应尽量保持采样周期、场景时长和负载一致。
  • Count/Second:已按时间归一化的每秒事件速率,适合比较不同长度的采样区间。
  • Bytes/Second:带宽速率。界面可能自动换算为 KB/s、MB/s 或 GB/s,比较时应确认单位量级。
  • Cycles:GPU 时钟周期数。周期对应的实际时间会随频率变化,不能脱离 GPU 频率直接换算成固定延迟。
  • Bytes/FragmentBytes/VertexTextures/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 型号具有完全相同的内部微架构。

建议的组合分析顺序

  1. 先用 GPU % BusyGPU % Utilization、GPU 频率、FPS 和帧时间确认问题是否与 GPU 压力同步。
  2. GPU 忙碌较高时,再看 % Shaders Busy% Texture Pipes Busy% LRZ Busy% RTU Busy,定位主要活跃单元。
  3. 查看 % Shaders Stalled、系统内存停顿、纹理取样停顿和顶点获取停顿,判断高忙碌是否包含大量等待。
  4. 结合读写带宽、L1/L2 命中或未命中率、每片元/顶点字节数,确认是否受内存流量或访问局部性限制。
  5. 最后用每片元/顶点指令数、过滤方式、图元裁剪、平均多边形面积和阶段时间占比定位具体内容成本。

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 ComputeTime Shading FragmentsTime 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 FragmentALU Per Vertex、EFU 密度、片元/顶点吞吐和阶段时间占比。若片元侧占比更高,优先检查分辨率、过度绘制和片元 Shader;若顶点侧更高,优先检查网格密度、蒙皮和顶点复用。

带宽高且系统内存停顿高

继续看各客户端读取带宽、L2 命中率、纹理缓存未命中、每片元/顶点字节数以及实际/请求写入字节。优化方向通常包括减少中间渲染目标、降低不必要的高精度格式、改善资源压缩与 Mipmap、提高访问局部性和降低过度绘制。

纹理取样停顿高

同时检查 % Texture Pipes BusyTextures Per Fragment、纹理 L1/L2 未命中率和 Texture Memory Read BW。只有停顿、缓存效率和带宽趋势能够互相印证时,才应优先判断为纹理路径瓶颈。

图元量高,但最终片元量没有同步增加

查看裁剪前多边形、裁剪率、快速拒绝率、LRZ 拒绝量、平均多边形面积和复用顶点。常见原因包括屏幕外几何、微小三角形、过细 LOD、较差的索引局部性或遮挡后仍提交了大量对象。

官方资料与使用边界

PerfKitty 的名称、分组和部分派生口径用于统一不同设备上的阅读体验,不应把所有表格说明理解为 Qualcomm 对每个 Adreno 型号的固定硬件定义。需要研究某一具体 SoC 的微架构、峰值能力或精确计数器公式时,应以该平台、驱动和 Qualcomm 官方工具实际提供的资料为准。

本文不提供跨所有 Adreno GPU 通用的固定阈值。分析结论应优先建立在同一设备、相同场景和相近运行条件下的对照测试上。