近期,Valve的一位Linux图形驱动工程师提出了一项针对Linux系统的显存管理方案,旨在提升显存容量为8GB及以下显卡的游戏性能,在Linux玩家社区引发了广泛关注。
该方案的核心在于解决Linux内核在显存管理上的一个短板。当前,当显卡显存(VRAM)耗尽时,Linux内核缺乏有效的优先级判断机制,无法区分正在运行的前台游戏和后台应用程序。这导致系统可能会随机地将一部分程序数据从高速的显存中迁移到由系统内存模拟的GPU可寻址区域(GTT)中。如果被迁移的是前台游戏的关键数据,就会导致游戏帧率不稳定,出现卡顿。

工程师以《赛博朋克2077》在8GB显卡上的运行情况为例说明了这个问题。测试中,游戏本身仅占用了约6GB的显存,但仍有1.37GB的游戏数据被系统“驱逐”到了速度较慢的GTT区域,从而影响了流畅度。
为解决此问题,Valve工程师开发了一套由内核补丁和配套工具组成的解决方案。其主要工具之一是dmemcg-booster,它可以标记出需要优先保障的前台游戏进程。当显存紧张时,打了补丁的内核会“保护”被标记进程的显存数据,优先将其余后台任务的数据迁移至系统内存。应用该方案后,《赛博朋克2077》的显存占用从6GB提升至7.4GB,被挤到GTT的数据量也从1.37GB大幅降至650MB,游戏运行的流畅度得到了明显改善。此外,另一款名为plasma-foreground-booster的工具则可以自动识别KDE桌面环境下的前台窗口,并为其赋予显存使用上的高优先级。

目前,这套解决方案正在被集成到部分Linux发行版(如CatchyOS)中进行测试,并已向Linux内核主线提交了合并申请,有望在未来成为标准功能。不过需要注意的是,该方案目前仅适用于AMD显卡,因为NVIDIA的闭源驱动拥有自己独立的内存管理机制,无法与此补丁兼容。