Kernel allocators for tiny compressed objects
Standard Linux kernel allocators can hardly get you anything sized less than a page -- no matter how small the object you want to store is. That will be suboptimal for any module trying to tightly pack small objects, with the compressed memory allocators being first on the list. Those, having the aim to optimize swapping, need a special allocator capable of taking advantage of compressing objects into smaller ones.
It turns out to be a non-trivial task to create such an allocator, which will also be lightweight enough and sustainable, and all the three compressed memory allocators present in the Linux kernel nowadays address these challenges differently.
This talk will briefly cover all three, mainly focusing on z3fold -- the new and promising one. It will feature performance and compression ratio comparisons for the allocators mentioned, as well as latency characteristics for all three. It will then focus on the ongoing z3fold streamlining work, such as evaluating lock-less lists, per-CPU lists, wider use of atomic operations, bit read-write locks and implementing support for movable z3fold pages.