linux/Documentation/admin-guide/mm
Tiberiu A Georgescu cbbb69d3c4 Documentation: update pagemap with shmem exceptions
This patch follows the discussions on previous documentation patch
threads [1][2].  It presents the exception case of shared memory
management from the pagemap's point of view.  It briefly describes what
is missing, why it is missing and alternatives to the pagemap for page
info retrieval in user space.

In short, the kernel does not keep track of PTEs for swapped out shared
pages within the processes that references them.  Thus, the
proc/pid/pagemap tool cannot print the swap destination of the shared
memory pages, instead setting the pagemap entry to zero for both
non-allocated and swapped out pages.  This can create confusion for
users who need information on swapped out pages.

The reasons why maintaining the PTEs of all swapped out shared pages
among all processes while maintaining similar performance is not a
trivial task, or a desirable change, have been discussed extensively
[1][3][4][5].  There are also arguments for why this arguably missing
information should eventually be exposed to the user in either a future
pagemap patch, or by an alternative tool.

[1]: https://marc.info/?m=162878395426774
[2]: https://lore.kernel.org/lkml/20210920164931.175411-1-tiberiu.georgescu@nutanix.com/
[3]: https://lore.kernel.org/lkml/20210730160826.63785-1-tiberiu.georgescu@nutanix.com/
[4]: https://lore.kernel.org/lkml/20210807032521.7591-1-peterx@redhat.com/
[5]: https://lore.kernel.org/lkml/20210715201651.212134-1-peterx@redhat.com/

Mention the current missing information in the pagemap and alternatives
on how to retrieve it, in case someone stumbles upon unexpected
behaviour.

Link: https://lkml.kernel.org/r/20210923064618.157046-1-tiberiu.georgescu@nutanix.com
Link: https://lkml.kernel.org/r/20210923064618.157046-2-tiberiu.georgescu@nutanix.com
Signed-off-by: Tiberiu A Georgescu <tiberiu.georgescu@nutanix.com>
Reviewed-by: Ivan Teterevkov <ivan.teterevkov@nutanix.com>
Reviewed-by: Florian Schmidt <florian.schmidt@nutanix.com>
Reviewed-by: Carl Waldspurger <carl.waldspurger@nutanix.com>
Reviewed-by: Jonathan Davies <jonathan.davies@nutanix.com>
Reviewed-by: Peter Xu <peterx@redhat.com>
Reviewed-by: David Hildenbrand <david@redhat.com>
Cc: Jonathan Corbet <corbet@lwn.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2021-11-06 13:30:36 -07:00
..
damon Documentation: add documents for DAMON 2021-09-08 11:50:25 -07:00
cma_debugfs.rst docs: admin-guide: add a series of orphaned documents 2019-07-15 11:03:02 -03:00
concepts.rst docs/mm: concepts.rst: Correct the threshold to low watermark 2020-12-31 15:47:34 -07:00
hugetlbpage.rst mm: hugetlb: add a kernel parameter hugetlb_free_vmemmap 2021-06-30 20:47:25 -07:00
idle_page_tracking.rst tools/vm/page-types.c: add support for idle page tracking 2018-08-17 16:20:28 -07:00
index.rst Documentation: add documents for DAMON 2021-09-08 11:50:25 -07:00
ksm.rst Replace HTTP links with HTTPS ones: Documentation/admin-guide 2020-07-05 14:13:00 -06:00
memory-hotplug.rst memory-hotplug.rst: complete admin-guide overhaul 2021-09-08 11:50:22 -07:00
nommu-mmap.rst docs: move nommu-mmap.txt to admin-guide and rename to ReST 2020-06-26 11:33:35 -06:00
numa_memory_policy.rst mm/mempolicy: advertise new MPOL_PREFERRED_MANY 2021-09-03 09:58:17 -07:00
numaperf.rst Documentation: Add leading slash to some paths 2021-03-31 13:49:19 -06:00
pagemap.rst Documentation: update pagemap with shmem exceptions 2021-11-06 13:30:36 -07:00
soft-dirty.rst
transhuge.rst mm/page_alloc: combine __alloc_pages and __alloc_pages_nodemask 2021-04-30 11:20:42 -07:00
userfaultfd.rst userfaultfd/shmem: advertise shmem minor fault support 2021-06-30 20:47:27 -07:00