[Industry News] Linux kernel 7.3rc1 发布
Tofloor
poster avatar
d***8@163.com
deepin
4 hours ago
Author

如果只看“普通桌面用户真正可能感受到的东西”,Linux 7.3 是最近几个版本里相当偏性能优化的一版。尤其值得关注下面这些。

Btrfs 性能提升很明显

7.3 的 Btrfs 更新包括:

Direct I/O 改用 iomap bounce buffer,不再退回 buffered I/O;相关测试里性能从理论带宽的大约 50% 提升到接近 95%。

extent-buffer 跟踪从 XArray 改成局部 LRU,在特定 workload 中可达到约 3× 改善。

去掉 non-SSD 模式下一处不必要的 1-jiffy 延迟,某个多 logging task 测试中吞吐量出现约 5× 改善。

free-space cache v1 默认停用,进一步向 free-space tree/v2 统一。

小于 page size 的 block size 不再被任意限制在 4 KiB。

CPU scheduler 改动,对桌面/游戏很有意思

7.3 合入了 scheduler 的 “flatten the pick” 改造,重点是改善 cgroup 层级调度。以前带 systemd/cgroup 的现代 Linux 桌面中,任务层级可能导致一些不理想的调度选择;这次重新整理了 pick-next-task 逻辑。

Intel 工程师测试过 Sandy Bridge + RX 580 这样的旧机器,游戏 workload 有明显改善。新机器未必提升那么大,但方向很对:降低调度开销、改善 latency 和任务公平性。

另外 SMP 代码允许 CPU 在等待远端 IPI 完成时进行抢占,从而减少某些 TLB flush 等操作造成的 scheduler latency spike。对实时工作负载最明显,但桌面也可能间接受益于更稳定的尾延迟。

内存管理:低内存压力下更聪明

7.3 的 MM 子系统非常大,本周期 Andrew Morton 提到大约有 1250 个 “added-to-mm” patch 邮件。

比较值得普通用户关注的是:

zsmalloc 减少 zs_free() 锁竞争,对 zRAM / zswap 重负载场景有帮助;

MGLRU 现在更积极保护已经执行过的 executable file folios,减少程序代码页过早被回收、随后又从 SSD 重新读入的情况。

后者尤其属于“平均 benchmark 未必暴涨,但内存压力时系统更顺”的优化。

游戏显存管理出现一个很重要的基础改进

Valve 的 Natalie Vock 推动的 DMEMCG / TTM 显存 eviction 改进进入 7.3。

核心问题是:游戏把 VRAM 吃满以后,Linux 原先对哪些 buffer 留在 VRAM、哪些迁移到系统内存的判断还不够理想。7.3 开始改善这个机制,首批主要惠及 AMDGPU 和 Intel GPU。Valve 的测试就是故意让游戏需求超过实际显存,例如需要约 9 GB 而显卡只有 8 GB。

Intel/AMD 混合 CPU 调度基础继续完善

Linux 7.3 把 Intel/AMD 的 CPU core type 表示进一步统一,并新增 AMD low-power core 类型,为 Zen 6 等未来混合架构做准备。

GPU/DRM 更新很多

AMD 方面有大量 reset、runtime PM、eGPU、display、MES、DCN 修复;老 GCN 显卡也继续得到 Valve 的支持改善。

Intel 方面,Nova Lake S Xe3P 核显从 experimental 变成默认启用,不再需要 force_probe,也继续完善 Nova Lake display。

sched_ext 已经非常成熟

7.3 中 sched_ext 的 hierarchical sub-scheduler 现在被称为 “feature complete”。一个顶层 BPF scheduler 可以把某个 cgroup subtree 和 CPU 分配给另一个 scheduler,让不同 workload 使用不同调度策略。

Reply Favorite View the author
All Replies
avatar
昨夜的星辰
deepin
7 minutes ago
#1

昨天晚上刚编译了7.2.2,看来有空要再编译一下7.3尝试一下了😁

Reply View the author