Linux memory management subsystem is responsible, as the name implies, for managing the memory in the system. This includes implementation of virtual memory and demand paging, memory allocation both for kernel internal structures and user space programs, mapping of files into processes address space and many other cool things.
Linux memory management is a complex system with many configurable
settings. Most of these settings are available via
filesystem and can be quired and adjusted using
sysctl. These APIs
are described in Documentation for /proc/sys/vm/ and in man 5 proc.
Linux memory management has its own jargon and if you are not yet familiar with it, consider reading Concepts overview.
Here we document in detail how to interact with various mechanisms in the Linux memory management.
- Concepts overview
- CMA Debugfs Interface
- DAMON: Data Access MONitor
- HugeTLB Pages
- Idle Page Tracking
- Kernel Samepage Merging
- Memory Hot(Un)Plug
- Multi-Gen LRU
- No-MMU memory mapping support
- NUMA Memory Policy
- NUMA Memory Performance
- Examining Process Page Tables
- Shrinker Debugfs Interface
- Soft-Dirty PTEs
- Automatically bind swap device to numa node
- Transparent Hugepage Support