Memory Management Documentation¶
This is a guide to understanding the memory management subsystem of Linux. If you are looking for advice on simply allocating memory, see the Memory Allocation Guide. For controlling and tuning guides, see the admin guide.
Note
Unfortunately, parts of this guide are still incomplete or missing. While we appreciate contributions, documentation in this area is hard to get right and requires a lot of attention to detail. New contributors should reach out to the relevant maintainers early.
This guide is expected to reflect reality, which requires contributors to have a detailed understanding. Documentation generated with LLMs by contributors unfamiliar with these details shifts the real work onto reviewers, which is why such contributions will be rejected without further comment.
Unsorted Documentation¶
This is a collection of unsorted documents about the Linux memory management (MM) subsystem internals with different level of details ranging from notes and mailing list responses for elaborating descriptions of data structures and algorithms. It should all be integrated nicely into the above structured documentation, or deleted if it has served its purpose.
- Active MM
- MEMORY ALLOCATION PROFILING
- Architecture Page Table Helpers
- Memory Balancing
- DAMON: Data Access MONitoring and Access-aware System Operations
- Free Page Reporting
- Heterogeneous Memory Management (HMM)
- hwpoison
- Hugetlbfs Reservation
- Kernel Samepage Merging
- Physical Memory Model
- Memfd Preservation via LUO
- When do you need to notify inside page table lock ?
- Multi-Gen LRU
- What is NUMA?
- Overcommit Accounting
- Page migration
- Page fragments
- page owner: Tracking about who allocated each page
- Page Table Check
- remap_file_pages() system call
- Split page table lock
- Transparent Hugepage Support
- Unevictable LRU Infrastructure
- Virtually Mapped Kernel Stack Support
- A vmemmap diet for HugeTLB and Device DAX
- zsmalloc