一位与Valve合作的独立承包商刚刚给自己分配了一项迄今为止最艰巨的任务:让游戏在8 GB显存的显卡上流畅运行成为可能。

Cover Image

通过一个简单的技巧,Valve的承包商解锁了在8 GB显存显卡上的流畅游戏体验。

在低端显卡,尤其是仅有8 GB显存的显卡上玩游戏正变得越来越困难。如今大多数游戏发布时都未经充分优化,而随着电脑组件价格上涨,绝大多数PC玩家选择预算型硬件,这使得普通大众进行PC游戏的门槛越来越高。

但看起来,一位与当今玩家感同身受的人士开发了一款全新的显存管理工具,旨在帮助低端显卡重获生机。

娜塔莉·沃克(Natalie Vock)透露,在配备8 GB显存的显卡上玩游戏或许将再次成为可能。娜塔莉是一位独立承包商,与Valve合作开发RADVAMD显卡的开源Vulkan驱动程序)。她在Pixelcluster GPU博客上分享了她是如何设法解决显卡显存困境的。

对某些人来说,这可能听起来难以置信,但并非每个人的台式电脑里都塞着一台拥有128GB显存的数据中心怪兽。在世界各地,流传着一个关于一群特别顽强的Linux游戏玩家的故事:他们敢于尝试仅用8 GB甚至更少的显存来玩游戏。确实,当系统可用显存开始不足,面对必然出现的卡顿和减速时,需要极其强大的韧性和决心才能坚持下去。内核驱动内部会爆发一场混战,每个应用程序都在拼命争夺尽可能多的GPU内存。任何卷入这场资源争夺战的游戏都难免遭受性能损失。

这项研究首先探讨了在配备8 GB显存的低端显卡上运行游戏时会发生什么。据称,在一台标准的台式电脑上,运行着几个标签页的浏览器会占用一小部分显卡显存,其他一些应用程序也会占用一部分。甚至在启动游戏之前,这些应用程序就已经吃掉了四分之一的显存。而当运行像《赛博朋克2077》(Cyberpunk 2077)这样的游戏时,几乎全部的8 GB显存预算都会被消耗殆尽。

台式电脑还会在显卡显存和系统内存之间共享内存资源,这被称为GTT。这种内存可以被GPU访问,但与GPU提供的全带宽相比,发送到系统内存的数据运行速度要低得多(在上述例子中为256 GB/s对比16 GB/s)。这会导致速度下降。而《赛博朋克2077》会为GTT分配650 MB,但尽管有这项分配,游戏仍然向显存请求了一些内存分配,这些请求最终落到了GTT上。这个过程被称为“驱逐”。

解决“驱逐”问题的答案在于cgroups,它对于将随机的进程批次组织成一个单一的管理单元非常有用。它们可以为RAMCPU设置限制。这就是cgroups下一步的用武之地,即由Red HatMaartenMaxime Ripard娜塔莉编写的“dmem cgroup控制器”。有了它,内核可以提供内存保护,作为一种防止“驱逐”的手段。但还需要进行进一步的调整,通过娜塔莉提供的补丁,内存使用得到了更积极的管理。

当《赛博朋克2077》在应用了这些补丁后再次启动时,效果显而易见。即使后台运行着一堆繁重的应用程序,游戏也不会向内存分配额外的资源。这使得在拥有8 GB甚至更低(如6 GB)显存的显卡上,游戏运行更加流畅且易于管理。

通过cgroups进行优先级划分,现在游戏几乎可以将显存的每一个字节都用于实际的游戏目的。很难精确比较游戏性能的具体数字,因为显存短缺是在游戏中四处活动时随时间推移慢慢出现的,但当你玩一段时间后比较游戏的感觉,改进应该是显而易见的。游戏性能不会随时间缓慢下降,而是应该表现得更加稳定——只要游戏本身使用的显存不超过你实际拥有的量。总的来说,即使是现代游戏似乎也保持在约8 GB或稍少一点的显存预算内,所以如果你有一块8 GB显存的显卡,你应该可以畅玩当今的游戏。

目前,dmem cgroupsAMD英特尔的显卡兼容。由于英伟达(NVIDIA)的专有内核模块,其显卡不支持此功能。此外,对集成显卡的支持尚不确定,但主要问题在于它们没有专用显存,而是依赖GTT(系统内存)。不过这个补丁可能会带来一些好处。娜塔莉分享的这项工作非常出色,我们希望这些好处能惠及在实际低端显卡上运行的游戏。


文章标签: #显卡优化 #显存管理 #游戏性能 #低端硬件 #Linux游戏

负责编辑

  菠萝老师先生 

  让你的每一个瞬间都充满意义地生活,因为在生命的尽头,衡量的不是你活了多少年,而是你如何度过这些年。