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:38:08
Also in: linux-fsdevel, linux-mm, lkml

On Thu, Mar 11, 2021 at 1:16 AM Randy Dunlap [off-list ref] wrote:
On 3/10/21 7:37 AM, Michal Hocko wrote:
quoted
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
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
                               are not used
Thanks.
quoted
                      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.
quoted
+
+                    on:  enable the feature
+                    off: disable the feature
+
     hung_task_panic=
                     [KNL] Should the hung task detector generate panics.
                     Format: 0 | 1

--
~Randy
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help