Linus Torvalds刚刚宣布正式发布新的Linux内核6.18。
“所以,我得承认,如果在发布的最后一周少一些bug修复的噪音,我会更满意。虽然修复的bug比我预期的要多一些,但并没有什么让我觉得需要更多时间完善的地方。因此,6.18版本已经打上标签并发布了。”
Linux 6.18 的主要特性
从总体上看,Linux 内核 6.18 为 TCP 连接引入了新的基于 PSP 的加密选项、更快的 slab 分配和交换、显著的 UDP 接收端改进、持久缓存设备映射器目标、可通过文件句柄管理的命名空间、对 TCP 中精确 ECN 的支持以及签名 BPF 程序,此外还有许多较小的核心和驱动程序更改。
其中一项主要变化是在 SLUB 分配器中引入了“层”(sheaves)。简单来说,内核现在为每个 CPU 维护小型内存对象的缓存,因此大多数分配和释放操作都可以在本地处理,而无需跨 CPU 进行同步。这减少了热点路径上的争用,并加快了分配和释放速度,从而提高了严重依赖 RCU 的工作负载的性能。
交换性能是另一个正在改进的领域。Linux 6.18 引入了“交换表”工作的第一阶段,引入了一种新的抽象层,用作交换缓存的后端。其目标是提高交换查找和管理的效率,尤其是在内存压力较大的情况下。
鉴于此,合并说明中报告的基准测试显示,对于代表性工作负载,吞吐量和每秒请求数提高了 5% 至 20%,并且在大页面分配的压力下表现更好。
在存储方面,新的设备映射目标 dm-pcache 允许将持久内存(例如基于 CXL 或支持 DAX 的设备)用作速度较慢的块设备的高速缓存。这为系统设计人员提供了一种内核级方法,可以将持久内存视为 DRAM 和 SSD 或磁盘之间的一个层级,而无需编写自定义用户空间代码。
与此同时,NFS 服务器新增了一个选项,可以完全禁用自身的 I/O 缓存。这听起来可能有些违反直觉,但对于大型、高负载的服务器或非常小的云实例而言,跳过服务器端缓存实际上可以提高可扩展性,并避免频繁使用本地内存。
进程和命名空间管理的可用性得到了显著提升。自 Linux 5.1 起,内核就支持进程文件描述符句柄 (pidfd),事实证明,它们对于实现稳健的进程管理非常有用。
Linux 内核 6.18 将这一理念扩展到了命名空间:用户空间现在可以使用现有的 API 对命名空间标识符进行编码和解码name_to_handle_at()。open_by_handle_at()这使得在系统生命周期内能够一致地引用命名空间,可靠地比较它们,并在不分配额外资源的情况下传递它们。
网络方面发生了一些重大变化,新版本增加了对精确显式拥塞通知的初步支持,该支持扩展了经典的 ECN,允许提供更详细的反馈,说明每个 RTT 看到了多少拥塞标记。
在 UDP 端,接收路径经过重新设计,以减少争用,并使用 NUMA 感知锁定和更好的数据结构布局;变更日志中引用的测试报告显示,UDP 接收性能提高了约 50%,在类似攻击的条件下(即少量套接字接收非常高的数据包速率),性能提升甚至更大。
除此之外,默认套接字接收缓冲区大小也提高到 4 MB,并且合并了之前关于直接内部缓冲区共享 (dibs) 的工作,进一步提高了高容量网络的可扩展性。
通过支持 PSP 加密的 TCP 连接,安全性和传输加密得到加强。PSP 是 Google 开发的一种协议,它介于 IPsec 和 TLS 之间:它在架构上与两者都有一些相似之处,但专为强大的硬件卸载而设计,包括隧道模式,因此对于普遍配备卸载引擎的数据中心部署来说极具吸引力。
BPF 子系统新增了加载加密签名 BPF 程序的功能。目前,主要变化在于底层机制:内核可以在程序加载时验证其签名。此外,随着 Linux 内核 6.18 改进了在同时启用多个 Linux 安全模块 (LSM) 时的事件处理,审计子系统也正朝着更强大的多 LSM 支持方向发展。
在虚拟化方面,此版本引入了 virtio SPI 驱动程序,允许虚拟机管理程序通过标准的 virtio 机制将 SPI 设备直接暴露给虚拟机。在 x86 主机上,新增了 SEV-SNP 密文隐藏功能,可防止未经授权访问客户机私有内存的 CPU 看到该内存中的密文。
在 KVM 端,它现在可以在 Intel 硬件上提供影子堆栈和间接分支跟踪,在 AMD 硬件上提供影子堆栈,使客户机能够访问现代控制流保护。
文件系统和块层方面,既有新功能开发,也有清理工作。新增的 dm-pcache 目标也包含在内,它为块设备提供持久缓存。Ext4 继续现代化,扩展了对保留 ID 的支持,并新增了 ioctl 接口来检索和修改超级块参数,同时移除了 ext3 中剩余的独立配置选项。
OverlayFS 新增了大小写折叠支持,FUSE 文件系统现在可以直接处理大范围复制。此外,一批已弃用的 XFS 选项默认禁用,过时的挂载选项被移除,在线 fsck 现在默认启用,不再被视为实验性功能。Linux内核 6.18 还彻底移除了 Bcachefs 文件系统,一些文件系统采用了新的无锁位图实现,以减少对共享元数据的争用。
最后,关于硬件支持,该版本为各种 GPU(包括更新的 Mali 变体和额外的 SoC 图形模块)、显示桥接器和面板、嵌入式 SoC、网卡、电源控制器和稳压器、工业 I/O 传感器、存储控制器、USB PHY 和中继器、音频设备以及输入和触觉控制器带来了新的或改进的驱动程序。
对于那些渴望自行编译 Linux 内核 6.18 的用户,现在可以从kernel.org下载。与往常一样,滚动发布发行版的用户将率先收到新内核,预计未来几周内,他们的软件仓库中将陆续提供更新。


