快科技8月19日消息,Valve Linux图形团队开发者Natalie Vock发布了VRAM管理分析博客第二部分,展示了Linux内核在显存不足时的优化效果。

测试中《夺宝奇兵:古老之圈》在8GB显存显卡上分配了9GB资源,约1GB被自动迁移至系统内存,平均帧时间19.6毫秒,折合约50 FPS,Vock评价为"仍然流畅可玩"。

打开网易新闻 查看精彩图片

显卡显存不足以容纳游戏全部资源时,Linux内核驱动有两种选择:拒绝分配请求导致应用崩溃,或者将部分数据从显存中移出腾出空间,这一过程在内核术语中称为Eviction。

负责这一过程的是名为TTM的内存管理器,AMDGPU与其他图形驱动共享该组件,不过TTM的核心问题在于无法识别被请求内存区域的用途,一个浏览器标签页和一张游戏纹理在驱动眼中是同等优先级的对象。

这导致过去TTM的迁移操作经常误将前台游戏的纹理移出,而非后台应用中不那么重要的数据。被移出的数据会转移到GTT区域,这是系统内存中GPU可以访问的一部分。

这时的具体性能损失程度就取决于被迁移的资源类型:一张很少读取的纹理几乎不会产生影响,但一个每帧多次访问的缓冲区可能严重拖慢帧率,这也是显存溢出场景下性能损失难以预测的根本原因。

Vock在今年早些时候已经着手解决TTM的优先级问题,引入DMEM Cgroup Controller为不同进程组分配显存占用优先级,确保前台游戏获得更高优先级。

此次发布的第二部分分析进一步验证了优化效果,通过《夺宝奇兵:古老之圈》菜单中可直接调节的流缓冲池大小功能,精确控制显存需求进行测试。在8GB显卡上设定9GB需求后,约1GB游戏资源迁移至系统内存,平均帧时间19.6毫秒。

打开网易新闻 查看精彩图片

Vock同时指出这一结果属于较为乐观的情况,19.6毫秒是平均值而非百分位数据,无法反映帧时间波动、加载卡顿或流式加载中断的情况。

如果迁移的是错误资源,帧率跌幅可能非常明显,原本就在30帧附近挣扎的游戏,显存溢出后可能彻底无法达到目标帧率。

目前第一批补丁已进入DRM-Next分支,预定随Linux 7.3内核合并窗口合入,更深层的优化已经在SteamOS的稳定版和预览版内核中运行,SteamOS 3.8用户无需额外操作即可获得。

需要指出的是,该优化仅适用于开源AMDGPU驱动,即Radeon显卡,NVIDIA GeForce的闭源驱动和Windows系统均不受影响。

更重要的是,内核优化只是让显存溢出更可控,并不能凭空增加显存容量,对于8GB显卡用户而言,这些补丁带来的是更平缓的性能下降曲线和更多极限操作空间,而非彻底消除显存瓶颈。

打开网易新闻 查看精彩图片