Commit 1ad1335d authored by Mike Rapoport's avatar Mike Rapoport Committed by Jonathan Corbet

docs/admin-guide/mm: start moving here files from Documentation/vm

Several documents in Documentation/vm fit quite well into the "admin/user
guide" category. The documents that don't overload the reader with lots of
implementation details and provide coherent description of certain feature
can be moved to Documentation/admin-guide/mm.
Signed-off-by: default avatarMike Rapoport <rppt@linux.vnet.ibm.com>
Signed-off-by: default avatarJonathan Corbet <corbet@lwn.net>
parent 3a3f7e26
...@@ -90,4 +90,4 @@ Date: December 2009 ...@@ -90,4 +90,4 @@ Date: December 2009
Contact: Lee Schermerhorn <lee.schermerhorn@hp.com> Contact: Lee Schermerhorn <lee.schermerhorn@hp.com>
Description: Description:
The node's huge page size control/query attributes. The node's huge page size control/query attributes.
See Documentation/vm/hugetlbpage.rst See Documentation/admin-guide/mm/hugetlbpage.rst
\ No newline at end of file \ No newline at end of file
...@@ -12,4 +12,4 @@ Description: ...@@ -12,4 +12,4 @@ Description:
free_hugepages free_hugepages
surplus_hugepages surplus_hugepages
resv_hugepages resv_hugepages
See Documentation/vm/hugetlbpage.rst for details. See Documentation/admin-guide/mm/hugetlbpage.rst for details.
...@@ -65,7 +65,7 @@ workload one should: ...@@ -65,7 +65,7 @@ workload one should:
are not reclaimable, he or she can filter them out using are not reclaimable, he or she can filter them out using
``/proc/kpageflags``. ``/proc/kpageflags``.
See Documentation/vm/pagemap.rst for more information about See Documentation/admin-guide/mm/pagemap.rst for more information about
``/proc/pid/pagemap``, ``/proc/kpageflags``, and ``/proc/kpagecgroup``. ``/proc/pid/pagemap``, ``/proc/kpageflags``, and ``/proc/kpagecgroup``.
.. _impl_details: .. _impl_details:
......
...@@ -17,3 +17,12 @@ are described in Documentation/sysctl/vm.txt and in `man 5 proc`_. ...@@ -17,3 +17,12 @@ are described in Documentation/sysctl/vm.txt and in `man 5 proc`_.
Here we document in detail how to interact with various mechanisms in Here we document in detail how to interact with various mechanisms in
the Linux memory management. the Linux memory management.
.. toctree::
:maxdepth: 1
hugetlbpage
idle_page_tracking
pagemap
soft-dirty
userfaultfd
...@@ -18,7 +18,7 @@ There are four components to pagemap: ...@@ -18,7 +18,7 @@ There are four components to pagemap:
* Bits 0-54 page frame number (PFN) if present * Bits 0-54 page frame number (PFN) if present
* Bits 0-4 swap type if swapped * Bits 0-4 swap type if swapped
* Bits 5-54 swap offset if swapped * Bits 5-54 swap offset if swapped
* Bit 55 pte is soft-dirty (see Documentation/vm/soft-dirty.rst) * Bit 55 pte is soft-dirty (see Documentation/admin-guide/mm/soft-dirty.rst)
* Bit 56 page exclusively mapped (since 4.2) * Bit 56 page exclusively mapped (since 4.2)
* Bits 57-60 zero * Bits 57-60 zero
* Bit 61 page is file-page or shared-anon (since 3.5) * Bit 61 page is file-page or shared-anon (since 3.5)
...@@ -97,7 +97,7 @@ Short descriptions to the page flags ...@@ -97,7 +97,7 @@ Short descriptions to the page flags
A compound page with order N consists of 2^N physically contiguous pages. A compound page with order N consists of 2^N physically contiguous pages.
A compound page with order 2 takes the form of "HTTT", where H donates its A compound page with order 2 takes the form of "HTTT", where H donates its
head page and T donates its tail page(s). The major consumers of compound head page and T donates its tail page(s). The major consumers of compound
pages are hugeTLB pages (Documentation/vm/hugetlbpage.rst), the SLUB etc. pages are hugeTLB pages (Documentation/admin-guide/mm/hugetlbpage.rst), the SLUB etc.
memory allocators and various device drivers. However in this interface, memory allocators and various device drivers. However in this interface,
only huge/giga pages are made visible to end users. only huge/giga pages are made visible to end users.
16 - COMPOUND_TAIL 16 - COMPOUND_TAIL
...@@ -118,7 +118,7 @@ Short descriptions to the page flags ...@@ -118,7 +118,7 @@ Short descriptions to the page flags
zero page for pfn_zero or huge_zero page zero page for pfn_zero or huge_zero page
25 - IDLE 25 - IDLE
page has not been accessed since it was marked idle (see page has not been accessed since it was marked idle (see
Documentation/vm/idle_page_tracking.rst). Note that this flag may be Documentation/admin-guide/mm/idle_page_tracking.rst). Note that this flag may be
stale in case the page was accessed via a PTE. To make sure the flag stale in case the page was accessed via a PTE. To make sure the flag
is up-to-date one has to read ``/sys/kernel/mm/page_idle/bitmap`` first. is up-to-date one has to read ``/sys/kernel/mm/page_idle/bitmap`` first.
......
...@@ -515,7 +515,8 @@ guarantees: ...@@ -515,7 +515,8 @@ guarantees:
The /proc/PID/clear_refs is used to reset the PG_Referenced and ACCESSED/YOUNG The /proc/PID/clear_refs is used to reset the PG_Referenced and ACCESSED/YOUNG
bits on both physical and virtual pages associated with a process, and the bits on both physical and virtual pages associated with a process, and the
soft-dirty bit on pte (see Documentation/vm/soft-dirty.rst for details). soft-dirty bit on pte (see Documentation/admin-guide/mm/soft-dirty.rst
for details).
To clear the bits for all the pages associated with the process To clear the bits for all the pages associated with the process
> echo 1 > /proc/PID/clear_refs > echo 1 > /proc/PID/clear_refs
...@@ -536,7 +537,8 @@ Any other value written to /proc/PID/clear_refs will have no effect. ...@@ -536,7 +537,8 @@ Any other value written to /proc/PID/clear_refs will have no effect.
The /proc/pid/pagemap gives the PFN, which can be used to find the pageflags The /proc/pid/pagemap gives the PFN, which can be used to find the pageflags
using /proc/kpageflags and number of times a page is mapped using using /proc/kpageflags and number of times a page is mapped using
/proc/kpagecount. For detailed explanation, see Documentation/vm/pagemap.rst. /proc/kpagecount. For detailed explanation, see
Documentation/admin-guide/mm/pagemap.rst.
The /proc/pid/numa_maps is an extension based on maps, showing the memory The /proc/pid/numa_maps is an extension based on maps, showing the memory
locality and binding policy, as well as the memory usage (in pages) of locality and binding policy, as well as the memory usage (in pages) of
......
...@@ -515,7 +515,7 @@ nr_hugepages ...@@ -515,7 +515,7 @@ nr_hugepages
Change the minimum size of the hugepage pool. Change the minimum size of the hugepage pool.
See Documentation/vm/hugetlbpage.rst See Documentation/admin-guide/mm/hugetlbpage.rst
============================================================== ==============================================================
...@@ -524,7 +524,7 @@ nr_overcommit_hugepages ...@@ -524,7 +524,7 @@ nr_overcommit_hugepages
Change the maximum size of the hugepage pool. The maximum is Change the maximum size of the hugepage pool. The maximum is
nr_hugepages + nr_overcommit_hugepages. nr_hugepages + nr_overcommit_hugepages.
See Documentation/vm/hugetlbpage.rst See Documentation/admin-guide/mm/hugetlbpage.rst
============================================================== ==============================================================
......
...@@ -12,14 +12,10 @@ highmem.rst ...@@ -12,14 +12,10 @@ highmem.rst
- Outline of highmem and common issues. - Outline of highmem and common issues.
hmm.rst hmm.rst
- Documentation of heterogeneous memory management - Documentation of heterogeneous memory management
hugetlbpage.rst
- a brief summary of hugetlbpage support in the Linux kernel.
hugetlbfs_reserv.rst hugetlbfs_reserv.rst
- A brief overview of hugetlbfs reservation design/implementation. - A brief overview of hugetlbfs reservation design/implementation.
hwpoison.rst hwpoison.rst
- explains what hwpoison is - explains what hwpoison is
idle_page_tracking.rst
- description of the idle page tracking feature.
ksm.rst ksm.rst
- how to use the Kernel Samepage Merging feature. - how to use the Kernel Samepage Merging feature.
mmu_notifier.rst mmu_notifier.rst
...@@ -34,16 +30,12 @@ page_frags.rst ...@@ -34,16 +30,12 @@ page_frags.rst
- description of page fragments allocator - description of page fragments allocator
page_migration.rst page_migration.rst
- description of page migration in NUMA systems. - description of page migration in NUMA systems.
pagemap.rst
- pagemap, from the userspace perspective
page_owner.rst page_owner.rst
- tracking about who allocated each page - tracking about who allocated each page
remap_file_pages.rst remap_file_pages.rst
- a note about remap_file_pages() system call - a note about remap_file_pages() system call
slub.rst slub.rst
- a short users guide for SLUB. - a short users guide for SLUB.
soft-dirty.rst
- short explanation for soft-dirty PTEs
split_page_table_lock.rst split_page_table_lock.rst
- Separate per-table lock to improve scalability of the old page_table_lock. - Separate per-table lock to improve scalability of the old page_table_lock.
swap_numa.rst swap_numa.rst
...@@ -52,8 +44,6 @@ transhuge.rst ...@@ -52,8 +44,6 @@ transhuge.rst
- Transparent Hugepage Support, alternative way of using hugepages. - Transparent Hugepage Support, alternative way of using hugepages.
unevictable-lru.rst unevictable-lru.rst
- Unevictable LRU infrastructure - Unevictable LRU infrastructure
userfaultfd.rst
- description of userfaultfd system call
z3fold.txt z3fold.txt
- outline of z3fold allocator for storing compressed pages - outline of z3fold allocator for storing compressed pages
zsmalloc.rst zsmalloc.rst
......
...@@ -155,7 +155,7 @@ Testing ...@@ -155,7 +155,7 @@ Testing
value). This allows stress testing of many kinds of value). This allows stress testing of many kinds of
pages. The page_flags are the same as in /proc/kpageflags. The pages. The page_flags are the same as in /proc/kpageflags. The
flag bits are defined in include/linux/kernel-page-flags.h and flag bits are defined in include/linux/kernel-page-flags.h and
documented in Documentation/vm/pagemap.rst documented in Documentation/admin-guide/mm/pagemap.rst
* Architecture specific MCE injector * Architecture specific MCE injector
......
...@@ -13,15 +13,10 @@ various features of the Linux memory management ...@@ -13,15 +13,10 @@ various features of the Linux memory management
.. toctree:: .. toctree::
:maxdepth: 1 :maxdepth: 1
hugetlbpage
idle_page_tracking
ksm ksm
numa_memory_policy numa_memory_policy
pagemap
transhuge transhuge
soft-dirty
swap_numa swap_numa
userfaultfd
zswap zswap
Kernel developers MM documentation Kernel developers MM documentation
......
...@@ -196,7 +196,7 @@ config HUGETLBFS ...@@ -196,7 +196,7 @@ config HUGETLBFS
help help
hugetlbfs is a filesystem backing for HugeTLB pages, based on hugetlbfs is a filesystem backing for HugeTLB pages, based on
ramfs. For architectures that support it, say Y here and read ramfs. For architectures that support it, say Y here and read
<file:Documentation/vm/hugetlbpage.rst> for details. <file:Documentation/admin-guide/mm/hugetlbpage.rst> for details.
If unsure, say N. If unsure, say N.
......
...@@ -937,7 +937,7 @@ static inline void clear_soft_dirty(struct vm_area_struct *vma, ...@@ -937,7 +937,7 @@ static inline void clear_soft_dirty(struct vm_area_struct *vma,
/* /*
* The soft-dirty tracker uses #PF-s to catch writes * The soft-dirty tracker uses #PF-s to catch writes
* to pages, so write-protect the pte as well. See the * to pages, so write-protect the pte as well. See the
* Documentation/vm/soft-dirty.rst for full description * Documentation/admin-guide/mm/soft-dirty.rst for full description
* of how soft-dirty works. * of how soft-dirty works.
*/ */
pte_t ptent = *pte; pte_t ptent = *pte;
...@@ -1417,7 +1417,7 @@ static int pagemap_hugetlb_range(pte_t *ptep, unsigned long hmask, ...@@ -1417,7 +1417,7 @@ static int pagemap_hugetlb_range(pte_t *ptep, unsigned long hmask,
* Bits 0-54 page frame number (PFN) if present * Bits 0-54 page frame number (PFN) if present
* Bits 0-4 swap type if swapped * Bits 0-4 swap type if swapped
* Bits 5-54 swap offset if swapped * Bits 5-54 swap offset if swapped
* Bit 55 pte is soft-dirty (see Documentation/vm/soft-dirty.rst) * Bit 55 pte is soft-dirty (see Documentation/admin-guide/mm/soft-dirty.rst)
* Bit 56 page exclusively mapped * Bit 56 page exclusively mapped
* Bits 57-60 zero * Bits 57-60 zero
* Bit 61 page is file-page or shared-anon * Bit 61 page is file-page or shared-anon
......
...@@ -530,7 +530,7 @@ config MEM_SOFT_DIRTY ...@@ -530,7 +530,7 @@ config MEM_SOFT_DIRTY
into a page just as regular dirty bit, but unlike the latter into a page just as regular dirty bit, but unlike the latter
it can be cleared by hands. it can be cleared by hands.
See Documentation/vm/soft-dirty.rst for more details. See Documentation/admin-guide/mm/soft-dirty.rst for more details.
config ZSWAP config ZSWAP
bool "Compressed cache for swap pages (EXPERIMENTAL)" bool "Compressed cache for swap pages (EXPERIMENTAL)"
...@@ -656,7 +656,8 @@ config IDLE_PAGE_TRACKING ...@@ -656,7 +656,8 @@ config IDLE_PAGE_TRACKING
be useful to tune memory cgroup limits and/or for job placement be useful to tune memory cgroup limits and/or for job placement
within a compute cluster. within a compute cluster.
See Documentation/vm/idle_page_tracking.rst for more details. See Documentation/admin-guide/mm/idle_page_tracking.rst for
more details.
# arch_add_memory() comprehends device memory # arch_add_memory() comprehends device memory
config ARCH_HAS_ZONE_DEVICE config ARCH_HAS_ZONE_DEVICE
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment