Mali GPU 指标说明

更新于 2026-08-20

本文介绍 PerfKitty 中的 Mali GPU 性能指标,包括中英文名称、单位、指标含义和常见分析方法。指标是否可采集取决于 GPU 型号、驱动版本、内核计数器权限和设备厂商实现;界面中没有返回某项指标时,不应把缺失值理解为 0

指标范围

PerfKitty 将不同 Mali GPU 架构和型号的底层性能计数器整理为 45 项常用指标,分为 15 个指标组。本文重点解释这些统一指标,便于在性能分析时快速理解 GPU 使用率、纹理、几何、内存带宽、停顿和延迟等数据。

Arm 的型号指南通常还会提供大量特定于硬件的原始或派生计数器,因此官方指南中的指标数量可能明显多于本文的 45 项。不同代际的队列模型、硬件单元和计算方式也可能变化;同名指标适合用于理解相近语义,但不应默认不同 GPU 型号使用完全相同的底层公式。

L2 read bytes/cyExternal read bytes/cy 在纹理路径与 Load/Store 路径中各出现一次。虽然显示名称相同,但它们描述的是不同硬件路径,分析时应结合所在指标组区分。

代表架构与官方型号指南

Mali GPU 使用过不同的任务提交前端,包括 Job Manager(JM,作业管理器)和 Command Stream Frontend(CSF,命令流前端)。下表列出本文涉及架构的代表型号,并提供 Arm 官方指南入口;它不是 PerfKitty 支持型号的完整清单。

架构/前端 代表型号 官方型号指南
Midgard(JM) Mali-T720 Mali-T720 1.5
Bifrost(JM) Mali-G31 Mali-G31
Bifrost(JM) Mali-G51 Mali-G51
Bifrost(JM) Mali-G52 Mali-G52
Bifrost(JM) Mali-G71 Mali-G71
Valhall(JM) Mali-G57 Mali-G57
Valhall(JM) Mali-G68 Mali-G68
Valhall(JM) Mali-G77 Mali-G77
Valhall(JM) Mali-G78 Mali-G78
Valhall(CSF) Mali-G310 Mali-G310
Valhall(CSF) Mali-G510 Mali-G510
Valhall(CSF) Mali-G610 Mali-G610
Valhall(CSF) Mali-G710 Mali-G710
Valhall(CSF) Mali-G715 Mali-G715
第五代(CSF) Mali-G620 Mali-G620
第五代(CSF) Mali-G720 Mali-G720

未在表中单列的同架构 GPU 可能使用代表型号进行近似解释:Midgard 参考 Mali-T720、Bifrost 参考 Mali-G52、Valhall 参考 Mali-G78、第五代参考 Mali-G720。代表型号只能帮助理解相近架构,不能证明两个型号的计数器定义完全相同。

跨代差异

  • 队列模型:Bifrost 和 Valhall JM 使用作业管理器语义,常见 Non-fragmentFragmentTiler 队列;Valhall CSF 与第五代使用命令流前端,并增加 main、binning、fragment、compute 等任务或队列指标。旧的 Non-fragment/Fragment 名称在新架构上可能没有一对一标识符。
  • 纹理属性:Mali-G31、Mali-G51 和 Mali-G52 参考页能完整对应本文的纹理缓存、mipmap 和 trilinear 指标;Mali-G71 缺少纹理缓存查找的精确标识符。Valhall 页面通常没有 MaliTexCacheLookupMaliTexMipInstrRateMaliTexTriInstrRate 这些精确标识符。应使用该型号页面提供的新计数器分析,而不是把缺失项补成 0
  • 几何剔除:Mali-G715 和第五代页面不再提供本文中分开的 facing/XY 与 Z plane 剔除率精确标识符,可能需要结合更高层的总剔除、可见图元和其他新剔除分类判断。
  • 几何线程效率:第五代页面没有 MaliGeomVarShadThreadPerPrim 的精确标识符。跨代比较时应优先比较输入图元、可见图元和该型号实际提供的线程计数,而不是强行套用旧公式。
  • 稳定语义GPU active 在 Bifrost、Valhall JM、Valhall CSF 和第五代都有明确映射;内存带宽、stall 和延迟直方图等概念跨代相对稳定,但底层计数器、归一化分母和可用性仍可能不同。

PerfKitty 会优先使用与当前 GPU 架构匹配的指标映射;最终只有设备实际返回的有效计数器才会显示。因此,“官方指南提供该指标”“该架构存在对应计算方式”和“当前设备能够采集”是三个不同层次。

单位与阅读方法

单位 含义
Cycles 采样区间内的活动周期、发射周期,或以周期表示的平均成本。需结合 GPU 频率和采样时长判断。
Count 事件、请求、图元、线程或返回数据拍的计数。
% 利用率或某类事件占比。高值是否异常取决于工作负载目标。
Ratio 两个相关计数器的比值,用于衡量几何处理效率。
Bytes/Cycle 每个相关硬件活动周期平均传输的字节数。它反映单位工作周期的数据量,不是每秒带宽。
Bytes/Second PerfKitty 当前展示的每秒字节速率。

L2 read bytes/cyExternal read bytes/cyL2 write bytes/cy 名称中的 /cy 表示“每个相关活动周期”,其语义单位为 Bytes/Cycle。部分 PerfKitty 版本若显示为 Bytes/s,应按 /cy 指标语义理解,不要与外部内存带宽组中的 Read bytesWrite bytes 混用。

Mali GPU Usage / Mali GPU 使用率

PerfKitty 英文名 中文名 单位 指标解释 分析提示
GPU active GPU 活跃 Cycles GPU 至少有一个工作队列或硬件阶段处于活动状态的周期数。 应同时看 GPU 频率和采样时长;活动周期高不等于利用效率高。
Non-fragment queue active 非片元队列活动 Cycles 非片元队列处于活动状态的周期数,通常涵盖顶点、计算和其他非片元工作。 GPU active 接近通常表示非片元工作占主导;明显偏低可能说明队列空闲或重叠不足。
Fragment queue active 片元队列处于活动状态 Cycles 片元队列处于活动状态的周期数。 GPU active 接近通常表示片元工作占主导;结合着色、纹理和带宽指标定位瓶颈。
Tiler active 图块处理器活跃 Cycles Tiler 处理图元分箱和几何相关工作的活动周期数。 高值应结合输入图元、剔除率和顶点线程数判断是否由网格复杂度或分箱压力造成。
GPU interrupt active GPU 中断活跃 Cycles GPU 中断处于挂起或等待处理状态的周期数。 GPU 仍可能并行处理其他工作;若其占 GPU active 比例长期很高,可能存在 CPU、驱动或系统响应问题。

Mali GPU Utilization / Mali GPU 利用率

PerfKitty 英文名 中文名 单位 指标解释 分析提示
Non-fragment queue utilization 非片元队列利用率 % 非片元队列活动周期相对于 GPU 活动周期的占比。 GPU-bound 场景中主导队列通常接近 100%;多个队列都不高但 GPU 很忙时,可能存在串行依赖。
Fragment queue utilization 片元队列利用率 % 片元队列活动周期相对于 GPU 活动周期的占比。 高值表示片元阶段是主要负载之一,应继续检查着色器、纹理、过度绘制和外部带宽。
Tiler utilization 图块处理器利用率 % Tiler 活动周期相对于 GPU 活动周期的占比。 高值通常指向几何输入、图元剔除或分箱压力。

移动设备会通过 DVFS 动态调整 GPU 频率。轻负载在低频下也可能出现很高的利用率,因此不要只凭利用率判断性能问题。

Mali Texture CPI / Mali 纹理 CPI

PerfKitty 英文名 中文名 单位 指标解释 分析提示
Texture CPI 纹理 CPI Cycles 完成一个纹理指令或等价采样工作所需的平均纹理处理周期。PerfKitty 会按 GPU 代际选择分母,可能基于纹理指令、采样 quad(四像素采样单元)、输出消息或最繁忙纹理路径计算。 越高通常表示过滤方式更复杂、各向异性级别更高、缓存访问成本更大或纹理路径受限。跨 GPU 对比前应确认架构。

在 Mali-G52 上,Arm 以纹理过滤活动周期除以纹理请求所代表的采样数来计算平均成本。双线性、三线性、3D 和各向异性过滤的成本不同,因此该指标没有跨场景通用的固定理想值。

Mali Geometry Usage / Mali 几何使用率

PerfKitty 英文名 中文名 单位 指标解释 分析提示
Visible primitives 可见图元数 Count 通过全部剔除测试、进入后续渲染阶段的可见图元数量。 高值表示实际送入光栅化的几何量大;需结合像素负载判断是否有效贡献画面。
Culled primitives 剔除图元 Count 被朝向、XY 平面、Z 平面或采样测试剔除的图元总数。 高剔除量可能说明剔除有效,也可能说明应用提交了大量无效几何。
Input primitives 输入图元 Count 输入到渲染流程的图元总数,通常等于可见图元与各类被剔除图元之和。 过高时检查网格 LOD、重复几何、索引复用和不可见物体提交。

Mali Memory Bandwidth Usage / Mali 内存带宽使用率

PerfKitty 英文名 中文名 单位 指标解释 分析提示
Read bytes 读取字节 Bytes/Second GPU 从外部内存系统读取的数据速率。 持续高值会增加功耗并可能触发内存瓶颈;检查纹理压缩、资源精度、mipmap 和重复读取。
Write bytes 写入字节 Bytes/Second GPU 写入外部内存系统的数据速率。 检查渲染目标格式、带宽较大的后处理、无效清屏以及帧缓冲压缩(framebuffer compression)。

Mali Texture Usage / Mali 纹理使用率

PerfKitty 英文名 中文名 单位 指标解释 分析提示
Texture filtering active 纹理过滤激活 Cycles 纹理单元执行纹理采样和过滤发射的活动周期数。复杂过滤会被拆成更多基础采样,因此消耗更多周期。 结合 Texture CPI、采样率和纹理带宽判断;可从采样数量、过滤方式、各向异性和纹理格式入手。
Cache lookup 缓存查找 Count 纹理路径发起的缓存查找数量,是纹理缓存访问压力的计数。 不能直接理解为缓存命中率;应结合采样量、L2 read bytes/cyExternal read bytes/cyTexture CPI 判断。

Mali Load/Store Usage / Mali 加载/存储使用率

Load/store 单元用于纹理和帧缓冲(framebuffer)回写之外的通用着色器数据访问,包括 buffer、image、共享存储、顶点属性和栈访问。

PerfKitty 英文名 中文名 单位 指标解释 分析提示
Load/store unit issue 加载/存储单元发射 Cycles Load/store 单元的总访问发射周期,通常由 full read、partial read、full write、partial write 和 atomic access 相加得到;不包含缓存未命中等二次等待。 高值表示通用数据访问压力大;继续观察读写类型、外部访问和 stall 指标。
Full read 完整读取 Count 充分利用 load/store 数据通路宽度的完整宽度读取次数。 与 partial read 相比,full read 通常具有更好的通路利用率。
Partial read 部分读取 Count 未充分利用 load/store 数据通路宽度的部分宽度读取次数。 占比高时检查短标量访问、结构体 padding、非合并访问,并考虑向量化或连续地址访问。
Full write 全写 Count 充分利用 load/store 数据通路宽度的完整宽度写入次数。 与 partial write 相比,full write 通常具有更好的通路利用率。
Partial write 部分写入 Count 未充分利用 load/store 数据通路宽度的部分宽度写入次数。 占比高时检查写入粒度、数据布局和线程地址连续性。
Atomic access 原子访问 Count Load/store 单元执行原子内存访问的次数。 原子操作通常是多周期且会造成竞争;性能关键路径中应减少不必要的原子操作和热点地址冲突。

Mali Texture Workload Property Rate / Mali 纹理工作负载属性比率

PerfKitty 英文名 中文名 单位 指标解释 分析提示
Mipmapped sample rate MipMap 采样率 % 访问 mipmapped 纹理的纹理操作占比;底层分子和分母会按 GPU 代际映射。 3D 场景中的离线纹理通常应启用 mipmap,以改善远距离质量、缓存局部性和内存带宽。
Trilinear sample rate 三线性采样率 % 使用三线性过滤的纹理操作占比。 三线性过滤通常比双线性过滤需要更多采样工作;结合画质目标和 Texture CPI 评估成本。

Mali Texture Memory Usage / Mali 纹理内存使用率

PerfKitty 英文名 中文名 单位 指标解释 分析提示
L2 read bytes/cy L2 读取字节/cy Bytes/Cycle 纹理单元每个纹理过滤活动周期平均从 L2 路径读取的字节数。 相对纹理工作量偏高时,可能存在 L1 纹理缓存效率不佳、格式过宽、缺少压缩或 mipmap 不合理。
External read bytes/cy 每周期外部读取字节数 Bytes/Cycle 纹理单元每个纹理过滤活动周期平均从外部内存路径读取的字节数。 相对 L2 读取偏高时,可能表示 L2 缓存复用不足;检查纹理尺寸、格式、压缩、细节层级偏移(LOD bias)和各向异性。

Mali Load/Store Memory Usage / Mali 加载/存储内存使用率

PerfKitty 英文名 中文名 单位 指标解释 分析提示
L2 read bytes/cy L2 读取字节/cy Bytes/Cycle Load/store 单元每个读取发射活动周期平均从 L2 路径读取的字节数。 相对 read issue 偏高时,检查数据格式宽度、L1 数据缓存复用和访问合并。
External read bytes/cy 每周期外部读取字节数 Bytes/Cycle Load/store 单元每个读取发射活动周期平均从外部内存路径读取的字节数。 相对 L2 读取偏高时,可能表示 L2 缓存复用不足;检查数据布局、访问顺序和工作集大小。
L2 write bytes/cy L2 写入字节/cy Bytes/Cycle Load/store 单元每个写入发射活动周期平均写入 L2 路径的字节数。 相对 write issue 偏高时,检查写入格式、部分宽度写入、冗余写入和线程地址连续性。

Mali Memory Stall Rate / Mali 内存停顿率

PerfKitty 英文名 中文名 单位 指标解释 分析提示
Read stall rate 读取停顿率 % GPU 因外部内存读事务无法继续发出或等待下游接收而停顿的周期占比。 高值通常说明读取带宽、突发访问或下游内存压力较大;可通过缩小资源、压缩纹理和改善局部性降低。
Write stall rate 写入停滞率 % GPU 因外部内存写事务无法继续发出或等待下游接收而停顿的周期占比。 高值通常说明写入带宽或下游队列压力较大;检查渲染目标、写回量和中间结果。

Mali Memory Read Latency / Mali 内存读取延迟

这组六个指标组成外部内存读取延迟直方图,统计读事务开始后,数据返回落入不同周期区间的次数。它们应作为分布一起阅读,而不是只看单个桶。不同 GPU 型号和频率下的周期时长不同,因此不宜把某个区间直接定义为“快”或“慢”。

PerfKitty 英文名 中文名 单位 指标解释 分析提示
0-127 cycles 0-127 个周期 Count 返回延迟落在 0 到 127 周期区间的数据计数。 与同一设备、相近频率和相同场景下的其他采样比较。
128-191 cycles 128-191 周期 Count 返回延迟落在 128 到 191 周期区间的数据计数。 观察延迟分布是否逐步向更高周期区间移动。
192-255 cycles 192-255 个周期 Count 返回延迟落在 192 到 255 周期区间的数据计数。 与相邻区间一起观察,避免仅凭单个桶判断异常。
256-319 cycles 256-319 个周期 Count 返回延迟落在 256 到 319 周期区间的数据计数。 占比持续升高时,结合带宽、工作集和访问局部性判断。
320-383 cycles 320-383 周期 Count 返回延迟落在 320 到 383 周期区间的数据计数。 占比持续升高时,检查系统内存竞争和下游压力。
384+ cycles 384+ 个周期 Count 返回延迟不低于 384 周期的数据计数。 占比持续升高时,结合 read stall 和带宽判断是否影响关键路径。

Mali Geometry Culling Rate / Mali 几何剔除率

PerfKitty 英文名 中文名 单位 指标解释 分析提示
Visible primitive rate 可见图元速率 % 输入图元中通过全部剔除测试并可见的比例。 很低时说明大量提交图元最终不可见,可考虑更早的对象或网格剔除。
Facing or XY plane culled primitive rate 面或 XY 平面剔除图元率 % 因背面朝向或超出裁剪空间 XY 平面而被剔除的输入图元比例。 高值可能表示背面或屏幕外几何提交较多;检查剔除模式、相机外对象和网格朝向。
Z plane culled primitive rate Z 平面剔除图元速率 % 因超出近、远 Z 裁剪平面而被剔除的输入图元比例。 高值时检查相机 near/far plane、对象可见性和场景提交范围。
Sample culled primitive rate 样本剔除图元率 % 通过平面测试后,因没有覆盖有效采样点等采样测试而被剔除的输入图元比例。 高值常见于大量微小或退化图元;检查过细网格、LOD 和投影后的三角形尺寸。

Mali Geometry Threads / Mali 几何线程

PerfKitty 英文名 中文名 单位 指标解释 分析提示
Position shading threads 位置着色线程 Count 执行位置着色阶段(position shader)的线程调用数量。 与输入图元和顶点数量一起判断顶点索引复用与几何处理成本。
Varying shading threads Varying 着色线程 Count 执行插值属性着色阶段(varying shader)的线程调用数量。 与可见图元一起判断可见几何的属性计算量和复用效率。

Mali Geometry Efficiency / Mali 几何效率

PerfKitty 英文名 中文名 单位 指标解释 分析提示
Position threads/input primitive 每输入图元的位置线程数 Ratio 每个输入图元平均触发的位置着色线程数。 越低通常表示相邻图元顶点复用和索引局部性越好;检查重复顶点、索引顺序和未使用索引范围。
Varying threads/visible primitive 每可见图元的 Varying 线程数 Ratio 每个可见图元平均触发的插值属性着色线程数。 越低通常表示可见几何的顶点复用越好;应与画质、网格拓扑和剔除结果一起判断。

官方资料与使用边界

需要了解具体 GPU 的队列、流水线、内存路径或完整计数器定义时,请通过上表和官方资料链接查看对应型号指南。

本文不提供跨所有 GPU 型号通用的固定阈值。实际分析应优先比较同一设备、相近频率、相同场景和相同 PerfKitty 版本下的数据。