2

GPU Counter功能更新|支持Adreno、PowerVR芯片

 1 year ago
source link: https://blog.uwa4d.com/archives/UWA_GOLGPUCounter2.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

GPU Counter功能更新|支持Adreno、PowerVR芯片

在GOT Online Overview模式中,UWA提供了Mali GPU Counter功能模块,为的是提供给游戏研发商应对玩家对游戏画面的需求导致游戏渲染压力给性能带来的新挑战。除了GPU着色和GPU带宽模块外,还提供了GPU图元处理和GPU Shader Cycles数据的采集和展示。但基于芯片架构不同,项目在不同品牌的芯片上的性能表现也会存在差距,进一步支持更多GPU芯片的性能检测成为了UWA努力的一个目标。

好消息来啦,UWA SDK 2.4.4已发布,在这次版本更新中,新增了对Adreno和PowerVR品牌GPU芯片的支持,同时增加Mali GPU设备下GPU负载和Adreno GPU设备下GPU负载、缓存命中、纹理过滤三项参数的获取。

您可以前往https://www.uwa4d.com/#download下载最新版SDK,并使用相应厂商芯片的设备进行测试,即可在GOT Online Overview的GPU模块下查看到对应的数据,掌握GPU压力和性能消耗情况。

一、Mali GPU Counter

  • GPU负载

Mali GPU Counter下的GPU负载包含Non Fragment Utilization和Fragment Utilization两个性能指标,分别代表非片段处理占整体GPU处理开销百分比和片段处理耗时占整体GPU处理开销百分比。

1.png

在Mali GPU上运行的工作负载由作业管理器统一协调,该任务管理器负责将工作负载调度到GPU内部的各个处理单元上,它将两个FIFO工作队列,称为作业插槽。其中,一个插槽用于非片段工作负载,另一个插槽则用于片段着色工作负载。

当出现GPU瓶颈时,正常情况下Non Fragment Utilization和Fragment Utilization至少有一个是接近100%,如果两者都低于100%,则有可能是Non Fragment和Fragment之间存在数据依赖关系。

当Non Fragment Utilization过高时,开发者可以从顶点数、复杂的Compute Shader的使用情况以及Geometry Shader、Tessellation Shader等角度着手进行优化。当Fragment Utilization过高时,则可以考虑项目中是否存在是否存在片段数目过多、片段Shader过于复杂。

二、Adreno GPU Counter

  • GPU负载

Adreno GPU Counter下的GPU负载则以GPU频率为主要指标。测试过程中除了CPU外,也需要对GPU芯片的工作情况予以关注。

2.png

当项目压力较高且发热明显时,GPU也可能和CPU一样发生降频情况。通过观察GPU频率,可以判断测试过程中GPU的工作情况,以便定位项目GPU压力较大的场景,并进行进一步的问题定位和优化。

  • GPU缓存

在GPU中,GPU要访问的数据在Cache中有缓存,称为“命中”(Cache Hit),反之则称为“缺失”(Cache Miss)。通过Texture L1 Cache Miss,即一级纹理缓存未命中百分比,我们可以看到GPU的缓存情况。

3.png

Texture L1 Cache Miss主要会对设备的带宽和能耗情况进行影响,当Cache Miss率越高,说明GPU做了越多的“无用功”,这是我们不希望看到的。

为了提高计算效率,应尽可能降低Cache Miss率,UWA推荐该值应小于15%。当该值较高时,开发者可以考虑从纹理过滤、Mipmap开启设置、纹理压缩等方面进行排查和优化。

  • GPU纹理过滤

GPU纹理过滤主要参数为Non-Base Level Textures,即非0层Mipmap纹理。此外,还包括Nearest Filtered(邻近过滤)、Linear Filtered(线性过滤)、Anisotropic Filtered(各向异性过滤)3项指标。

4.png

通过GPU纹理过滤参数,可以快速分析测试过程中的GPU纹理过滤情况。一般来说,UWA建议在项目中尽量使用低开销的纹理过滤,并谨慎使用各向异性纹理过滤。如果是3D游戏的话需要特别关注是否开启了Mipmap。

三、PowerVR GPU Counter

针对PowerVR GPU Counter,UWA提供了GPU 负载、GPU着色、GPU带宽、GPU图元4个模块。由于前文中已对GPU负载进行了介绍,且GPU着色、GPU带宽和GPU图元的意义与优化方向与Mali GPU Counter一致,这里不作赘述。

着色和带宽介绍参考:《GPU Counter、Timeline功能上线 | 性能优化快人一步!》

图元介绍参考:《新功能|Mali GPU Counter模块新增GPU图元处理和GPU Shader Cycles》

需要注意的是,基于Mali GPU和PowerVR GPU架构不同,同一参数在不同品牌芯片上的推荐值也会存在差异,不同设备间横向对比的意义不大,更推荐大家在相同的设备上进行纵向对比。

同时,由于同品牌芯片的架构之间也会存在差异,UWA目前仅支持部分芯片的GPU Counter数据采集,具体支持设备列表可通过下图或登录UWA官网对“Mali/Power VR/Adreno GPU Counter支持设备”列表进行查询:

https://www.uwa4d.com/main/supported.html

5.png

除了GPU Counter外,在硬件信息页新增了功率峰值参数。开发者可以通过这一模块,查看测试过程中设备的功率和电流情况,以便对项目的功耗情况进行分析。

6.png

功耗和带宽数据紧密相关,可以通过设备功耗情况推测出设备的带宽情况,当功耗较高时,带宽也会升高。因此需要关注测试过程中设备的功耗情况,避免由功耗过高引起的发热和降频。

需要注意的是,由于功耗是基于设备硬件的参数,不同设备的功耗情况可能存在较大差异,不建议在不同设备间进行功耗情况的横向对比。而当设备连接USB或充电时,功率值会受到较大影响,造成数据异常或出现负数的情况。故建议以未连接USB时测试的功率、电流数据为准。

后续我们也会提供更多相关的参数和指标,希望会对您在GPU优化上和项目的整体性能监控上有所帮助。

获得最新功能体验,请使用SDK 2.4.4版本,下载链接为:https://www.uwa4d.com/#download为了方便管理,新版本SDK的文件结构发生了变化,所以建议删除旧版SDK(包括Plugins中相关文件)后,再进行新SDK的集成。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK