在 Linux 6.16 合并窗口在短短一个月内开放之前,新的 Zblock 分配器被排入 Andrew Morton 的内存管理材料的“MM”树中,可能注定要进入下一个内核合并窗口。Zblock 作为压缩的 slab 内存分配器显示出很大的潜力。
Konsulko AB 的 Vitaly Wool 一直在研究这个用于存储压缩页面的专用分配器。Zblock 旨在允许密集排列各种大小的对象,同时享受低内部碎片。Zblock 已被证明能够提供比 Z3fold 和 Zbud 等产品“高得多”的压缩比。Zblock 在平均性能和最差执行时间方面也优于 Zsmalloc。文档指出,在 Raspberry Pi 5 上测试 Zblock 的结果比 Zsmalloc 高出约 5~10% 的 bogo ops/s。

Z3fold 和 Zbud 已从主线内核中删除,因为它们已经被弃用。Zblock 现在正在寻求加入与 Zsmalloc 竞争的行列。
Vitaly Wool 在 mm.git 中对 Zblock 分配器补丁进行了评论:
“zblock 是一个用于存储压缩页面的特殊用途分配器。它为每个块存储相同大小的对象的整数个。这些块由几个物理页面 (2**n,即 1/2/4/8) 组成。
使用 zblock,可以密集排列各种大小的对象,从而实现低内部碎片化。此外,此分配器尝试填充不完整的块而不是添加新的块,在许多情况下提供与 zmalloc 相当的压缩率。
在大多数情况下,zblock 在平均性能和最差执行时间方面也优于 zsmalloc,因此可以更好地响应时间和整个系统的实时特性。
zblock 目前不支持高内存和页面迁移。
测试结果(zstd 压缩器,8 核 Ryzen 9 VM,make bzImage):
– zblock:
真实 6m52.621s
用户 33m41.771s
sys 6m28.825s
Zswap:162328 kB
Zswapped:754468 kB
zswpin 93851
zswpout 542481
zswpwb 935
– zsmalloc:
真实 7m4.355s
用户 34m37.538s
sys 6m22.086s
zswpin 101243
zswpout 448217
zswpwb 640
Zswap: 175704 kB
Zswapped: 778692 kB”
因此,如果一切顺利,Zblock 可以作为即将到来的 Linux 6.16 周期的新 MM 材料的一部分提交。
转自 Zblock Compressed Slab Memory Allocator Looks Like It Could Be Coming In Linux 6.16 – Phoronix
Linuxeden开源社区