UPA性能分析工具使用详解

Unity开辟了UPA官方论坛,将分享UPA的使用及常见问题,以及Unity官方团队性能分析的技术积累,欢迎加入!

自从WeTest宣布与Unity官方共同推出Unity性能分析工具UPA(Unity Performance Analysis)以来(Hi,我们和Unity合作了全新的性能分析工具,我们收到了非常多热情的开发者的反馈。为了更好与开发者沟通。我们开辟了UPA官方论坛。


UPA的官方论坛将分享UPA的使用及常见问题,Unity官方团队性能分析的技术积累分享,欢迎开发者们加入!


UPA官方论坛:http://forum.china.unity3d.com/forum-upa-1.html

 

快捷访问:

访问 Unity官方社区Unitychina.cn。

访问[技术交流]-[UPA技术交流]版面。

加入QQ群:633065352。


特别提醒:UPA的预约测试将在12月21日结束,需要试用的开发者抓紧预约哦。

 

 今天我们将为大家分享UPA性能分析工具使用详解。


UPA的测试模式

UPA目前支持3种测试模式,分别是:深度性能测试、资源分析测试、Mono内存测试。


深度性能测试

UPA是一款更适合开发、测试做深度性能分析的工具。拥有四大特性:

● 无需ROOT或接入SDK,本地APK拉起测试,自助使用,简单易用;

● 增加单帧模块和渲染数据,直击性能瓶颈;

● 提供问题列表,Unity官方团队优化建议;

● 全面兼容Unity 2017版本及Android 7.0版本。


资源分析测试

资源分析测试详细列出了单帧所有资源及资源的详细信息。例如:如纹理的长宽,格式,资源的生命周期,资源重复情况,关卡切换时保留资源等。并且提供了资源快照对比的功能,方便使用者快速解决资源问题。


Mono内存测试

Mono内存测试是解决Mono内存泄漏问题的利器,提供了Mono内存快照对比的功能,可以快速定位泄漏的Mono内存,同时展示对象间的引用关系,方便使用者快速解除引用,释放内存。此外,Mono内存测试报告还列出了函数的GC Alloc情况,以便减少不必要的Mono内存分配,降低GC的频率。


如何进行UPA性能测试  

深度性能测试

手机安装待测游戏的development版本。



下载最新版WeTest助手并安装,打开WeTest助手,点击“UPA测试”,选择待测游戏。


完成测试后,点击悬浮框中的“终止”图标即可,测试过程中可按需打点,记录关键场景。

 

资源分析测试和Mono内存测试

准备一台本地ROOT手机,下载最新版本WeTest助手并安装。打开WeTest助手,点击“UPA测试”,拉到底部,点击“资源测试”或“Mono内存测试”,选择待测游戏。完成测试后,点击悬浮框中的“终止”图标即可。


UPA性能测试报告解读

您可以登录wetest.qq.com,在右上角选择“我的报告”,进入报告记录页面,选择左边栏的“客户端性能报告”,然后筛选“Unity测试”,即可查看所有UPA类型的测试报告。


深度性能测试

概况栏:可以查看该次测试的详细信息,以及整体性能情况。



整体性能数值会和腾讯的游戏性能指标结合,对该次测试的游戏性能进行评价。

 

UPA根据Unity官方技术团队的经验,对游戏性能数据进行多方位分析,得出游戏存在的详细性能问题列表,并附上对应的优化方案,方便使用者定位及解决性能问题。



对于一些无法确是否存在问题的性能指标,UPA会列出具体数值,供使用者参考。



CPU栏:主要包括了模块耗时信息,针对游戏帧率较低及卡顿问题。



上图展示了帧时间及各子模块的时间,包括渲染模块,脚本模块,物理模块,GC模块,光照模块,UI模块等。点击曲线上的某帧,可以通过数据及图形更直观的查看该帧的耗时情况。


单帧函数可以通过耗时或者GC Alloc进行排序,也可以展开查看下一级的子函数信息。对于比较重要的函数,UPA将其单独列为一栏,以便查看函数耗时及调用趋势。主要包括对象激活,实例化等函数。

 

内存栏:包括了引擎内存,Mono内存,资源内存等各种内存数据,主要针对游戏内存占用较高问题。


UPA首先会列出Total Reserved和Total Used内存曲线,可以查看游戏整体内存占用情况,Total Unused曲线则反映了游戏的整体内存浪费情况。


接下来UPA展示了Unity,Mono,GfxDriver,Fmod,Profiler等模块的内存占用情况,每个模块都包含Reserved,Used和Unused曲线。此外每个模块都采用Total Reserved内存值作为背景对比,可以直观看出该模块在整体内存中的占比。


由于资源内存一般是游戏内存优化的重点,UPA还列出了纹理,网格,音频,动画及材质资源的内存曲线。


图形栏:包括了游戏的渲染数据,用来分析渲染上是否存在瓶颈。UPA会列出Draw calls,Set pass calls,面数,顶点数,VBO等指标,方便使用者了解游戏整体的渲染性能。


合批(Batch)是渲染优化中非常重要的一点,UPA专门对合批的数据进行了分析,并列出了通过合批可以节省的Draw call数量,方便使用者在是否合批上进行选择。


对于比较重要的函数,UPA将其单独列为一栏,以便查看函数耗时及调用趋势。主要包括Camera.Render,Shader.Parse,Shader.CreateGPUProgram等函数。


资源分析报告

资源测试结论:主要展示资源测试的总体情况,对资源重复率、GameObject数量、纹理资源、网格资源、动画剪辑、音频大小、关卡间保留资源、对象拷贝数量等每个纬度分别给出结论(通过、警告、不通过),在此基础之上给出当次测试的综合结论。

资源重复率:是指内存中同一时刻,存在两份或者以上相同的2D纹理、网格、动画剪辑、音频等资源。一般是相同的一份资源被打包到了多个Assetbundle中,如果这些Assetbundle都被加载进内存,内存中就会存在多份相同的资源。


该项目主要展示了重复率峰值、建议优化内存、重复数量、内存优化大小、内存数目优化等数据,也可通过右上角“导出资源重复率数据”获取详细的重复率数据。



重复率峰值:测试过程中重复资源大小占比的最高值,每一时刻重复率的计算公式(重复率=(当前值-优化值)/当前值)100%。


建议优化内存:测试过程中当前值与优化值的最大差值。


重复数量:测试过程中重复数量(当前值-优化值)的最大值。



内存优化大小:展示内存大小占用走势,将内存中重复资源。大小超过标准(20%)部分标红,点击图中超标点,可以查看该点详细的资源信息(包括资源类型、资源名称、资源大小和重复数量),图中黑色竖条虚线为游戏场景名。 



内存数目优化:展示内存数目占用走势,通过查看某一时刻当前值与优化值情况,获取当前可优化数目(可优化数目=当前值—优化值)。



重复资源Top 20:该表格主要展示内存中重复的资源,按照资源大小默认排序展示的Top 20,包括资源类型、资源名称、资源大小、重复数量。



GameObject数量:展示GameObject数量走势,通过点击可查看每个时间点的GameObject数量,也可通过黑色竖条虚线,了解每个场景的GameObject走势。



纹理资源:纹理资源对应Unity的Texture2D资源,该项目主要展示纹理峰值、超标资源数、RGB24数量、RGB32数量。

● 纹理峰值:测试过程中纹理资源占用的内存最大值。

● 超标资源:分辨率(高度或宽度)超过1024的资源数量。

● RGB24数量:真彩色不带alpha通道纹理资源数量。

● RGBA32数量:高质量真彩色带alpha通道纹理资源数量。



纹理大小:该项主要展示纹理资源占内存大小的趋势,通过黑色竖条虚线,了解每个场景具体的纹理资源走势,红色横条虚线为50M的资源超标警示线。



点击图中任意一点,可以查看该点详细的纹理资源信息(资源类型、资源名称、资源大小、高度、宽度、RGB格式、mipmap数量)。



超标纹理Top 20:该表格主要展示建议优化纹理资源,默认按照资源大小降序排列。



点击任意一个资源名称,可以获取该资源影响区域。



网格资源:纹理资源对应Unity的Mesh资源,该项目主要展示网格峰值、超标资源数。


网格峰值:测试过程中网格资源占用的内存最大值;


超标资源数:测试过程中网格资源vertex数量超过500的资源数量;



网格大小:该项主要展示网格资源占内存大小的趋势,通过黑色竖条虚线,了解每个场景具体的纹理资源走势,红色横条虚线为20M的资源超标警示线。



点击图中任意一点,可以查看该点详细的网格资源信息,包括资源类型、资源名称、资源大小、Vertex数量、Triangle数量。



超标网格Top 20:该表格主要展示建议优化网格资源,默认按照资源大小降序排列。点击任意一个资源名称,可以获取该资源影响区域。



点击任意一个资源名称,可以获取该资源影响区域。



动画剪辑:存储着所有可使用于角色动画或简单动画的动画数据,对应Unity的Animation Clip,该项目主要展示动画剪辑峰值。


动画剪辑峰值:测试过程中动画剪辑资源占用的内存最大值;



动画剪辑大小:该项主要展示动画剪辑资源占内存大小的趋势,通过黑色竖条虚线,了解每个场景具体的动画剪辑资源走势,红色横条虚线为15M的资源超标警示线。



点击图中任意一点,可以查看该点详细的动画剪辑资源信息。包括资源类型、资源名称、资源大小、帧率、时长。



资源Top 20:该表格主要展示测试过程中动画剪辑资源,默认按照资源大小降序排列,内存占用Top 20。



点击任意一个资源名称,可以获取该资源影响区域。



音频剪辑:被音源所使用来表现被导入到Unity的音频资产。Unity同时支持单声道和立体声音频资产,对应Unity的Audio Clip,该项目主要展示音频剪辑峰值。


动画剪辑峰值:测试过程中音频剪辑资源占用的内存最大值;



音频剪辑大小:展示音频剪辑资源占内存大小的趋势,通过黑色竖条虚线,了解每个场景具体的动画剪辑资源走势,红色横条虚线为15M的资源超标警示线。



点击图中任意一点,可以查看该点详细的音频剪辑资源信息。包括资源类型、资源名称、资源大小、声道、频率、时长、Samples。



资源Top 20:该表格主要展示测试过程中音频剪辑资源,默认按照资源大小降序排列,内存占用Top 20。



点击任意一个资源名称,可以获取该资源影响区域。


关卡间保留资源:从场景A切换到到场景B过程中保留的2D纹理、网格、动画剪辑、音频等资源大小,该项目主要展示关卡间保留资源峰值、超标关卡数,以及每个场景切换保留的资源占内存大小情况。

● 保留资源峰值:从场景A切换到到场景B过程中保留资源的最大值。


● 超标数:场景切换过程中保留资源超标预警线(20M)的次数之和。



点击某个柱状图,可以查看场景间切换保留资源的详细资源信息。



对象拷贝数量:使用Render.material不恰当导致material对象进行拷贝的数量。包括资源类型、资源名称、拷贝数量、资源堆栈。



其它资源



Mono内存测试报告

Mono性能测试报告主要展示堆内存峰值、已用内存峰值。

● 堆内存峰值:测试过程中已分配的堆内存最大值。

● 已用内存峰值:测试过程中已使用的堆内存最大值。


图中红点标出了手机客户端测试过程中具体的标记点。Snapshot表格提供下载功能,可以下载每个快照点详细的Mono内存情况。




添加对比:选择任意两个快照,点击对比生成对比数据,生成对比数据的新表,可以查看快照间新增数据、快照间保留数据,对象被引用次数。

 

下载对比报表:可以查看详细的对象引用关系。



UPA性能指标注解

FPS:游戏运行时每秒所运行的帧数(简称FPS,Frames Per Second) 。该项目主要展示FPS均值、大于25(或18帧)比例、GC平均耗时、GC次数。



FPS情况:该项主要展示游戏过程中FPS的趋势,通过黑色竖条虚线,了解每个场景具体的FPS走势,红色横条虚线为25(18帧)的FPS超标警示线,通过横轴下方的缩放条,可以对局部FPS曲线进行放大。



点击图中任意一点,可以查看该点详细的帧时间以及各帧的Drawcall数量。



点击任意一帧可查看该帧的函数耗时详细情况。包括函数名、函数时间、时间占比。



函数时间总表:测试过程中所有函数单次耗时占用Top 20。



点击总表中任意一个函数名,在FPS情况曲线中会展示所有该函数出现的位置。




CPU:游戏运行时CPU的占用比率。该项目主要展示游戏测试过程中CPU小于60%比率,CPU均值。

● CPU小于60%比率:游戏测试过程中CPU占比小于60%占测试过程的比率。

● CPU均值:游戏过程中平均每秒的CPU占用。




网络流量:可监测到运行时间的流量变化、平均流量以及精确到秒的具体流量数值。



Mono内存:托管堆内存,本次测试C#脚本对象占用内存;该项目主要展示游戏测试过程中堆内存峰值,已用内存峰值,MONO内存占用趋势。

● 堆内存峰值:测试过程中已分配的堆内存最大值。

● 已用内存峰值:测试过程中已使用的堆内存最大值。



PSS内存: Proportional Set Size 实际使用的物理内存。比例分配共享库占用的内存。该项主要展示PSS峰值、PSS均值,以及PSS内存占用趋势。

● PSS峰值:测试过程中PSS内存占用的最大值。

● PSS均值:测试过程中PSS内存占用的平均值。



Drawcall趋势:Unity每次在准备数据并通知GPU渲染的过程称为一次Draw Call。该项主要展示Drawcall峰值和Drawcall的走势。


Drawcall峰值:测试过程中Drawcall数量的最大值。



小结

UPA性能分析工具使用详解今天就为大家介绍在这里,欢迎大家访问UPA官方论坛(unitychina.cn)来与Unity的官方技术支持工程师进行交流!需要试用UPA的开发团队抓紧预约!


点击链接:http://wetest.qq.com/cube 即可使用!

最新文章
1浅谈渗透测试服务在泛互行业带来的价值 在泛互联网行业中,渗透测试服务对于保障企业的网络安全至关重要。
2云手机卡顿/无特定设备/商店登录受限怎么办?WeTest专有云帮您解决! 公有云满足了大量小微企业、个人的测试需求;随着客户深入使用,也遇到了一系列新问题。本篇将对几个常见问题予以解答
3小程序安全相关标准和规章制度 针对小程序安全相关标准及规章制度的调研
4浅谈渗透测试及红蓝攻防对抗中的差异 渗透测试和红蓝攻防对抗已经成为企业保障网络安全的重要手段。
5腾讯WeTest成功当选中关村智联软件服务业质量创新联盟理事单位,获得权威认可! 今年,在北京成功召开的“中关村智联软件服务业质量创新联盟第三届第五次会员大会暨第四届第一次会员大会”中,腾讯WeTest成功当选为新一届的理事单位,腾讯IEG品质管理部总经理荆彦青先生当选为理事。
购买
客服
反馈