8GB显卡这几年过得挺憋屈。

很多3A游戏一开,显存看着还没彻底爆,可实际帧率已经开始发飘,画面时不时一卡,体验很难说得上顺畅。尤其是在Linux环境下,这类问题其实不只是“显存不够”这么简单,背后还有一层更麻烦的原因:系统根本分不清,到底谁才该优先占用显存。

V社开发者 Vock 放出了一套很有针对性的方案,思路不复杂,但很实用。简单说,就是把显存优先留给你正在玩的前台游戏,至于后台那些程序,该挪去系统内存就挪过去,别跟游戏抢资源。

问题出在Linux内核本身的处理方式上。
当显存吃紧时,系统会把一部分数据迁移到 GTT,也就是系统内存里给 GPU 寻址使用的那块区域。麻烦在于,这个迁移过程并不会判断“谁更重要”。前台跑着游戏,后台挂着别的程序,到了该腾地方的时候,系统并不会特别照顾游戏,结果就是本该留在显存里的内容,也可能被一股脑塞去更慢的区域。

这就直接影响到了实际表现。

Vock拿《赛博朋克2077》做了测试。在一张 8GB 显卡上,游戏本体实际只占用了大约 6GB 显存,但还有 1.37GB 的数据被挤到了 GTT 里。数据一旦跑到这块更慢的区域,帧时间就容易波动,卡顿和不稳定也就跟着来了。很多玩家平时感受到的“怎么没爆显存也卡”,大概率就是类似情况。

这次的解决办法,核心是两个组件。

第一个叫 dmemcg-booster。它的作用可以理解成给前台程序打一层“保护标记”——告诉系统,这个程序的显存数据别乱赶走,优先保住。这样一来,当资源开始紧张时,被迫让位的就不是游戏,而是那些后台任务,它们的数据会更多地被迁移到系统内存。

别小看这个调整,效果是很直接的。
在补丁生效之后,《赛博朋克2077》的显存占用从原来的约 6GB 提升到了 7.4GB,GTT 占用则从 1.37GB 压到了大约 650MB。换句话说,更多真正该留在显存里的游戏数据被稳稳保住了,整体流畅度自然就上来了。

第二个组件是 plaa-foreground-booster。
这个工具主要是给 KDE 桌面环境准备的,它可以自动识别当前前台窗口,然后给这个窗口对应的程序分配显存优先级。实际使用上,这就比手动指定方便多了,系统自己就能知道:现在你正在操作的东西,应该被优先照顾。

从实际价值来看,这套方案对 8GB 显卡尤其有意义。
因为8GB这个容量现在正好卡在一个很微妙的位置——不是完全不能玩,但也很容易被高负载游戏逼到边缘。一旦系统调度还不够聪明,体验就会明显打折。V社这次不是单纯去“压榨性能”,而是把原本就该属于游戏的资源,尽量还给游戏自己。

这些补丁已经在集成进 CatchyOS,同时也已经提交了 Linux 内核合并申请。也就是说,这并不是一个停留在实验层面的想法,而是在往正式落地的方向推进。

不过有一点要提前说清楚,这套方案现在只适用于 AMD 显卡。
原因也不复杂,NVIDIA 这边由于闭源驱动的内存管理机制限制,暂时没法直接套用这一套做法。所以如果你是 A 卡用户,尤其又是在 Linux 下打游戏,这事确实值得关注;但如果你用的是 NVIDIA,那目前还享受不到这波优化。

说到底,这类补丁最打动人的地方,不是参数多漂亮,而是它解决的是一个很实际的问题:前台游戏明明才是你真正关心的内容,系统就该优先保障它。
以前是显存资源“大家一起抢,抢到谁算谁”,现在终于开始讲先来后到了。

对于还在坚持 8GB 显卡的玩家来说,这种优化,可能比单纯多几帧更有价值。因为真正影响体验的,往往不是平均帧数字,而是那种突然掉速、莫名发卡、玩着总觉得不踏实的感觉。V社这次,算是把这个病精准掐住了。

V社这次真动刀了:8GB显卡在Linux上终于不用被后台程序“偷显存”