mm: add docs for per-order mTHP counters and transhuge_page ABI
authorBarry Song <v-songbaohua@oppo.com>
Fri, 12 Apr 2024 11:48:57 +0000 (23:48 +1200)
committerAndrew Morton <akpm@linux-foundation.org>
Mon, 6 May 2024 00:53:36 +0000 (17:53 -0700)
This patch includes documentation for mTHP counters and an ABI file for
sys-kernel-mm-transparent-hugepage, which appears to have been missing for
some time.

[v-songbaohua@oppo.com: fix the name and unexpected indentation]
Link: https://lkml.kernel.org/r/20240415054538.17071-1-21cnbao@gmail.com
Link: https://lkml.kernel.org/r/20240412114858.407208-4-21cnbao@gmail.com
Signed-off-by: Barry Song <v-songbaohua@oppo.com>
Reviewed-by: Ryan Roberts <ryan.roberts@arm.com>
Reviewed-by: David Hildenbrand <david@redhat.com>
Cc: Chris Li <chrisl@kernel.org>
Cc: Domenico Cerasuolo <cerasuolodomenico@gmail.com>
Cc: Kairui Song <kasong@tencent.com>
Cc: Matthew Wilcox (Oracle) <willy@infradead.org>
Cc: Peter Xu <peterx@redhat.com>
Cc: Ryan Roberts <ryan.roberts@arm.com>
Cc: Suren Baghdasaryan <surenb@google.com>
Cc: Yosry Ahmed <yosryahmed@google.com>
Cc: Yu Zhao <yuzhao@google.com>
Cc: Jonathan Corbet <corbet@lwn.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Documentation/ABI/testing/sysfs-kernel-mm-transparent-hugepage [new file with mode: 0644]
Documentation/admin-guide/mm/transhuge.rst

diff --git a/Documentation/ABI/testing/sysfs-kernel-mm-transparent-hugepage b/Documentation/ABI/testing/sysfs-kernel-mm-transparent-hugepage
new file mode 100644 (file)
index 0000000..7bfbb9c
--- /dev/null
@@ -0,0 +1,18 @@
+What:          /sys/kernel/mm/transparent_hugepage/
+Date:          April 2024
+Contact:       Linux memory management mailing list <linux-mm@kvack.org>
+Description:
+               /sys/kernel/mm/transparent_hugepage/ contains a number of files and
+               subdirectories,
+
+                       - defrag
+                       - enabled
+                       - hpage_pmd_size
+                       - khugepaged
+                       - shmem_enabled
+                       - use_zero_page
+                       - subdirectories of the form hugepages-<size>kB, where <size>
+                         is the page size of the hugepages supported by the kernel/CPU
+                         combination.
+
+               See Documentation/admin-guide/mm/transhuge.rst for details.
index 04eb45a2f940692d690c24acd042443a763d3574..e0fe17affeb3fe25052df6b1824d68697d4a3a48 100644 (file)
@@ -447,6 +447,34 @@ thp_swpout_fallback
        Usually because failed to allocate some continuous swap space
        for the huge page.
 
+In /sys/kernel/mm/transparent_hugepage/hugepages-<size>kB/stats, There are
+also individual counters for each huge page size, which can be utilized to
+monitor the system's effectiveness in providing huge pages for usage. Each
+counter has its own corresponding file.
+
+anon_fault_alloc
+       is incremented every time a huge page is successfully
+       allocated and charged to handle a page fault.
+
+anon_fault_fallback
+       is incremented if a page fault fails to allocate or charge
+       a huge page and instead falls back to using huge pages with
+       lower orders or small pages.
+
+anon_fault_fallback_charge
+       is incremented if a page fault fails to charge a huge page and
+       instead falls back to using huge pages with lower orders or
+       small pages even though the allocation was successful.
+
+anon_swpout
+       is incremented every time a huge page is swapped out in one
+       piece without splitting.
+
+anon_swpout_fallback
+       is incremented if a huge page has to be split before swapout.
+       Usually because failed to allocate some continuous swap space
+       for the huge page.
+
 As the system ages, allocating huge pages may be expensive as the
 system uses memory compaction to copy data around memory to free a
 huge page for use. There are some counters in ``/proc/vmstat`` to help