Linux 7.3:VRAM 耗尽也能流畅运行

Linux 7.3 improves performance when running out of vRAM

Linux 7.3:VRAM 耗尽也能流畅运行

今年早些时候,我致力于改进游戏的 VRAM 管理,如今这些内核补丁已正式合并入 Linux 7.3。当游戏使用的显存超过物理限制时,通常会导致崩溃或帧率暴跌,但这并非不可避免。通过深入分析,我发现只要内存访问模式对缓存友好,即使数据被交换到 CPU RAM,性能损失也可控。然而,现实中的稳定性问题源于内核锁机制:在并发提交时,amdgpu 驱动可能因死锁而拒绝命令提交,而非优雅重试。我的工作是修复 TTM 层中缺失的 drm_exec 重试逻辑,让内核在遇到内存压力时能自动恢复,从而在 VRAM 耗尽时依然保持游戏稳定运行。

如果驱逐的内存访问模式对缓存友好,或者访问频率不高,那么即使显存耗尽,你也可能不会完全毁掉性能表现!
  1. krisknez

    我希望将来能有个更新,当我的 RAM 爆满时,电脑不会直接卡死变得无法使用……我记得 Linux 和 Windows 处理这种情况的方式不同,而 Windows 似乎没有这个问题。

  2. exceptione

    很棒的文章!我和作者有同样的直觉:在分配内存时,应用程序本身处于最佳位置,可以向内核告知其希望 VRAM 的驻留程度。内核能做的最好的也就是猜测了。

    顺便一提,我不禁感叹,我们在底层性能工程方面欠年轻跨性别群体多少。

  3. inventor7777

    我看到很多评论在讨论 Windows 和 Linux 如何处理 OOM(内存溢出),但我猜我也该提一下 macOS。

    在我的 M4 Max Mac Studio 上,如果我尝试加载过大的 AI 模型且关闭了保护机制,桌面就会在过去几百帧之间来回闪烁。发生这种情况时看起来很难看,但 Ctrl+C 仍然有效,可以终止 llama.cpp;如果你用的是 LM Studio,SSH 也能用。一旦你杀掉了那个惹祸的进程,或者让 macOS 替你处理,桌面会立刻恢复正常。

  4. d3Xt3r

    天哪,7.2 版本才刚刚发布,带来了一堆超棒的性能和游戏相关改进(大页分配、感知缓存的调度、改进的 MGLRU 回收、公平 GPU 调度器等等)……而我已经迫不及待想等 7.3 出来了。

    反观 Windows 世界,用户却讨厌更新……说实话,我想不出任何一个例子能让用户兴奋地大喊:“哦天哪,我简直迫不及待想等下一个补丁星期二了!”

  5. Lunar5227

    写得真好,信息量很大。很高兴看到 Linux 内核开发领域有这么多充满热情的人!

  6. dormento

    我的 Ubuntu 24 系统里发生了一件奇怪的事,也许这只是正常的 OOM 杀手算法,但不管是什么进程在占用资源,被杀掉的总是 Firefox。Chrome 吃太多内存?Firefox 挂了。打开太多应用?Firefox 挂了。真是好笑。

  7. Beijinger

    你们知道我想要什么吗?一个能在情况不妙时,向特定应用(比如 Chrome)发送 kill 或 kill -9 信号的工具。

  8. hypfer

    我来问那个显而易见的问题:

    这对计算工作负载意味着什么?具体来说,就是 LLM 推理。

    这到底意味着什么,还是说这纯粹是游戏领域的东西?

同日更多故事

2026-08-18