研发实战:用Unity Profiler捕获剖析Oculus Quest性能数据
使用Unity Profiler
(映维网 2021年09月27日)对于Oculus Quest,使用Unity Profiler并保存跟踪数据以帮助跟踪CPU热点是一个非常可靠和简单的过程。Unity Profile Analyzer可以帮助你从CPU中节省宝贵的毫秒时间,并建立可靠的回归测试工作流。下面这篇博文将向你展示如何捕获剖析数据,然后再将其提取到Profile Analyzer中,以使用比较模式精确定位峰值、热点和性能回归。
1. 构建和捕获
-
在Build菜单中选中Development Build以构建APK。
-
为Quest安装APK
-
确保Quest与运行Unity Editor的机器位于同一网络
-
获取IP地址并将其添加到Unity Profiler中的目标列表
-
打开命令提示符
-
输入“adb shell ip addr show wlan0”
-
记下设备的IP地址并保存
-
在Unity打开Unity Profiler(Window > Analysis > Profiler),在最上方的窗格中,你可以看到Record、Deep Profile、Profile Editor、Editor等。单击编辑器下拉列表,单击< Enter IP>,然后粘贴你在上一步获取的IP地址,并单击Connect。
-
-
添加IP后,你可以在Quest运行游戏,并通过选择在同一下拉列表中输入的IP进行连接。连接可能需要几秒钟的时间,但你很快就会看到剖析数据开始填充你选择的各种分析程序。数据保存在循环缓冲区中,最多x帧,其中x作为设置提供。在遇到要调查的场景后,请立即暂停捕获。
重要提示:捕获分析数据的开销非常大,对于原始帧时间,Oculus建议使用OVRMetrics Tool,不要连接Profiler
-
如果要获取自定义函数的子节的计时信息,可以使用Profiler Markers,通过自定义字符串分隔开始/结束代码区域,以标识该节。
-
包括UnityEngine.Profiling命名空间
-
在要添加到Profiler集合的区域之前添加Profiler.BeginSample(“My code section”);
-
在要收集分析信息的区域之后添加Profiler.EndSample();
-
2. 保存/加载剖析数据
-
捕获足够的帧并希望保存play会话后,只需单击Profile中的“保存”按钮。这将保存*.pdata文件,你可以随时通过旁边的“加载”按钮加载所述文件。
3. 使用Unity Profile Analyzer
Unity Profile Analyzer非常有用,因为它会提取Profile捕获的一组帧,并对它们执行统计分析,为每个函数生成有用的信息,例如最小、中值、平均值、最大计时、以及所提取帧的总调用计数和计数平均值(每帧的平均计数)。这个工具同时可以区分两组分析数据,并提供有关性能回归或改进的信息。在具有高调用计数的函数查找最高中位数/平均计时是提高总体性能的最佳方法。另外,平均/中位数时间和最大时间之间存在巨大差异的函数将帮助你识别要缓解的峰值。只需按最大列排序并进行检查。
3.1 安装 Profile Analyzer Package
-
选择Window > Package Manager
-
单击“Packages: My Assets”下拉列表并选择“Packages: Unity Registry”以显示可用的软件包
-
滚动至Profile Analyzer并单击安装
-
Profile Analyzer现在将显示在Window > Analysis > Profile Analyzer
3.2 一般用法/建议
-
将剖析数据加载到Unity Profiler后,打开Profile Analyzer并单击Pull Data按钮,从打开的Unity Profiler中拉取现有帧数据。
-
当它加载时,你将得到开销最大的函数的分解。如果你希望一帧一帧地处理,请记住验证调用计数不仅仅是一次性计数。
3.3 比较模式
-
将数据加载到工具中后,单击“保存”按钮保存数据文件。
-
拉入要比较的新数据,并以相同的方式保存。
-
在模式下单击Compare按钮
-
加载两个剖析文件(左侧和右侧)
-
提示:将它们命名Before_ 和After_以便区分
-
-
只要在版本之间的名称和标签没有更改,你将得到基于每个函数的计时明细。