Enhancing Scalability of the Vmalloc Mechanism in the Linux Kernel
summary
Linux vmalloc moves from a single global lock to a distributed vmap node design with per-node red-black trees, lists and locks and a per-node cache pool for rapid reuse, capped at 128 nodes. On a 32‑core test locking drops from 93% to 16% (≈5× throughput, 12× vs legacy). Two remaining issues are fixed: local batching of atomic subtracts yields up to 99% faster purge on 72/192/448‑core machines, and coalesced TB flushes cut IPIs from thousands to one and time from ~23s to ~1s (≈96%). Kernel 6.9+ uses the new design.
AI-written summary · about
chapters (11)
- 0:00vlo scalability improvements
- 2:17Legacy vlo address space
- 5:12Redesign with vmap no
- 7:19Design principles of vmap no
- 10:10vlo free operation and cache
- 13:21Performance comparison
- 14:06Purging inefficiency and lockups
- 18:11Solution to purge inefficiency
- 20:22TLB flush with KASLR
- 23:15Solution for TLB flush
- 24:45vlo scalability summary
related talks
14mScaleSwap: A Scalable OS Swap System for All-Flash Swap Arrays
11mAdvanced Parallel Memory Virtualization
48mPersistent Memory Usage within Linux Environment
24mOptimizing Storage Performance for 4–5 Million IOPs
21mPreview: Operating Systems
51mIntroduction to Memory Management in Linux
29mA Hidden Cost of Virtualization When Scaling Multicore Applications
43mAddress Space Isolation for Enhanced Safety of the Linux Kernel
