2026 年 LSFMM+BPF 峰会聚焦内核交换子系统:性能提升、闪存友好与模块化后端探索
交换表、闪存友好型交换、swap_ops 等内核的交换子系统负责在匿名页面未被使用且其所占用的内存另有他用时将这些页面管理到二级存储中。这个长期被忽视的子系统最近重新引起了开发者的兴趣因此在 2026 年 Linux 存储、文件系统、内存管理和 BPF 峰会的内存管理环节中有三场不同的会议都围绕它展开。现状与路线图第一场会议是 Kairui Song 带来的演讲介绍了交换子系统的近期变化以及未来规划。他引入交换表并消除交换子系统大量复杂性改动后交换子系统每页开销从 3 到 11 字节降至 2 到 10 字节。他打算将静态开销降至零字节长远希望将每页最大开销降至 3 字节但将开销上限控制在 8 字节的目标短期内无法实现。一些操作绕过交换缓存的需求已被消除现在大多数与交换相关的辅助函数都基于页组且有进一步优化空间。将页组分配与交换缓存统一起来的工作仍在进行他正努力用单一分配辅助函数取代现有复杂代码。其他工作旨在让系统更好地利用交换缓存zram 子系统现在可利用这一点但这样做是否有益还不完全清楚。交换 I/O 是异步的可能导致系统过度交换Song 考虑写出操作完成就立即从交换缓存中删除页面来解决问题。还有许多问题有待解决如 PMD 级大页的交换效率提升、预读问题、动态调整交换区域大小、匿名和共享内存页组交换冲突等。Song 正在研究交换表的压缩问题还提出将交换文件重命名为“交换映射”并展示了虚拟交换层的设计已有 RFC 补丁集初步实现这一想法。闪存友好型交换交换操作会产生大量 I/O若管理不当会缩短固态存储设备使用寿命。Youngjun Park 处理大量使用交换功能的嵌入式设备希望避免设备过早耗尽交换存储空间。他指出闪存存储会磨损交换操作对闪存设备造成很大压力但存在对闪存友好的写入模式。相关嵌入式设备使用自定义机制将数据交换到 RAM通过内核线程刷新到持久存储还有去重层减少写入操作显著延长了存储设备使用寿命。Christoph Hellwig 要求 Park 分享代码Park 表示代码作为块设备实现很难上游化。Weiner 询问 Park 是否考虑过使用 zswap 并添加写回机制答案是考虑过但未采用。Wilcox 认为覆盖整个擦除块效果更好Chris Li 希望供应商更开放提供设备最佳 I/O 模式参数。会议最后建议将交换和休眠解耦。抽象交换后端交换子系统最初设计为直接与块设备交互人们对在交换子系统的存储层使用其他类型的设备感兴趣这个概念被称为“swap_ops”。因红帽关闭中国开发团队由 Li 主持讨论。Li 介绍 swap_ops 的核心思想是创建模块化的交换后端是用于交换的虚拟文件系统层。这个想法最早在 2023 年提出之后也有相关讨论。有补丁系列实现了这个概念He 更新了该系列。以 zram 子系统为例若将其实现为 swap_ops 后端可移除大量代码。其他可能的后端包括闪存友好层等但现场对直接处理原始闪存的层不感兴趣。最终还可添加对压缩页面 I/O 的支持Li 还提出允许后端处理交换插槽的分配以及研究在不同后端之间移动页面的最佳方法。