皇上,还记得我吗?我就是1999年那个Linux伊甸园啊-----24小时滚动更新开源资讯,全年无休!

Linux 7.0 MM 变更带来一些非常不错的性能优化

Andrew Morton 今天早些时候发送了所有的”MM”补丁,并且它们已经被 Linus Torvalds 合并到 Linux 7.0 中。以下是这一周期中引起我注意的一些补丁的概览,一如既往,它们主要围绕 Linux 内核的性能改进。

Linux 7.0 MM 变更带来一些非常不错的性能优化

有一个补丁系列引入了 Zram 的压缩数据写回支持。这个压缩数据写回处理应该有助于节省 CPU 功耗并提高电源效率,尤其是在笔记本电脑上。现在,次优的无压缩写回正在使用更优化的压缩数据写回。

本轮合并的另一个有趣的 MM 补丁系列是清除用于大页面的连续页范围。这可以显著提升 2MB 页面以及更大页面大小的按需分页性能。清除连续页范围用于大页面的这一优化显示出非常不错的效果。Oracle 工程师 Ankur Arora 在补丁系列中详细解释:

该系列通过两种方式改进了当前的离散清除方法:

– 以连续方式清除页面。
– 通过 clear_pages() 以批量方式清除,无论在何处暴露。

第一种方式很有用,因为它允许我们更好地利用硬件预取器。

第二个改进,使处理器能够展示真实的范围。在特定指令支持的情况下(例如 x86 上的字符串指令;arm64 上的”mops”等),处理器可以基于此进行优化,因为此时它看到的是一个更大的操作单元,而不是一系列 8 字节的存储或一系列 4KB 的页面。

例如,AMD Zen uarchs(用于大于 LLC 大小的范围)切换到一种模式,开始省略缓存行分配。这不仅因为它能提高带宽,还因为现在缓存不会清除有用的缓存行并用零替换它们。

The benchmark results speak for itself:
基准测试结果自己就说明了问题:

Linux 7.0 MM 变更带来一些非常不错的性能优化

另外,Linux 7.0 的 MM 更新中另一个优化部分是加速巨大的页块分配。通过避免不必要的工作,这大大加快了巨大的页块分配速度。以 120×1G 页块为例,分配时间从 3.605 秒减少到仅 0.431 秒。

还有更多有趣的优化工作,包括统一了 swapin 的使用并移除了一些性能不佳的旧 swap 代码。这些清理和改进使得 Redis 基准测试速度提升了 20%:

Linux 7.0 MM 变更带来一些非常不错的性能优化

在这次合并窗口中,MM 代码中最后引起我注意的补丁是为更多 64 位架构启用 PT_RECLAIM,包括 Alpha、LoongArch、MIPS、Parisc 和 UM。

MM 活动一如既往地很多。Linux 7.0 周期的完整合并 MM 补丁列表可以通过拉取请求找到。

转自  Linux 7.0 MM Changes Bring Some Very Nice Performance Optimizations – Phoronix