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

Linux 7.0 旨在用 Sheaves 替换更多缓存代码,以”希望”提升性能

去年引入主线 Linux 内核的”sheaves”作为一种可选的基于 CPU 数组的缓存层。Sheaves 在 Linux 6.18 中重新合并,虽然它最初是一个可选的缓存层,但计划用 sheaves 替换更多的 CPU slabs/缓存。计划在即将到来的 Linux 7.0 周期中用 sheaves 替换更多的这些缓存。

本周已将替换 CPU 部分 slabs 为 sheaves 的补丁提交到 slab.git 的 slab/for-next Git 分支。

SUSE 工程师和 SLAB 维护者 Vlastimil Babka 将近期补丁系列中的工作总结为:

“Percpu sheaves 缓存最初是作为可选功能引入的,但最终目标是将其应用于所有缓存。这是下一步,将启用 Sheaves 用于所有缓存(除两个引导缓存外),然后移除 per cpu(部分)slabs 和大量相关代码。

除了(希望)提升性能外,这还移除了与无锁快速路径(使用 this_cpu_try_cmpxchg128/64)相关的较为复杂的代码及其与 PREEMPT_RT 或 kmalloc_nolock() 的复杂性。

使用 try_cmpxchg128/64 的无锁 slab freelist+计数器更新操作仍然存在,这对于释放远程 NUMA 对象而不重复 SLUB 的”异类”数组刷新至关重要,并允许在几乎无需节点 list_lock 的情况下将 sheaves 中的对象刷新到 slabs。

发送此 v4 版本,因为由于审查和-next 曝光,分支中积累了各种更改(见下表)。感谢所有审查!

之前使用 Per-CPU 部分缓存来加速对象分配和释放,但现在已被 sheaves 取代。

性能有望得到改善,但没有具体数字来量化这种扩展 sheaves 使用可能带来的性能影响。

Linux 7.0 旨在用 Sheaves 替换更多缓存代码,以"希望"提升性能

这些补丁最初在 slab/for-7.0/sheaves 中预览,现在已提交到 slab/for-next,这项工作计划在 2 月份作为 Linux 6.20~7.0 周期的一部分提交。如果没有最后时刻出现的问题,我们将在下一个主线内核版本中看到这种扩展 sheaves 的使用。

转自  Linux 7.0 Aims To Replace More Caching Code With Sheaves For “Hopefully” Improved Performance – Phoronix