Linux 7.3 发布:18,765 个非合并提交,低显存 AMD 显卡与沙箱接口有改动
Linux 7.3 正式发布,LWN 统计 18,765 个非合并提交。游戏玩家关心低显存 AMD 显卡的显存改进,虚拟机与容器运维关心新增接口。

Linux 7.3 正式发布于 10 月 18 日(周日),它是 Linux 内核的最新稳定版,由 Linus Torvalds 打出正式版标签。LWN 统计,这个版本合入了 18,765 个非合并提交,来自 3,021 位开发者,其中 807 人是第一次参与内核开发。游戏玩家最先会注意到低显存 AMD 显卡上的显存改进;虚拟机宿主和容器运维则会关心 VM 内存追踪、OverlayFS 的 idmapped 挂载和新增的 failfs 沙箱接口。
要点
- 规模:LWN 给出的数字是 18,765 个非合并提交、3,021 位开发者和 807 位首次贡献者。Linuxiac 把这三项都称为记录,但 LWN 和 Linuxiac 都没有给出上一版本的对照数,所以这里只转述「记录」这个说法。
- 显存:低显存 AMD 显卡上,受保护的显存缓冲区现在可以驱逐未受保护的缓冲区,不再因为别的应用先占满显存,就被挤到系统内存(GTT)里。这组 dmem 与 TTM 改动由 Natalie Vock 完成,多家报道称其所在公司是 Valve。博客里 19.6 毫秒的那组测试(8 GiB 显存,请求 9 GiB)是在一项 drm_exec 相关的 TTM 修复之后做的。这项修复在 8 月 17 日还没有合入主线,我们在 KernelNewbies 的 7.3 清单和 torvalds/linux 镜像里也都没有找到它,所以这组数字不能直接算作 7.3 的表现。
- 沙箱与虚拟机:新增 failfs 伪文件系统和 fchroot() 系统调用,进程进入 failfs 之后,绝对路径查找全部以 EOPNOTSUPP 失败。userfaultfd 新增 RWP 模式,供虚拟机内存管理器追踪客户机内存的工作集。
背景
Linux 7.3 距离 7.2 约两个月。显存这一项的前史比较长。Natalie Vock 的博客在 8 月 17 日写道,前一篇文章里的那组内核补丁已经合入主线,并排进了 Linux 7.3。这篇文章解释了显存超额使用为什么会卡:显存不够时,驱动会把数据挪到系统内存,而 GPU 访问系统内存要走 PCIe 总线,速度比访问显存慢得多。
硬件方面,7.3 还带来了 amd_halo_led 驱动,让 AMD Ryzen AI Halo 迷你主机的灯效可以在 Linux 下直接控制。此前只有 AMD 自家基于 Debian 的 Ryzen AI Developer Platform 能做到,这是 It’s FOSS 的说法。我们之前报道过 AMD Ryzen AI Halo 的发布。
事实部分
7.3 的改动很多,下面这张表只放与读者直接相关的几项。每一项都能在 KernelNewbies 的 7.3 清单里找到,清单里链接了对应的补丁。
| 方向 | 改动 | 出处 |
|---|---|---|
| 显存 | dmem cgroup 可以驱逐未受保护的缓冲区,为受保护的缓冲区腾出空间 | KernelNewbies |
| 调度 | cgroup 调度新增 cgroup_mode 选项,默认值 concur,精度最高,开销也最大 | KernelNewbies |
| BPF | sched_ext 子调度器功能完成,不同 cgroup 可以各自运行 BPF 调度器 | KernelNewbies、LWN |
| 沙箱 | failfs 与 fchroot(),进入 failfs 只能通过 FD_FAILFS_ROOT | KernelNewbies、内核文档 |
| 容器 | OverlayFS 支持 idmapped 挂载,便于管理容器内的文件属主 | KernelNewbies、Linuxiac |
| 虚拟机 | userfaultfd 的 RWP 模式,用来追踪客户机内存的工作集 | KernelNewbies、内核文档 |
| 存储 | 小型直接 I/O 路径,ext4 样本负载从 192 万 IOPS 提到 219 万 IOPS | KernelNewbies |
| 内存 | rmap_walk_ksm 优化,最坏情况下 anon_vma 锁持有时间从超过 500 毫秒降到 2 毫秒以内 | KernelNewbies |
| 文件系统 | ntfs3 支持备用数据流;ksmbd 支持 Apple Time Machine 备份 | KernelNewbies |
我们在 GitHub 的 torvalds/linux 镜像里核对了 KernelNewbies 链接的几组提交。dmem 系列的作者是 Natalie Vock,failfs 与 fchroot() 的作者是 Christian Brauner,小型直接 I/O 路径的作者是 Fengnan Chang,zsmalloc 的提交作者是 Wenchao Hao,rmap_walk_ksm 相关提交的作者是 xu xin。v7.3 标签由 Linus Torvalds 签名,时间是 UTC 10 月 18 日 23:14:58,换成西十区(UTC-10)是 13:14,北京时间是 10 月 19 日 07:14。提交元数据只说明谁提交了改动,报道里提到的公司归属(Valve、字节跳动、中兴、小米)我们没有在一手材料里核实。
各方说法
GamingOnLinux 的口气最克制。它说,这些显存改进由 Valve 出资,可能减少卡顿和掉帧,但要拿到全部效果,需要 dmemcg-booster、plasma-foreground-booster 这类用户态工具和兼容的显卡驱动,「直接升级到 7.3 不会自动开启一切」。文章最后提醒,别指望每款游戏都能因此获得神奇的性能提升。
OMG! Ubuntu 给了一个更具体的例子:《Indiana Jones and the Great Circle》在 8GB 显卡上,即便设置把显存需求推向 9GB,仍能正常游玩;It’s FOSS 也写明,这是整套补丁的效果,其余部分还在走向 Linux 主线的路上。它还转述了调度器维护者 Peter Zijlstra 的测试:某款游戏在 8 个重负载后台进程的情况下,最低帧率从 3.8 fps 提到 20.6 fps,平均帧率从 48 fps 提到 57.2 fps。这组数字只见于 OMG! Ubuntu 的转述,我们没能在一手材料里核实。
It’s FOSS 转述了两项补丁的数字。ZTE 工程师修复的 KSM 锁问题,在压力测试中把最坏情况从 705 毫秒降到 2 毫秒以内;Xiaomi 的 zsmalloc 改动「最高 1.83 倍」,测试平台写的是 Raspberry Pi 4B,另有 20 核 Intel 上 1.4 倍。KernelNewbies 只写了微基准里最高 1.83 倍,没有写平台。这些是个别补丁的数字,不能代表整个版本。中文报道里,cnBeta 讲 Btrfs 改进时也提醒,实际收益取决于硬件、文件系统设置和任务类型。
Hacker News 上,LWN 的发布简讯在 10 月 19 日查询时有 233 分。评论里最尖锐的一条来自 rwmj,大意是内核给出的是一组设计不统一的系统调用,必须非常小心地使用,否则可以被绕过,并指向 failfs 文档里列出的注意事项。也有评论者把 failfs 看成更细粒度的 chroot。
8 月的 VRAM 博文当年在 HN 上有 547 分、313 条评论。其中一条顶层评论问,这些改动对本地 LLM 推理有没有用。这是个合理的问题,但我们读到的 7.3 相关材料里,没有一份给出推理负载的测试。
编辑判断
对虚拟机宿主来说,RWP 是这次最实在的一项。它把哪些页最近没有被访问这个信号交给虚拟机内存管理器,由它决定冷页该挪到分层存储还是远端存储。内核提供的是机制,策略仍然要虚拟机管理器自己来写。
对做沙箱的人,failfs 是一块有意思的积木。进入之后,绝对路径和相对工作目录的查找都会失败,所以进程必须事先用文件描述符拿到所有需要的资源。对设计清楚的程序,这种模型很干净;对依赖路径查找的老程序,意味着要先把访问方式改掉。普通用户不会直接碰到它。
对游戏玩家,7.3 里的显存改动确实合入了,KernelNewbies 和 Linuxiac 都列了它。但我们能找到的显存实测只有博客这一组,它用的是整套补丁,其中包括我们没能确认进入 7.3 的修复;测试也只有一款游戏、一组设置和一台机器。博客里也写到,显存需求达到 10 GiB 时,帧时间波动明显,超过 33.3 毫秒的尖峰出现得很频繁,平均约 29.8 毫秒。这和 GamingOnLinux 的提醒一致:收益取决于具体游戏,升级内核不会自动带来收益。
18,765 个提交衡量的是开发活跃度,它说明社区规模,不说明这一版比上一版更好用。
接下来
7.4 的合并窗口从 10 月 19 日开始。LWN 引用了 Linus Torvalds 的发布说明,说明里提到这段时间要休假,合并节奏会不太规律。
GamingOnLinux 和 OMG! Ubuntu 都说,显存管理的后续改动还会在之后的内核版本里出现。博客写于 8 月 17 日,当时作者说,drm_exec 相关的 TTM 修复还需要更多工作才能合入。
10 月 13 日贴上邮件列表的那组 page cache 读路径补丁(见Linus 的内核补丁报道)不在 7.3 里。按内核的发布流程,它赶不上这个版本,能否进入 7.4 要看合并窗口的结果。