使用ARM Streamline实测移动端Mali GPU性能方法

使用ARM Streamline实测移动端Mali GPU性能方法

测试环境:

Unity2022 使用GPUAnim技术实例化了300个怪物

设备:低端机三星A14   

联发科 Helio G96

Mali-G57 MC2

2核

950 MHz

API:GLES VS Vulkan (结论:VulKan性能较好)

GPU 是否瓶颈

⭐Mali GPU Usage:GPU active

中文:GPU 活跃率

作用:GPU 有多少时间在工作

怎么看:

90–100% → GPU 满载(GPU bottleneck)

60%左右 → 还有空间

30%以下 → GPU 不是瓶颈

如果它长期接近 100%,说明:是 GPU 瓶颈

计算理论最大 cycles

已知:

GPU 频率 = 950 MHz = 950,000,000 cycles/s

采样窗口 = 0.1 秒

理论最大 cycles:

950,000,000 × 0.1

= 95,000,000 cycles

一行 GPU active   22,703,483 cycles

真实 GPU 利用率

22,703,483 / 95,000,000

≈ 0.231

≈ 23.1%

🎯 最终结论

你当前 GPU 使用率:

✅ 约 23%

利用率

判断

<50%

很安全

50–70%

正常

70–85%

偏高

85–100%

GPU瓶颈

是 Fragment 还是 Vertex 瓶颈

⭐Mali GPU Usage:Fragment queue active

中文:片元队列活跃率

⭐Mali GPU Usage:Non-fragment queue active

中文:非片元队列(Vertex/Compute)活跃率

判断方法:

情况

说明

Fragment 高

像素 shader 重

Non-fragment 高

顶点或Compute重

分析器曲线图

图片 1

图片 2

具体数据

图片 3

Shader 是否 ALU 重

⭐ Mali Core Unit Utilization:Arithmetic unit utilization

中文:算术单元利用率

高 → shader 计算量大(大量 mul/add/pow)

判断标准:

数值

含义

0–30%

很轻

30–60%

中等

60–80%

偏高

80%+

ALU瓶颈

④ 纹理采样是否重

⭐ Mali Core Unit Utilization:Texture unit utilization

中文:纹理单元利用率

高 → 纹理采样多(贴图采样多)

数值

含义

<40%

正常

40–70%

贴图多

70%+

采样过重

图片 4

图片 5

⑤ 是否带宽瓶颈(最关键)

⭐ Mali Memory Bandwidth:Read bandwidth

⭐ Mali Memory Bandwidth:Write bandwidth

中文:内存读写带宽

如果接近设备上限:带宽瓶颈

这在 Mali 上非常常见。

这个要看:设备理论带宽(例如 15–30GB/s)

如果接近峰值:带宽瓶颈

如果只是 30%:很安全

⑥ L2 访问情况

⭐ Mali Load/Store Memory Usage:L2 read bytes/cy

⭐ Mali Load/Store Memory Usage:L2 write bytes/cy

高 → 数据频繁进出缓存

⑦ 外部内存访问

⭐ Mali Load/Store Memory Usage:External read bytes/cy

⭐ Mali Texture Memory Usage:External read bytes/cy

高 → 真正在访问显存(慢)

图片 6

图片 7

图片 8

图片 9

⑧ Overdraw(非常重要)

⭐ Mali Overdraw:Fragments/pixel

含义:

每个像素平均被画几次

1.0 → 正常

2~3 → 有过度绘制

4+ → 严重 overdraw

图片 10

⑨ Early Z 效率

🧱 Mali Early ZS kill rate

中文:Early Z 剔除率

高 → 说明遮挡剔除有效

低 → 说明透明或关闭 ZTest

数值

含义

>30%

很好

10–30%

正常

<10%

深度无效

⑩ Tile 写回

🧱 Mali Tile Memory Usage:Tile write bytes/px

高 → tile 被频繁写回外部内存(不好)

常见原因:

MSAA

多RT

中间 RenderTexture

关键指标解释查找表

一、GPU 使用率类(整体忙不忙)

 Mali GPU Usage: GPU active

中文:GPU 活跃周期数

作用:GPU 在采样区间内实际工作的周期数

判断:必须结合 total cycles 才能算利用率

异常:持续接近峰值 + 掉帧 = GPU瓶颈

 Mali GPU Usage: Fragment queue active

中文:片元队列活跃率

作用:Fragment(像素)阶段忙不忙

高说明:像素 shader 重 / 过度绘制

 Mali GPU Usage: Non-fragment queue active

中文:非片元队列活跃率(Vertex/Compute)

作用:顶点或Compute阶段忙不忙

高说明:顶点过多 / 骨骼动画重 / Compute重

 Mali GPU Usage: Compute queue active

中文:计算队列活跃率

作用:Compute Shader使用情况

高说明:大量GPU计算任务

二、核心单元利用率(ALU / Texture)

 Mali Core Unit Utilization: Arithmetic unit utilization

中文:算术单元利用率(ALU)

作用:shader计算量大小(mul/add/pow等)

判断标准:

<30% 轻

30–60% 正常

60% 偏重

80% ALU瓶颈

 Mali Core Unit Utilization: Texture unit utilization

中文:纹理单元利用率

作用:贴图采样强度

高说明:采样次数多 / 大量贴图

 Mali Core Unit Utilization: Load/Store unit utilization

中文:读写单元利用率

作用:缓存/内存读写压力

高说明:频繁访问buffer/RT

三、带宽类(最重要)

 Mali Memory Bandwidth: Read bandwidth

中文:内存读带宽

作用:从显存读取数据的速率

高说明:贴图读取多

 Mali Memory Bandwidth: Write bandwidth

中文:内存写带宽

作用:写回显存速率

高说明:RenderTarget写入多 / MSAA

 Mali Memory Bandwidth: Total bandwidth

中文:总内存带宽

作用:读写总和

接近设备峰值 = 带宽瓶颈

四、L2 Cache 访问

 Mali Load/Store Memory Usage: L2 read bytes/cy

中文:L2缓存读字节/周期

作用:缓存读取频率

高说明:缓存压力大

 Mali Load/Store Memory Usage: L2 write bytes/cy

中文:L2缓存写字节/周期

作用:缓存写入频率

五、External Memory(外部显存访问)

 Mali Load/Store Memory Usage: External read bytes/cy

中文:外部内存读字节/周期

作用:真正访问显存

高说明:带宽瓶颈

 Mali Texture Memory Usage: External read bytes/cy

中文:贴图外部内存读取

作用:贴图是否命中缓存

高说明:缓存命中率低

六、Overdraw / 片元相关

 Mali Overdraw: Fragments per pixel

中文:每像素片元数量(过度绘制)

判断标准:

1.0 理想

2.0 正常

3 危险

 Mali Overdraw: Fragment count

中文:片元总数

作用:总像素工作量

七、Early Z / 深度测试

 Mali Early ZS kill rate

中文:Early Z 剔除率

高说明:遮挡剔除有效

低说明:透明过多

 Mali Early ZS test rate

中文:Early Z 测试率

作用:深度测试参与程度

八、Tile-Based 架构相关

 Mali Tile Memory Usage: Tile write bytes/px

中文:每像素Tile写回字节数

高说明:Tile被频繁写回显存

原因:

MSAA

多RenderTarget

中间RT

 Mali Tiler: Primitives

中文:图元数量(三角形数量)

高说明:模型多

 Mali Tiler: Visible primitives

中文:可见图元数

作用:实际参与绘制的三角形

九、Shader Core 活跃度

 Mali Shader Core: Active cycles

中文:Shader核心活跃周期

作用:核心执行时间

 Mali Shader Core: Idle cycles

中文:Shader核心空闲周期

高说明:CPU喂不饱GPU

十、Stall / 等待类

 Mali Stall: External memory stall

中文:等待外部内存阻塞

高说明:带宽瓶颈

 Mali Stall: Texture fetch stall

中文:纹理读取阻塞

高说明:贴图访问慢

 Mali Stall: Arithmetic dependency stall

中文:算术依赖阻塞

高说明:shader指令链过长

十一、综合判断逻辑(你可以保存)

如果:

GPU active 高

Arithmetic 高

→ ALU瓶颈

如果:

GPU active 高

Texture 高

External bandwidth 高

→ 带宽瓶颈

如果:

Fragments/pixel 高

→ Overdraw问题

如果:

Idle cycles 高

→ CPU 限制

十二、给你一个最终理解框架

Mali性能只看五大类:

GPU忙不忙(GPU active)

算力够不够(Arithmetic)

贴图重不重(Texture)

带宽爆不爆(External BW)

过度绘制严重不(Fragments/pixel)

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容