[程式] UE4 Network Profiler介绍 (一)

楼主: yekdniw (yekdniw)   2019-04-16 20:16:25
网页版
https://yekdniwunrealengine.blogspot.com/2019/04/ue4-network-profiler.html
Network profiler是UE4的一个外部工具
用来分析UE4原生的网络传输量,包含RPC, Replicated property等等。
1. 如何使用
1.1. 建立资料档
首先在你要分析的对象(一般是Server)
执行console command netprofile enable开始纪录
然后一段时间后再执行netprofile disable结束录制
结束后在[project path]/Saved/Profiling 资料夹中会看到.nprof档
就是network profiler录下来的资料
1.2. 执行Network profiler
network Profiler的执行档直到4.22都没有办法在Editor内叫起来
必须自己到[Engine path]/Binaries/DotNET/NetworkProfiler.exe 执行
打开后点open 选择刚刚录好的档案就可开始分析
2. Network profiler接口介绍
2.1. 折线图与Summary
默认打开会列出好几个数据的折线图
可以先了解一下平均传输的级距大概在哪里,以及是否有特别不平均的现象要注意
(有很多突峰)。
左下方Summary页面列一些影格与秒数资讯,以及总传输与每秒传输的各细项数据,
一开始建议看总传输量与每秒传输量就好。
[图1.]
2.2. Actors页面
Actors页面默认会列出整段资料所有replicate actor的资讯。
单点某一段时间的话就是改为列出这段时间replicate actor的资讯。
MS字段代表Server花了多少时间在计算处理这个actor的replication
KB/s以及Bytes就是这个actor property的总/每秒传输量
Count是传输次数(接近Property count的总和)
UpdateHz是ServerCPU计算处理这个actor要replicate的频率
RepHz则是实际上有replicate东西出去的频率
Waste=(UpdateHz-RepHz)/UpdateHz
官方的影片有提到Waste高代表Server的CPU有浪费的情况,
等于server一直在计算这个actor,但是这个actor都没有变动需要replicate。
这个时候会建议降低这个actor的update net frequently。
[图2.]
一般来说这个Actors分页是最最最常用的部分,通常就是看哪些Actor的Bytes太高,
然后哪些Property传的次数太多或是量太大。
如果次数太多就考虑降低次数(修改update net frequently,或是修改逻辑),
如果量太大就要想想这些变量是不是真的需要,可不可以不要传或是修改类型
(integer改enum、uint8、bool之类的)
此外Property的Count字段计算方式是要注意的
如果一个Actor有1个structure,内含2个float+1个uint8,
并且structure内的值都有变动的话,字段上会显示count=3,Bytes=9(2*4+1)。
意思是不能单纯的用Bytes/Count来推断传一次的Bytes
(因为实际上传一次是9Bytes不是3Bytes)。
也不能单纯看Count很高就急于降低频率,
有的时候是因为structure内property数量多的关系。
2.3. AllActors分页
AllActors分页就是单纯的列出整段时间所有actor的传输以及所耗CPU时间等资讯,
一般就是直接对TotalSize从大到小排序,记住比较大的项目回Actors一一检讨即可。
[图3.]
2.4. AllProperties分页
AllProperties分页用来看有没有哪个系列的property特别高需要注意,
一般应该是ReplicatedMovement最高,
如果自己的gameplay系统有特别高的部分就要注意。
[图4.]
2.5. AllRPCs分页
AllRPCs分页列出有送出的RPC资讯,一般来说不建议使用RPC来递送资料,
请尽可能的使用replicated property取代RPC。所以以我个人来说,
这个项目是让我用来检查哪些gamelay程式有用RPC,需要移除的。
[图5.]
3. 追踪特定Actor
通常锁定某个传输最高的Actor之后,就是要开始了解这个Actor的细节,
这时候就要用上Filter功能。
在Network Profiler的右下角有ActorFilter可以选择你只想看的Actor,
然后按下Apply Filters作用。
通常在这样的情境,我会把view改为只有看Property Bytes,如下图。
[图6.]
这样就可以一目了然这个Actor的传送状况,如果要更细部知道PropertyFilter的话
可以继续选择Property来过滤。
4. 参考资讯
官方文件
https://docs.unrealengine.com/en-us/Gameplay/Tools/NetworkProfiler
官方影片
https://youtu.be/mT8VUVuk-CY?t=1054
5. 下回预告 (时间未定)
调整观看折线图的横轴纵轴
折线图无法显示的项目
Bunch Overhead
Network Profiler Source Code
作者: coolrobin (泳圈)   2019-04-16 21:07:00
推推
作者: damody (天亮damody)   2019-04-17 02:01:00
作者: Lhmstu (lhmstu)   2019-04-17 09:42:00
推推
作者: elfkiller (没有暱称)   2019-04-23 00:08:00

Links booklink

Contact Us: admin [ a t ] ucptt.com