查看原文
其他

UPA性能分析工具使用详解

2017-12-12 Unity官方平台

自从Unity宣布与腾讯WeTest共同推出的Unity性能分析工具UPA(Unity Performance Analysis)以来,我们收到了非常多热情的开发者的反馈。为了更好与开发者沟通。我们开辟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的开发团队抓紧预约!



更多性能分析文章


官方活动

Unity大师课程北京站报名开启,名额有限,赶快报名吧!


明晚8点,Unity官方技术团队将为大家带来最新的技术直播,详解Tilemap与Cinemachine 2D的使用。我们将加入有奖互动,Unity限量纪念品等待你来领取!


为期1个半月,由Unity举办的《Neon挑战赛》全球开启,寻找最具创意的你!感兴趣的朋友们请访问Unity Connect了解详情。

地址:https://connect.unity.com/challenges/neon


点击“阅读原文”访问 UPA官方社区!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存