On Mon, Jun 13, 2022 at 02:35:09PM +0800, Muchun Song wrote: > It it inconvenient to mention the feature of optimizing vmemmap pages associated > with HugeTLB pages when communicating with others since there is no specific or > abbreviated name for it when it is first introduced. Let us give it a name HVO > (HugeTLB Vmemmap Optimization) from now. > > This commit also updates the document about "hugetlb_free_vmemmap" by the way > discussed in thread [1]. > > Link: https://lore.kernel.org/all/21aae898-d54d-cc4b-a11f-1bb7fddcfffa@xxxxxxxxxx/ [1] > Signed-off-by: Muchun Song <songmuchun@xxxxxxxxxxxxx> For the Documentation/admin-guide/kernel-parameters.txt, I think it gets much more clear. About the name, I do not have a strong opinion. Reviewed-by: Oscar Salvador <osalvador@xxxxxxx> > --- > Documentation/admin-guide/kernel-parameters.txt | 7 ++++--- > Documentation/admin-guide/mm/hugetlbpage.rst | 3 +-- > Documentation/admin-guide/sysctl/vm.rst | 3 +-- > fs/Kconfig | 13 ++++++------- > mm/hugetlb_vmemmap.c | 8 ++++---- > mm/hugetlb_vmemmap.h | 4 ++-- > 6 files changed, 18 insertions(+), 20 deletions(-) > > diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt > index 391b43fee93e..7539553b3fb0 100644 > --- a/Documentation/admin-guide/kernel-parameters.txt > +++ b/Documentation/admin-guide/kernel-parameters.txt > @@ -1725,12 +1725,13 @@ > hugetlb_free_vmemmap= > [KNL] Reguires CONFIG_HUGETLB_PAGE_OPTIMIZE_VMEMMAP > enabled. > + Control if HugeTLB Vmemmap Optimization (HVO) is enabled. > Allows heavy hugetlb users to free up some more > memory (7 * PAGE_SIZE for each 2MB hugetlb page). > - Format: { [oO][Nn]/Y/y/1 | [oO][Ff]/N/n/0 (default) } > + Format: { on | off (default) } > > - [oO][Nn]/Y/y/1: enable the feature > - [oO][Ff]/N/n/0: disable the feature > + on: enable HVO > + off: disable HVO > > Built with CONFIG_HUGETLB_PAGE_OPTIMIZE_VMEMMAP_DEFAULT_ON=y, > the default is on. > diff --git a/Documentation/admin-guide/mm/hugetlbpage.rst b/Documentation/admin-guide/mm/hugetlbpage.rst > index a90330d0a837..64e0d5c512e7 100644 > --- a/Documentation/admin-guide/mm/hugetlbpage.rst > +++ b/Documentation/admin-guide/mm/hugetlbpage.rst > @@ -164,8 +164,7 @@ default_hugepagesz > will all result in 256 2M huge pages being allocated. Valid default > huge page size is architecture dependent. > hugetlb_free_vmemmap > - When CONFIG_HUGETLB_PAGE_OPTIMIZE_VMEMMAP is set, this enables optimizing > - unused vmemmap pages associated with each HugeTLB page. > + When CONFIG_HUGETLB_PAGE_OPTIMIZE_VMEMMAP is set, this enables HVO. > > When multiple huge page sizes are supported, ``/proc/sys/vm/nr_hugepages`` > indicates the current number of pre-allocated huge pages of the default size. > diff --git a/Documentation/admin-guide/sysctl/vm.rst b/Documentation/admin-guide/sysctl/vm.rst > index d7374a1e8ac9..c9f35db973f0 100644 > --- a/Documentation/admin-guide/sysctl/vm.rst > +++ b/Documentation/admin-guide/sysctl/vm.rst > @@ -569,8 +569,7 @@ This knob is not available when the size of 'struct page' (a structure defined > in include/linux/mm_types.h) is not power of two (an unusual system config could > result in this). > > -Enable (set to 1) or disable (set to 0) the feature of optimizing vmemmap pages > -associated with each HugeTLB page. > +Enable (set to 1) or disable (set to 0) HugeTLB Vmemmap Optimization (HVO). > > Once enabled, the vmemmap pages of subsequent allocation of HugeTLB pages from > buddy allocator will be optimized (7 pages per 2MB HugeTLB page and 4095 pages > diff --git a/fs/Kconfig b/fs/Kconfig > index 5976eb33535f..2f9fd840cb66 100644 > --- a/fs/Kconfig > +++ b/fs/Kconfig > @@ -247,8 +247,7 @@ config HUGETLB_PAGE > > # > # Select this config option from the architecture Kconfig, if it is preferred > -# to enable the feature of minimizing overhead of struct page associated with > -# each HugeTLB page. > +# to enable the feature of HugeTLB Vmemmap Optimization (HVO). > # > config ARCH_WANT_HUGETLB_PAGE_OPTIMIZE_VMEMMAP > bool > @@ -259,14 +258,14 @@ config HUGETLB_PAGE_OPTIMIZE_VMEMMAP > depends on SPARSEMEM_VMEMMAP > > config HUGETLB_PAGE_OPTIMIZE_VMEMMAP_DEFAULT_ON > - bool "Default optimizing vmemmap pages of HugeTLB to on" > + bool "Default HugeTLB Vmemmap Optimization (HVO) to on" > default n > depends on HUGETLB_PAGE_OPTIMIZE_VMEMMAP > help > - When using HUGETLB_PAGE_OPTIMIZE_VMEMMAP, the optimizing unused vmemmap > - pages associated with each HugeTLB page is default off. Say Y here > - to enable optimizing vmemmap pages of HugeTLB by default. It can then > - be disabled on the command line via hugetlb_free_vmemmap=off. > + When using HUGETLB_PAGE_OPTIMIZE_VMEMMAP, the HugeTLB Vmemmap > + Optimization (HVO) is off by default. Say Y here to enable HVO > + by default. It can then be disabled on the command line via > + hugetlb_free_vmemmap=off or sysctl. > > config MEMFD_CREATE > def_bool TMPFS || HUGETLBFS > diff --git a/mm/hugetlb_vmemmap.c b/mm/hugetlb_vmemmap.c > index 132dc83f0130..c10540993577 100644 > --- a/mm/hugetlb_vmemmap.c > +++ b/mm/hugetlb_vmemmap.c > @@ -1,8 +1,8 @@ > // SPDX-License-Identifier: GPL-2.0 > /* > - * Optimize vmemmap pages associated with HugeTLB > + * HugeTLB Vmemmap Optimization (HVO) > * > - * Copyright (c) 2020, Bytedance. All rights reserved. > + * Copyright (c) 2020, ByteDance. All rights reserved. > * > * Author: Muchun Song <songmuchun@xxxxxxxxxxxxx> > * > @@ -120,8 +120,8 @@ void __init hugetlb_vmemmap_init(struct hstate *h) > > /* > * There are only (RESERVE_VMEMMAP_SIZE / sizeof(struct page)) struct > - * page structs that can be used when CONFIG_HUGETLB_PAGE_OPTIMIZE_VMEMMAP, > - * so add a BUILD_BUG_ON to catch invalid usage of the tail struct page. > + * page structs that can be used when HVO is enabled, add a BUILD_BUG_ON > + * to catch invalid usage of the tail page structs. > */ > BUILD_BUG_ON(__NR_USED_SUBPAGE >= > RESERVE_VMEMMAP_SIZE / sizeof(struct page)); > diff --git a/mm/hugetlb_vmemmap.h b/mm/hugetlb_vmemmap.h > index 109b0a53b6fe..ba66fadad9fc 100644 > --- a/mm/hugetlb_vmemmap.h > +++ b/mm/hugetlb_vmemmap.h > @@ -1,8 +1,8 @@ > // SPDX-License-Identifier: GPL-2.0 > /* > - * Optimize vmemmap pages associated with HugeTLB > + * HugeTLB Vmemmap Optimization (HVO) > * > - * Copyright (c) 2020, Bytedance. All rights reserved. > + * Copyright (c) 2020, ByteDance. All rights reserved. > * > * Author: Muchun Song <songmuchun@xxxxxxxxxxxxx> > */ > -- > 2.11.0 > > -- Oscar Salvador SUSE Labs