Thread (52 messages) 52 messages, 6 authors, 2021-03-12

Re: [External] Re: [PATCH v18 6/9] mm: hugetlb: add a kernel parameter hugetlb_free_vmemmap

From: Muchun Song <hidden>
Date: 2021-03-11 06:37:36
Also in: linux-fsdevel, linux-mm, lkml

On Wed, Mar 10, 2021 at 11:37 PM Michal Hocko [off-list ref] wrote:
On Mon 08-03-21 18:28:04, Muchun Song wrote:
quoted
Add a kernel parameter hugetlb_free_vmemmap to enable the feature of
freeing unused vmemmap pages associated with each hugetlb page on boot.

We disables PMD mapping of vmemmap pages for x86-64 arch when this
feature is enabled. Because vmemmap_remap_free() depends on vmemmap
being base page mapped.

Signed-off-by: Muchun Song <redacted>
Reviewed-by: Oscar Salvador <osalvador@suse.de>
Reviewed-by: Barry Song <redacted>
Reviewed-by: Miaohe Lin <linmiaohe@huawei.com>
Tested-by: Chen Huang <redacted>
Tested-by: Bodeddula Balasubramaniam <redacted>
---
 Documentation/admin-guide/kernel-parameters.txt | 14 ++++++++++++++
 Documentation/admin-guide/mm/hugetlbpage.rst    |  3 +++
 arch/x86/mm/init_64.c                           |  8 ++++++--
 include/linux/hugetlb.h                         | 19 +++++++++++++++++++
 mm/hugetlb_vmemmap.c                            | 24 ++++++++++++++++++++++++
 5 files changed, 66 insertions(+), 2 deletions(-)
diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
index 04545725f187..de91d54573c4 100644
--- a/Documentation/admin-guide/kernel-parameters.txt
+++ b/Documentation/admin-guide/kernel-parameters.txt
@@ -1557,6 +1557,20 @@
                      Documentation/admin-guide/mm/hugetlbpage.rst.
                      Format: size[KMG]

+     hugetlb_free_vmemmap=
+                     [KNL] When CONFIG_HUGETLB_PAGE_FREE_VMEMMAP is set,
+                     this controls freeing unused vmemmap pages associated
+                     with each HugeTLB page. When this option is enabled,
+                     we disable PMD/huge page mapping of vmemmap pages which
+                     increase page table pages. So if a user/sysadmin only
+                     uses a small number of HugeTLB pages (as a percentage
+                     of system memory), they could end up using more memory
+                     with hugetlb_free_vmemmap on as opposed to off.
+                     Format: { on | off (default) }
Please note this is an admin guide and for those this seems overly low
OK.
level. I would use something like the following
                        [KNL] Reguires CONFIG_HUGETLB_PAGE_FREE_VMEMMAP
                        enabled.
                        Allows heavy hugetlb users to free up some more
                        memory (6 * PAGE_SIZE for each 2MB hugetlb
                        page).
                        This feauture is not free though. Large page
                        tables are not use to back vmemmap pages which
                        can lead to a performance degradation for some
                        workloads. Also there will be memory allocation
                        required when hugetlb pages are freed from the
                        pool which can lead to corner cases under heavy
                        memory pressure.
Very thanks. I will update this.
quoted
+
+                     on:  enable the feature
+                     off: disable the feature
+
      hung_task_panic=
                      [KNL] Should the hung task detector generate panics.
                      Format: 0 | 1
--
Michal Hocko
SUSE Labs
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help