LLFree: Scalable and Optionally-Persistent Page-Frame Allocation
summary
A new page-frame allocator LLFree implements a lock- and log-free design using a global bitfield (1 bit per 4 KiB), 2 MiB counters for 512-page groups, and per-CPU 64 MiB reservations to avoid sharing and fragmentation. Integrated into Linux as a replacement for the buddy allocator, it measures ~50 ns allocations and ~40 ns frees, runs up to 10x faster on highly parallel 4 KiB workloads and two orders of magnitude faster for 2 MiB pages, hides NVMe persistence on Intel Optane Gen2, and cuts page-movement compaction by 64% with only 0.03% metadata overhead.
AI-written summary · about
chapters (10)
- 0:00LLFree allocator intro
- 1:27Linux page allocator issues
- 6:02LLFree design principles
- 7:44LLFree architecture
- 11:58How LLFree allocates
- 13:25LLFree persistency & recovery
- 14:48LLFree performance
- 16:16LLFree vs Linux allocator
- 17:41LLFree fragmentation
- 18:46Summary & resources
related talks
47mLinux's Leap Beyond Fixed Pages
44mLarge Pages in Linux
05mSlab allocators
31mEnhancing Scalability of the Vmalloc Mechanism in the Linux Kernel
25mThe slab allocators of past, present, and future
19mIPLFS: Log-Structured File System without Garbage Collection
42mAllocators for Compressed Pages: In-depth Comparison with z3fold in Focus
30mFlexible Paging in Linux: Per-process Page Size
