Re: [PATCH] arm64: mm: hugetlb: add support for free vmemmap pages of HugeTLB

David Hildenbrand
2021-05-19T12:03:41Z

On 19.05.21 13:45, Anshuman Khandual wrote:
>
>
> On 5/18/21 2:48 PM, Muchun Song wrote:
>> The preparation of supporting freeing vmemmap associated with each
>> HugeTLB page is ready, so we can support this feature for arm64.
>>
>> Signed-off-by: Muchun Song <songmuchun@bytedance.com>
>> ---
>> arch/arm64/mm/mmu.c | 5 +++++
>> fs/Kconfig | 2 +-
>> 2 files changed, 6 insertions(+), 1 deletion(-)
>>
>> diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c
>> index 5d37e461c41f..967b01ce468d 100644
>> --- a/arch/arm64/mm/mmu.c
>> +++ b/arch/arm64/mm/mmu.c
>> @@ -23,6 +23,7 @@
>> #include <linux/mm.h>
>> #include <linux/vmalloc.h>
>> #include <linux/set_memory.h>
>> +#include <linux/hugetlb.h>
>>
>> #include <asm/barrier.h>
>> #include <asm/cputype.h>
>> @@ -1134,6 +1135,10 @@ int __meminit vmemmap_populate(unsigned long start, unsigned long end, int node,
>> pmd_t *pmdp;
>>
>> WARN_ON((start < VMEMMAP_START) || (end > VMEMMAP_END));
>> +
>> + if (is_hugetlb_free_vmemmap_enabled() && !altmap)
>> + return vmemmap_populate_basepages(start, end, node, altmap);
>
> Not considering the fact that this will force the kernel to have only
> base page size mapping for vmemmap (unless altmap is also requested)
> which might reduce the performance, it also enables vmemmap mapping to
> be teared down or build up at runtime which could potentially collide
> with other kernel page table walkers like ptdump or memory hotremove
> operation ! How those possible collisions are protected right now ?

Hi Anshuman,

Memory hotremove is not an issue IIRC. At the time memory is removed,
all huge pages either have been migrated away or dissolved; the vmemmap
is stable.

vmemmap access (accessing the memmap via a virtual address) itself is
not an issue. Manually walking (vmemmap) page tables might behave
differently, not sure if ptdump would require any synchronization.

>
> Does not this vmemmap operation increase latency for HugeTLB usage ?
> Should not this runtime enablement also take into account some other
> qualifying information apart from potential memory save from struct
> page areas. Just wondering.

That's one of the reasons why it explicitly has to be enabled by an admin.

--
Thanks,

David / dhildenb