据 Phoronix 今日报道,Linux 内核有望迎来性能大幅提升,新补丁旨在对内核进行重构以引入 Swap Table。
腾讯的 Kairui Song 今日发布了引入 Swap Table 并将其作为内核交换缓存的第一阶段补丁。这源于 Song 在一次 LSF / MM / BPF 讨论中提出的想法,即在 Linux 内核中集成交换缓存、交换映射和交换分配器功能。这次交换代码的重设计旨在更具未来适应性,并比当前代码使用更少的内存,同时提供更高的性能。
据悉,在引入 Swap Table 的第一阶段包含 9 个补丁,引入了 Swap Table 基础设施并将其用作 swap cache 后端。引入补丁后,Linux 内核在基准测试和工作负载测试中获得了高达 5-20% 的吞吐量、RPS 或构建时间的性能提升。
测试表明,在许多实际工作负载中,新补丁对于从 8 核 / 1GB ARM 机器到 48 核 96 线程 / 128GB x86_64 服务器都有显著的性能提升。
近期,腾讯云操作系统TencentOS团队提交了一组名为Swap Table的补丁系列,该系列在处理 4K 页面和 mTHP folios(多尺寸透明大页内存)的场景下,使系统在从基础顺序交换到重负载任务中的性能提升了约 20% 至 30%,这些补丁还清理并解决了 SWAP 子系统的各种历史问题。腾讯云TencentOS团队通过27 个补丁完成了架构重构,并获得社区高度认可,这27个补丁结果令人振奋,在Linux圈子引起了一圈波澜。
一、 SWAP是什么?
CPU 是计算机的大脑,CPU 内部的各种缓存是它的记忆,而内存就像草稿纸。然而内存价格一直很昂贵,而面对紧缺的内存,SWAP 就是一种可以“无中生有”变出更多可用内存的技术。可以理解为当你的桌面上放不下更多草稿纸时,SWAP 会将多余的纸张放到收纳架,也就是廉价或紧凑的存储设备上,从而做到草稿纸的动态随用随取。
SWAP简单来说是内存换入换出的机制,Linux 内核的 SWAP 子系统一直是其核心功能之一:Linux 内核作为支持超量提交内存的内核,复杂且高度优化。Linux 系统中的 SWAP 子系统就像内存的 “临时仓库”,主要作用是解决内存不足的问题,具体可以简单理解为:当电脑内存(RAM)不够用时,系统会把暂时不用的数据从内存 “搬” 到硬盘的一块专门区域(叫交换空间)存起来,腾出内存给急需的程序用。等需要这些数据时,再从硬盘 “搬” 回内存。
二、传统SWAP子系统机制存在的多项性能瓶颈
Linux 内核交换子系统自早期设计以来,传统SWAP机制存在多项性能瓶颈:如高延迟、低成功率,以及长时间运行后导致的页面碎片严重(频繁的换入换出导致交换空间被分割为许多不连续的小块,降低了空间利用率);锁竞争激烈(全局锁在高并发场景下成为性能瓶颈);内存开销大(维护映射关系需要额外内存,尤其在大型系统中更为明显);扩展性差(难以支持动态扩展的交换空间)。从而严重影响内存压缩与卸载的整体效率和效果。
问题在于,Linux 内核的 SWAP 系统长期有着极其复杂的历史包袱。从近 30 年前发展至今,Linux 的 SWAP 系统的一些设计早已不适合现代计算机结构。但 Linux 内核作为一个有着 4000 多万行代码的庞然大物,所有的设计决策都是牵一发而动全身,SWAP 系统作为 Linux 系统核心功能之一,针对其的优化更是难以展开。Linux 社区在过去多年中有了大量的关于 SWAP 系统重构的讨论,这些问题在Linux上游社区也已被关注多年,几乎有近十年历史,但始终但始终没有任何实质性进展和缺乏彻底的解决方案。
三、 腾讯云TencentOS团队提出 SWAP Table 新方向
腾讯云TencentOS内核研发团队决定对SWAP机制进行结构性重构,引入全新的SWAP Table架构。其初衷很明确:其设计初衷不仅在于优化内存占用,解决真实业务场景中暴露出的核心瓶颈,更在于全面提升内存管理效率。它支持动态的交换空间分配与扩展,展现出卓越的可扩展性。相较于现有的交换机制,Swap Table被视为一次具有里程碑意义的架构革新。
该方案从 SWAP 分配器的重构入手,从整体上重新思考了 SWAP 的设计理念和核心要点:
1. 首先重点对 SWAP 分配路径进行了完全重整,实现流水化,规范化分配过程,解决困扰业界多年的并发性能问题。将复杂度从 O(n)降低到O(1)。其核心的思想就是把以前从一个整体的设备感觉改成以簇为单位进行管理,这样一方面是避免了一个内存管理的碎片化。
2. 同时,针对原有Linux整个页面替换流程中的大锁机制进行了重构,基本上实现了无锁定效果,同时也显著减少锁竞争导致的性能卡点。
四、 SWAP Table重构
此次腾讯云提交的Swap Table补丁系列共涵盖了27项独立更改,这些更改完整地实现了开发者们长期讨论的技术方案。经过实测,无论是处理4K页面还是mTHP folios(多尺寸透明大页内存),Swap Table在多种场景下均展现出了显著的性能优势。
1. 关键效果:在从基础交换操作到高负载运行的转换过程中,其性能提升幅度达到了约20%至30%。不仅如此,Swap Table在内存使用效率上实现了优化,在空闲状态下,系统的内存使用明显下降,平均内存消耗保持稳定甚至有所减少。最新的交换表 (Swap Table),它们与 Linux 内核协同工作,全过程无锁,彻底摆脱SWAP设备大锁的瓶颈卡点,并发场景SWAP设备并发吞吐量提高 400%,换出碎片化率降低99%,换出成功率大幅提升。
2. 阻力与挑战:由于该方案几乎替代了原有的SWAP分配器,其合入上游的难度和影响都不小。最大的挑战和阻力来自技术本身。一方面,这项工作要求对现有SWAP机制有极深入的理解,才能精准识别优化点;另一方面,还需强大的验证能力支撑在高负载、复杂业务场景下测试效果。幸运的是,腾讯具备两大优势:一是有能力扎实推进这类底层技术优化,二是有海量实际业务可作为验证场景,从而确保方案不仅“能跑”,而且“能用好”。
3.意义与价值:值得一提的是,Swap Table补丁系列还对SWAP子系统中存在已久的历史问题进行了全面清理与修复,这一举措不仅提升了系统的稳定性与可靠性,也为未来的性能优化奠定了坚实基础。Swap Table重构带来的最大价值,是显著提升内存置换效率,从而使内存压缩和卸载真正成为高效可用的能力。这直接带动硬件资源利用率的提升,并最终在业务层面转化为实际的成本节约和系统稳定性的增强。希望这项底层革新,能为上层业务打下更强韧、更智能的基础。
目前,腾讯所贡献的Swap分配器已经作为默认分配器合入上游内核社区,而Swap Table也受到高度关注,处于合入过程中,未来将成为SWAP的一大革命创新,这也充分说明了TencentOS团队在技术能力和工程可行性上的扎实基础。
除了这次贡献以外,腾讯云操作系统内核团队近年来通过与社区的紧密合作,在memory cgroup(内存控制组)、页面与热度管理等方面持续进行技术创新,不断提升 Linux 内核的性能和稳定性,助力操作系统技术发展。