性能分析工具 Unreal Insights
概述Unreal Insights是一款集成了虚幻引擎的standalone分析系统,用于收集、分析和显示引擎发出的数据。除充分覆盖引擎的现有系统外,利用Unreal Insights还可轻松添加用户自身的分析数据。最后,该系统拥有远程数据录制功能,对项目执行的影响较低。Unreal Insights只能在非Shipping版本中使用。
Profiler 对 Game Thread 的瓶颈定位分析粒度更小,能精确定位到开销较大的某个函数,查看各个模块的平均最大最小消耗。Unreal Insights能更大程度上减少在本地进行性能检测时造成的额外影响。远程追踪时额外消耗更小。
官网教程:UnrealInsights
Unreal Insights独立工具位于 Engine\Binaries\Win64\UnrealInsights.exe 目录中。
下载并在本地编译UE4源码用户可使用以下方式编译:在开发或发布模式中构建整个UE4解决方案;或直接编译"UnrealInsights"项目:
Trace
Trace是一种结构化的日志记录框架,用于跟踪正在运行的流程中的仪表测量事件。Unreal Insights使用trace.
控制日志消息追踪的宏LOGTRACE_ENABLED位于Engine/Source/Runtime/Core/Public/Logging/LogTrace.h中。
-trace的参数为可选通道,即要追踪的性能数据类型。
假如没有为 -trace 提供参数,则会使用默认的通道列表(cpu、frames、log 、 bookmarks)
可用追踪通道包括:全局搜索关键字UE_TRACE_CHANNEL_DEFINE,可查看所有支持开启的 trace.
[*]Log
[*]Bookmark
[*]Frame
[*]CPU
[*]GPU
[*]LoadTime
[*]File
[*]Net
预定义通道集可以在 .ini 文件中的 Trace.ChannelPresets 部分中定义。在 Engine/Config/BaseEngine.ini中可以找到一个默认集。它是 -trace 和 trace.start 使用的默认设置。用户可以在.ini文件中添加自己的设置,如下所示:
MyChannelSet=log,frame该预设然后可以通过 -trace=MyChannelSet 或 trace.start MyChannelSet 使用
如何使用
通用的方法
条件非shipping版本。
启动命令参数添加-trace或者命令行输入trace.start trace.stop,生成.utrace文件,拖入文件到unreal instight打开查看性能。
-trace的方法默认情况下会生成.utrace文件,可以设置-tracefile=PATH设置生成的路径和文件名,也可以使用
-tracehost=IP 将数据发往Unreal Insights(IP为unreal insights 启动机器的IP)。Unreal Insights启动默认监听TCP端口1980。
在Windows上开发,打开了UE客户端会自动去连接Unreal Insights。
DS服务器
非shipping版本的ds,启动参数添加需要启动参数: -trace=cpu,frame,bookmark,log,loadtime,file,net
会生成.utrace文件. 可以使用-tracefile=PATH 设置文件生成的目录。
客户端
非Shipping版本的独立客户端,命令行启动进行数据追踪。
例如移动包或者编辑器启动的游戏等可以打开命令窗口输入:
trace.start frame,cpu,gpu | trace.stop 开始停止数据追踪
生成的.utrace文件会出现在项目的默认剖析目录中(.../Saved/Profiling)
远程追踪移动端数据
凭借Android Debug Bridge (adb),Android工具可通过USB线重定向TCP流量。要在Android设备上连接运行时应用程序,首先指示adb经由设备上通过USB建立的TCP连接传递:
adb.exe reverse tcp:1980 tcp:1980Unreal Insights聆听TCP端口1980。
在设备上运行时应连接到 localhost,因此操作系统将通过USB线路由流量。
-tracehost=127.0.0.1
[*]手机端开启开发者模式,数据线连接PC,保持adb连接状态:运行adb reverse tcp:1980 tcp:1980
[*]PC端启动Unreal Insights,自动监听1980端口
[*]设置android手机包的启动参数:通过UE4CommandLine.txt。
UE4CommandLine.txt文件中添加:
-tracehost=127.0.0.1 -trace=cpu,frame,bookmark,log,loadtime,file,net,gpu 运行adb push <path_to>\UE4CommandLine.txt /mnt/sdcard/UE4Game/<project_name>/UE4CommandLine.txt 将文件放入手机项目相关目录。
4. 启动app. PC端Unreal Insights上可以看到:手机Trace Session的Status变为LIVE。双击连接即可实时看到数据。同时.utrace文件也会被传到PC端
勾选auto-start analysi for live sessions会自动打开session.Explore按钮可以打开定位到.utrace文件
数据查看
可以将一个.utrace文件从Explorer拖放到Unreal Insights窗口上,即可启动分析。
Timing Insights窗口包含CPU和GPU的逐帧性能数据,Timing Insights窗口包含帧面板(1)、时间面板(2)、日志面板(3)、定时器和计数器选项卡(4),以及调用项和被调用项面板(5):
Timing Insights窗口的一项关键功能是选择单个帧或时间段并显示该段时间内收集的性能信息,其方法是高亮显示和缩放时间面板,并聚合定时器选项卡和统计信息计数器选项卡中的数据。具体步骤为点击帧面板中的单个帧,或点击并拖动时间面板顶部拖动条的一部分,也称 时间标尺。
帧面板是以帧为单位,时间面板是以时间s为单位的。
帧面板
帧(Frames)面板用条形图显示各帧总占时。将光标悬停在条上会显示该帧的索引和运行时间。若点击该条,可在时间面板、定时器选项卡和统计信息计数器选项卡中隔离该帧的数据。帧面板中的选定帧。白色括号标记显示时间面板中可见的一组帧。
[*]帧面板将游戏内每一帧的耗时信息可视化为柱状图序列,高度越高,表明此帧耗时越长
[*]单击某一帧后,时间面板上将自动选取当前帧对应的时长区间
时间面板
显示会话期间运行的所有计时器事件的每个实例可视化表现,此类事件垂直堆叠以指示范围,并使用单独轨迹显示不同的线程活动。在轨迹画面中,事件按线程垂直划分以显示范围,并基于其开始和结束时间水平放置。
将鼠标悬停在时间面板中的定时器事件上时显示的提示文本。(1) 同一线程上嵌套事件的堆栈。(2)
[*]以微秒级的精度显示单个 trace event 的耗时情况,顶部带刻度的区域称作 时间标尺,可通过拖拽标定时间范围。trace event 垂直方向上的 stacks 显示出了相关的调用堆栈.
操作方法
[*]单击选中某个 trace event 按回车,将被自动框定该事件所对应的时长区间
2. 选中某个 trace event 后按 F,将视角聚焦于此条目
3. 双击某个 trace event高亮显示有其他此类型的 event,双击空白区域退出高亮
4. 在帧面板选取某一帧,或在时间面板中选取一段时长
在Timers / Counters查看这段时间内累积的性能消耗数值,在Callers / Callees查看各指令的调用者(Callers)和被调用者(Callees)。Callers 显示的是历经了哪些函数调用,到达了当前所选的 event。Callees 是进入所选 event 后又继续向下调用了哪些函数。
5. 开启关闭特定线程
时间面板含有下拉菜单,可基于轨迹组所含线程隐藏或显示相关轨迹组
6. 在帧面板中选中消耗比较高的帧,按F后可看此帧具体消耗
页:
[1]