Flexible Paging in Linux: Per-process Page Size
summary
Design separates kernel and user page-size ABIs so processes can run with 64K pages implemented as 16 contiguous 4K pages while the kernel stays at 4K; mmap and mmap alignment checks change to the process page size, a personality flag selects ABI, and file-backed pages keep 4K pagecache unless a file is memory‑mapped (then pagecache is evicted and replaced with 64K chunks). Hardware page tables use a double-fault mechanism to mirror 4K software folios into a 64K native mapping. Prototype patches exist but upstream flags code churn, fragmentation and compaction issues so work is deferred.
AI-written summary · about
chapters (9)
- 0:00Per-process page size intro
- 3:1164K page size not default
- 7:27Per-process page size concept
- 10:19Personality and setup
- 13:32File memory with page sizes
- 16:414K to 64K translation
- 20:57Upstream kernel challenges
- 24:12Memory fragmentation issues
- 27:25Summary and Q&A
related talks
44mLarge Pages in Linux
47mLinux's Leap Beyond Fixed Pages
39mMM101: Introduction to Linux Memory Management
12mPageFlex: Flexible and Efficient User-space Delegation of Linux Paging Policies...
30mA move_pages() equivalent for physical memory
51mIntroduction to Memory Management in Linux
25mLarge Virtual Adress support in ARM64 kernel
59mDemystifying Process Address Space: Heap, Stack, and Beyond
