2

NEW | GOT Online支持多模式采集、Mono分析支持IL2CPP打包

 1 year ago
source link: https://blog.uwa4d.com/archives/UWA_GOTOnline7.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.

在性能优化时,你是否也遇到过这样的困扰:和性能相关的参数非常多,为什么能保障广度,就没法保障深度?这是因为数据的获取本身存在打点消耗,如果获取全量数据势必存在大量打点操作,导致收集的数据失真。原先大家使用的GOT Online测评就分为4个模式单独采集,也正是出于数据互相不干扰的考量。

不过,这也给测试同学增添了额外工作量。为了两者兼得,我们在UWA SDK 2.4.5版本中,将GOT Online的采集模式做了调整:支持自定义数据采集的配置,即在Overview模式中可以配置Resource和Lua的数据采集。如此一来,存在逻辑关系的性能数据就能在一份报告中同时获取,大幅提升了测试效率,又达到了分析的目的。

1.png

由于同时开启不同数据采集模式对性能会有不同程度的影响,建议大家配置测试需求的时候留意说明文档的注意事项。

IL2CPP包支持Mono数据深度分析

Mono堆内存分配的优化一直是性能优化中非常重要的一环。我们知道,Mono堆内存的持续分配不仅会造成内存占用,还会触发GC造成卡顿。如果项目存在较严重的Mono泄漏,撑爆内存造成闪退的情况也时有发生。

现在,UWA在IL2CPP包上也支持了Mono数据的深度分析,集成SDK 2.4.5并在出包时勾选Script Debugging选项,即可在IL2CPP包上进行Mono数据的采集和分析,再也不用费时费力出Mono包了。

通过GOT Online Mono模式对项目的堆内存分配和泄漏情况进行数据采集和分析,开发者可以快速定位项目Mono模块的性能问题 ,并着手进行优化。

2.png

更细致的内存分析,轻松排查资源、Mono和Lua

新增内存分析模块,可分为资源内存、Lua内存和Mono内存这3个模块。

当测试中未开启Resource模式时,资源统计模块会统计主要场景(测试起始帧、每千帧、场景切换帧和结束帧等)中纹理、网格、Shader、字体、RenderTexture、粒子系统等主流资源的数量和大小;而当开启Resource模式后,则会对上述资源的使用详情做更详细的采集。

以纹理资源为例,开启Resource模式后,可以在报告中获取纹理资源的内存占用、数量峰值、宽度、高度、生命周期和是否开启了R/W等属性,以便开发者对纹理的使用情况做更详细地排查。

3.png
4.png

当测试时配置开启Lua模式时,即可在Lua内存下查看总体堆内存、堆内存具体分配和Mono对象引用的数据,便于开发者对项目中Lua内存的分配和占用情况进行分析。

5.png

由于Lua对Mono对象引用也会造成Mono堆内存无法释放造成泄漏,所以关注Mono对象引用模块也会对Mono内存泄漏情况的优化有所参考,详细查看这篇文章《新功能!Lua,是时候和你走走心了!》

6.png

Mono内存分析则包括Mono Reserved和Mono Used两个指标,以便开发者团队关注Mono堆内存的内存占用和实际使用的情况。

7.png

当Mono堆内存较高时(UWA建议控制在80MB以内),就建议使用GOT Online Mono模式,对Mono堆内存分配进行进一步的测试和优化。


新增重点函数卡顿分析

最新版本将卡顿分析界面做了细化,分为重点函数分析和卡顿点分析两个页面。

1. 重点函数分析
包括了GC.Collect卡顿、Unload Unused卡顿、加载卡顿三类常见的卡顿情况。在重点函数分析页签下,UWA对测试过程中不同函数下的重点函数进行了整合。

以加载卡顿页为例,在这一页签下,可以查看Shader.Parse、Shader.CreateGPUProgram、Instantiate和LoadingReadObject函数的耗时情况、卡顿位置和调用频率等数据,以便开发者快速定位卡顿原因。

8.png
9.png

2. 卡顿点分析
在卡顿点分析页,除了熟悉的每帧耗时曲线、函数指定帧堆栈信息和函数时序调用外,新增了卡顿点分析功能。

通过左侧的饼状图,可以看出卡顿帧的卡顿原因,点击还可以对造成卡顿的函数进行进一步下探。

10.png
11.png

另外,当已知项目的Lua压力较大时,也可以在测试开始时勾选Lua选项。此时,报告中的函数指定帧堆栈信息和函数时序调用模块也会获取到Lua相关的函数,对项目进行Lua模块的优化提供更详细的数据参考。


资源管理—高效定位加载瓶颈

当项目资源越复杂、资源数量越多,资源加载和卸载时的卡顿感就越明显。通过GOT Online Resource模式下的资源管理模块,我们可以准确定位到是哪个资源造成的耗时瓶颈,查看到每个资源的加载/卸载、每个GameObject的实例化/激活等具体耗时情况。

开启Resource模式并勾选资源管理模块后,即可在资源管理模块查看到AssetBundle加载&卸载、资源加载&卸载、资源实例化&激活4大模块。

12.png

在资源管理汇总界面,UWA将需要注意的加载耗时、频率TOP 10的问题资源直接列出,通过对这些重点对象快速处理,能在短时间内达到立竿见影的优化效果。同时,也可以重点分析不同加载接口的使用情况,比如在“资源加载&卸载”界面,用户可以看到被加载的资源属于哪个AssetBundle,用了哪个接口以及加载的耗时、次数等。


GPU耗时获取方式更新

在此次更新中,UWA更新了GPU耗时的统计方式,在更新SDK后,GPU耗时统计会更稳定,兼容机型也更广。

GPU耗时的推荐值和CPU耗时一样,当项目需要维持在30帧时,GPU耗时应低于33ms(UWA推荐控制在28ms更佳),而当项目需要持续在60帧时,GPU耗时则需要低于16ms,否则容易掉帧;项目的GPU压力较大时,就需要结合GPU Counter模块的参数,包括GPU负载、GPU着色、GPU带宽、GPU图元和GPU Shader Cycles等参数,对项目的GPU压力情况进行优化。

13.png

以上就是本次UWA SDK更新的主要内容,UWA一直致力于帮助用户更高效地定位项目的性能问题,本次更新支持了Overview模式下Resource和Lua模块的数据获取,希望开发者可以节省排查问题的时间。

快来UWA官网下载SDK使用吧!下载链接:https://www.uwa4d.com/#download


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK