Mike Rapoport | 3a3f7e2 | 2018-04-18 11:07:48 +0300 | [diff] [blame] | 1 | ================= |
| 2 | Memory Management |
| 3 | ================= |
| 4 | |
| 5 | Linux memory management subsystem is responsible, as the name implies, |
Andrew Klychkov | 751d5b2 | 2020-12-04 10:28:48 +0300 | [diff] [blame] | 6 | for managing the memory in the system. This includes implementation of |
Mike Rapoport | 3a3f7e2 | 2018-04-18 11:07:48 +0300 | [diff] [blame] | 7 | virtual memory and demand paging, memory allocation both for kernel |
Andrew Klychkov | 751d5b2 | 2020-12-04 10:28:48 +0300 | [diff] [blame] | 8 | internal structures and user space programs, mapping of files into |
Mike Rapoport | 3a3f7e2 | 2018-04-18 11:07:48 +0300 | [diff] [blame] | 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 |
Mauro Carvalho Chehab | 5704324 | 2019-04-22 16:48:00 -0300 | [diff] [blame] | 14 | are described in Documentation/admin-guide/sysctl/vm.rst and in `man 5 proc`_. |
Mike Rapoport | 3a3f7e2 | 2018-04-18 11:07:48 +0300 | [diff] [blame] | 15 | |
| 16 | .. _man 5 proc: http://man7.org/linux/man-pages/man5/proc.5.html |
| 17 | |
Mike Rapoport | f462951 | 2018-05-29 14:37:25 +0300 | [diff] [blame] | 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 | |
Mike Rapoport | 3a3f7e2 | 2018-04-18 11:07:48 +0300 | [diff] [blame] | 22 | Here we document in detail how to interact with various mechanisms in |
| 23 | the Linux memory management. |
Mike Rapoport | 1ad1335 | 2018-04-18 11:07:49 +0300 | [diff] [blame] | 24 | |
| 25 | .. toctree:: |
| 26 | :maxdepth: 1 |
| 27 | |
Mike Rapoport | f462951 | 2018-05-29 14:37:25 +0300 | [diff] [blame] | 28 | concepts |
Mauro Carvalho Chehab | 4f4cfa6 | 2019-06-27 14:56:51 -0300 | [diff] [blame] | 29 | cma_debugfs |
SeongJae Park | c4ba601 | 2021-09-07 19:57:05 -0700 | [diff] [blame] | 30 | damon/index |
Mike Rapoport | 1ad1335 | 2018-04-18 11:07:49 +0300 | [diff] [blame] | 31 | hugetlbpage |
| 32 | idle_page_tracking |
Mike Rapoport | c916108 | 2018-04-24 09:40:28 +0300 | [diff] [blame] | 33 | ksm |
Mike Rapoport | 6bf5399 | 2018-10-05 01:11:00 +0300 | [diff] [blame] | 34 | memory-hotplug |
Daniel W. S. Almeida | 2b7295c | 2020-07-18 13:50:55 -0300 | [diff] [blame] | 35 | nommu-mmap |
Mike Rapoport | 3ecf53e | 2018-05-08 10:02:10 +0300 | [diff] [blame] | 36 | numa_memory_policy |
Jonathan Corbet | 8867f61 | 2019-05-22 13:35:13 -0600 | [diff] [blame] | 37 | numaperf |
Mike Rapoport | 1ad1335 | 2018-04-18 11:07:49 +0300 | [diff] [blame] | 38 | pagemap |
| 39 | soft-dirty |
Mike Rapoport | 45c9a74 | 2018-05-14 11:13:40 +0300 | [diff] [blame] | 40 | transhuge |
Mike Rapoport | 1ad1335 | 2018-04-18 11:07:49 +0300 | [diff] [blame] | 41 | userfaultfd |