Slab 内存分配器是 Linux 内核中用于管理小块内存对象的核心机制。slab 内存分配器功能更新已合并到 Linux 7.0 内核中,最值得注意的是,最近引入的 Sheaves 功能的使用范围得到了扩展。
🔹 Sheaves 已合并回 Linux 6.19 版本,它最初是一个可选的、基于每 CPU 数组的缓存层,有可能进一步提升 Linux 的性能。
🔹 如今在 Linux 7.0 版本中, Sheaves 功能正扮演着更为重要的角色。
🔹 Sheaves 正在替换 Linux 内核中更多的缓存代码,希望这一新实现能进一步提升性能。
🔹 将其应用于所有缓存,并移除了之前的 CPU(部分)slab 缓存机制。除了能降低锁开销,且在释放时更有可能走快速路径外,这还移除了与 CPU slab 无锁快速路径相关的相当复杂的代码,以及其在 PREEMPT_RT 或 kmalloc_nolock() 方面的所有复杂问题。
🔹对于远程 NUMA 对象的释放,在大多数情况下无需节点 list_lock 即可将对象从 sheaves 刷新到 slabs。
🔹 合并 slab 代码还尽可能消除了 slabobj_ext 元数据开销,通过重用 slab 中的剩余空间或每个对象的填充来提高效率。
💭 本次 Linux 7.0 对 Sheaves 架构的大规模应用为内核性能的进一步跃升打下了基础。
#内存管理 #Linux内核 #Linux