blob: ceead68c2df744818021c8dc40b4efc7d4065bb9 [file] [log] [blame]
Mike Rapoport3a3f7e22018-04-18 11:07:48 +03001=================
2Memory Management
3=================
4
5Linux memory management subsystem is responsible, as the name implies,
6for managing the memory in the system. This includes implemnetation of
7virtual memory and demand paging, memory allocation both for kernel
8internal structures and user space programms, mapping of files into
9processes address space and many other cool things.
10
11Linux memory management is a complex system with many configurable
12settings. Most of these settings are available via ``/proc``
13filesystem and can be quired and adjusted using ``sysctl``. These APIs
14are described in Documentation/sysctl/vm.txt and in `man 5 proc`_.
15
16.. _man 5 proc: http://man7.org/linux/man-pages/man5/proc.5.html
17
Mike Rapoportf4629512018-05-29 14:37:25 +030018Linux memory management has its own jargon and if you are not yet
19familiar with it, consider reading
20:ref:`Documentation/admin-guide/mm/concepts.rst <mm_concepts>`.
21
Mike Rapoport3a3f7e22018-04-18 11:07:48 +030022Here we document in detail how to interact with various mechanisms in
23the Linux memory management.
Mike Rapoport1ad13352018-04-18 11:07:49 +030024
25.. toctree::
26 :maxdepth: 1
27
Mike Rapoportf4629512018-05-29 14:37:25 +030028 concepts
Mike Rapoport1ad13352018-04-18 11:07:49 +030029 hugetlbpage
30 idle_page_tracking
Mike Rapoportc9161082018-04-24 09:40:28 +030031 ksm
Mike Rapoport3ecf53e2018-05-08 10:02:10 +030032 numa_memory_policy
Mike Rapoport1ad13352018-04-18 11:07:49 +030033 pagemap
34 soft-dirty
Mike Rapoport45c9a742018-05-14 11:13:40 +030035 transhuge
Mike Rapoport1ad13352018-04-18 11:07:49 +030036 userfaultfd