Linux 5.10 有哪些改动
原始问题:Linux 5.10 有哪些改动 · 2026-07-01
Linux 5.10 版本改动详解
Linux 5.10 于 2020 年 12 月 13 日发布,是一个 Long Term Support (LTS) 版本。以下是该版本的主要改动分类说明。
1. 核心特性
| 特性 | 说明 |
|---|---|
| Long Term Support | 5.10 被标记为 LTS 版本,获得长期维护支持 |
| Ext4 fast commit | 引入快速提交机制,大幅提升 fsync() 元数据写入性能 |
| io_uring 安全限制 | 支持对 io_uring 环设置限制,实现进程间安全共享 |
| process_madvise | 新增 syscall,允许一个进程向另一个进程提供内存使用建议 |
| 静态调用(Static calls) | 代码补丁机制,用直接调用替代间接调用,改善 post-Spectre 性能 |
| virtio-fs 优化 | 更快的性能与更低的内存消耗 |
| AMD SEV-ES 支持 | 支持 AMD 虚拟化客户机的寄存器加密 |
| ARM Memory Tagging Extension | 支持 ARM MTE,防止多种内存安全漏洞 |
2. 各子系统详细改动
2.1 Ext4 fast commit(快速提交)
- 📋 问题定位: Ext4 文件系统,
fs/ext4/fast_commit.c - 🎯 原理说明: 传统的 Ext4 事务提交需要写完整的 journal 条目。fast commit 机制仅记录关键元数据变更的轻量级事务,大幅减少 fsync() 延迟。在每次 fsync/fdatasync 调用时,仅提交一个紧凑的 “fast commit block”,包含事务ID和受影响的 inode 变更集。
- 💡 适用场景: 数据库、消息队列等频繁调用 fsync() 的工作负载
- 💡 收益效果: 在典型 OLTP 负载下,fsync 性能可提升 1.5x~3x
2.2 io_uring 限制机制
- 📋 问题定位:
fs/io_uring.c,io_uring 安全子系统 - 🎯 原理说明: 引入
IORING_SETUP_R_DISABLED标志,允许创建时禁用所有操作,然后通过io_uring_register()启用一个受限的操作白名单。调用者可以限制允许的操作类型(如只允许 read/write,禁止 splice/fallocate)以及允许操作的文件范围。 - 💡 适用场景: 多租户环境、沙箱应用共享 io_uring 实例
- 💡 收益效果: 可在不信任的进程之间安全共享 io_uring 实例,避免提权攻击面
2.3 process_madvise 系统调用
- 📋 问题定位: 新增 syscall:
process_madvise(2) - 🎯 原理说明: 允许一个进程(需具备
PTRACE_MODE_ATTACH_FSCREDS权限)向另一个进程的内存空间批量发出 madvise 建议。例如,父进程可以建议子进程释放其缓存页。核心数据结构在mm/advise.c中实现。 - 💡 适用场景: 内存压力管理器、Android LMKD、容器内存回收
- 💡 收益效果: 可主动管理全局内存,减少 OOM 触发的概率
2.4 静态调用(Static calls)
- 📋 问题定位: 内核补丁基础设施,
include/linux/static_call.h - 🎯 原理说明: 后 Spectre/Meltdown 时代,间接调用因 retpoline 产生巨大性能开销。静态调用机制在启动时或模块加载时将间接调用一次性改写为直接 CALL 指令,在运行时通过
__static_call_update()更新目标地址。这是通过在.text段中嵌入可写占位符指令实现的。 - 💡 适用场景: 所有使用函数指针的热路径(BPF、KVM、tracepoints 等)
- 💡 收益效果: 消除了 retpoline 开销,典型热路径延迟降低 10%~30%
2.5 virtio-fs 性能优化
- 📋 问题定位:
fs/fuse/virtio_fs.c - 🎯 原理说明: 重构了 FUSE 与 virtio 队列之间的数据路径,引入高效的内存映射机制和批量请求处理,减少内存复制和上下文切换次数。
- 💡 适用场景: 宿主机与虚拟机之间的文件共享
- 💡 收益效果: 内存消耗下降,吞吐量提升明显(具体取决于工作负载,常见场景有 2x 提升)
2.6 ARM Memory Tagging Extension (MTE)
- 📋 问题定位: arm64 架构支持,
arch/arm64/include/asm/mte.h - 🎯 原理说明: ARM v8.5 MTE 在每 16 字节内存上附加 4-bit tag,指针的高位也保存相同 tag。访问时硬件自动比对 tag,匹配失败触发同步或异步异常。内核支持 MTE 的页分配器集成与用户空间接口,用户态程序可用
mprotect()启用。 - 💡 适用场景: 堆内存越界/释放后使用等内存安全漏洞防护
- 💡 收益效果: 探测到传统工具无法覆盖的复杂内存错误,CVE 检测覆盖率大幅提升
2.7 AMD SEV-ES(寄存器加密)
- 📋 问题定位:
arch/x86/kvm/svm/sev.c - 🎯 原理说明: SEV-ES 在 SEV 基础上进一步加密虚拟机退出时的 CPU 寄存器状态。当 VM 发生 VMEXIT 时,硬件自动加密所有通用寄存器、段寄存器、控制寄存器等,保存在 AES-GCM 加密的 “VM Save Area” 中,KVM 无法读取明文。
- 💡 适用场景: 高安全性云环境、机密计算
- 💡 收益效果: 即使 VMM 被攻破,也无法获取客户机的 CPU 寄存器状态
3. 架构支持
| 架构 | 主要改动 |
|---|---|
| ARM | MTE 支持、更多 SoC 平台引导支持 |
| x86 | SEV-ES、静态调用、SGX 改进 |
| s390 | 新指令支持、CCW 改进 |
| POWERPC | KUAP 增强、新 CPU 支持 |
| RISC-V | 更多设备树支持、BPF JIT 改进 |
| MIPS | 多平台改进 |
| PARISC | 引导改进 |
| IA64 | 进入退役维护阶段 |
4. 文件系统
| FS | 改动 |
|---|---|
| Ext4 | fast commit、bigalloc 支持改进 |
| Btrfs | 性能优化、更快的校验和 |
| XFS | 元数据优化、延迟修复 |
| F2FS | 压缩改进、GC 优化 |
| virtio-fs | FUSE 重构、性能/内存双优化 |
| EROFS | 新特性、解压缩性能提升 |
5. 驱动
包含大量新驱动与驱动改进:Graphics(AMDGPU/Intel GPU 更新)、Storage(NVMe 优化)、Networking(WiFi 6 支持增强)、Audio(新 ASoC 驱动)、USB/Thunderbolt(新控制器支持)等。
6. 其他内核子系统
- BPF: BTF 增强、BPF 迭代器、链接对象改进
- 调度器: CFS 带宽控制改进
- 内存管理: THP 交换优化、memcg 改进
- 网络: MPTCP 进入主线并持续迭代、TLS 1.3 offload、XDP 重构
- 安全: Lockdown 模式增强、LSM 堆叠支持
总结
Linux 5.10 作为一个 LTS 版本,核心亮点是 Ext4 fast commit(显著提升数据库 fsync 性能)、io_uring 安全限制(多租户共享)、静态调用(消除 retpoline 开销)、process_madvise(跨进程内存管理)以及 ARM MTE(硬件级内存安全)。该版本适合用于寻求长期稳定支持的生产环境。
本页面由 MaxKB 问答记录自动导出,供 osperf content-ingestion skill 处理。
⚠️ 免责声明
本站内容均由 AI 基于公开知识辅助生成,仅供学习参考,请勿直接引用作为依据。作者不对信息的准确性、完整性及适用性作保证,亦不对因使用本站内容产生的任何损失承担责任。