当显存占用过高时,游戏会出现严重卡顿; 重启电脑可恢复,电脑使用编辑器工作1天左右又开始卡顿

机器参数:

内存:128G

显卡:RTX 4080(16G显存)

UE引擎版本:5.6

卡顿表现:

​当项目显存(通过tools-RenderResourcesViewer)占用超过一定程度,编辑器/游戏内就会特别卡顿,镜头晃动时更加明显

重启编辑器,依旧卡顿​

重启电脑之后,卡顿现象消失,然后工作个2天左右,就会出现这个情况。

详细描述(卡顿的情况)

tools-RenderResourcesViewer 显示 TotalResourceSize 超过9G;Window 任务管理器 ​看显存 11G 左右;此时运行编辑器​/游戏,都会特别卡

通过调整分级设置,把Shadow/GI这些下调,让显存占用小于9G, 卡顿现象消失

重启电脑后

​tools-RenderResourcesViewer 显示 TotalResourceSize 超过9G;Window 任务管理器 ​看显存 11G 左右;这个时候编辑器和游戏 也不会卡顿

​打开更复杂的地图,​tools-RenderResourcesViewer 显示 TotalResourceSize 超过15G, Window 任务管理器 ​看显存 15G 左右,这个时候也不会卡顿

做了一些Profile(卡顿的时候)

UnrealInsight:

[Image Removed]

​[Image Removed]

​[Image Removed]

频繁卡顿,卡GPU,每个调用都有可能卡顿

NsightSystem:

[Image Removed]

​[Image Removed]

​卡顿的时候,有个System进程占用巨长的时间,同时进程下的Paging Queue Packet 占用的时间200+ms;

重启电脑之后, 再用同样方式录制(同样的关卡,同样的显存占用),System.exe 占用消失,PagingQueuePacket 耗时6ms以下

想向UE寻求帮助:

1.官方这边有没有碰到过类似的问题?以及项目组这边该如何进一步定位问题

2.对于RTX 4080 (16G的显存),项目显存一般需要限制到多少才合适?有木有一些经验上的数据可以提供

3.低配显卡,比如1060这种只有3G显存的,是否适合使用Nanite? (Nanite有一个固定的2GBuffer占用)

重现步骤
项目工程挂机2天左右复现,Demo工程未尝试

Hi,

这属于一个目前我们已知的问题,应该是因为Windows平台会根据当前运行中的应用去分配vram,每个应用能分到多少是系统决定的。另外Windows也会根据情况,将vram的资源evict到nonlocal的地方(内存或者磁盘),即使当前的vram没有超过windows分配的大小。不过资源是可以设置常驻优先级的(SetResidencyPriority),引擎应该在大部分需要的地方设置了,比如RenderTarget,UAV,transient buffer,但是好像有些地方没有设置到(可能是Nanite和Raytracing相关的buffer),因为没有设置优先级,这些大的显存资源跟一些小的资源都有可能被evict出去。所以因为evict出去后,想读回时,因为显存的碎片,导致没有连续显存,就会无法读回,导致性能下降。

应该有两个方向可以考虑解决,一个是尽可能找到哪些资源没有设置高优先级,根据需要设置一下。另一个可能是在那些大的资源创建的时候,用Reserved(TexCreate_ReservedResource)的方式创建,这样可以减缓这种情况。

不过目前暂时还没有针对性的优化,所以目前只能自己想办法调整。我们有一个内部的jira UE-305620去追踪这个问题。希望能在下个版本中有一定的优化。

了解了,感谢您的回复!