b.liu | e958203 | 2025-04-17 19:18:16 +0800 | [diff] [blame^] | 1 | ================= |
| 2 | Memory Management |
| 3 | ================= |
| 4 | |
| 5 | Linux memory management subsystem is responsible, as the name implies, |
| 6 | for managing the memory in the system. This includes implemnetation of |
| 7 | virtual memory and demand paging, memory allocation both for kernel |
| 8 | internal structures and user space programms, mapping of files into |
| 9 | processes address space and many other cool things. |
| 10 | |
| 11 | Linux memory management is a complex system with many configurable |
| 12 | settings. Most of these settings are available via ``/proc`` |
| 13 | filesystem and can be quired and adjusted using ``sysctl``. These APIs |
| 14 | are described in Documentation/admin-guide/sysctl/vm.rst and in `man 5 proc`_. |
| 15 | |
| 16 | .. _man 5 proc: http://man7.org/linux/man-pages/man5/proc.5.html |
| 17 | |
| 18 | Linux memory management has its own jargon and if you are not yet |
| 19 | familiar with it, consider reading |
| 20 | :ref:`Documentation/admin-guide/mm/concepts.rst <mm_concepts>`. |
| 21 | |
| 22 | Here we document in detail how to interact with various mechanisms in |
| 23 | the Linux memory management. |
| 24 | |
| 25 | .. toctree:: |
| 26 | :maxdepth: 1 |
| 27 | |
| 28 | concepts |
| 29 | cma_debugfs |
| 30 | hugetlbpage |
| 31 | idle_page_tracking |
| 32 | ksm |
| 33 | memory-hotplug |
| 34 | numa_memory_policy |
| 35 | numaperf |
| 36 | pagemap |
| 37 | soft-dirty |
| 38 | transhuge |
| 39 | userfaultfd |