[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <88114091-fbb2-340d-b69b-a572fa340265@redhat.com>
Date: Wed, 19 May 2021 14:03:23 +0200
From: David Hildenbrand <david@...hat.com>
To: Anshuman Khandual <anshuman.khandual@....com>,
Muchun Song <songmuchun@...edance.com>, will@...nel.org,
akpm@...ux-foundation.org, bodeddub@...zon.com, osalvador@...e.de,
mike.kravetz@...cle.com, rientjes@...gle.com
Cc: linux-arm-kernel@...ts.infradead.org, linux-kernel@...r.kernel.org,
linux-mm@...ck.org, duanxiongchun@...edance.com,
fam.zheng@...edance.com, zhengqi.arch@...edance.com
Subject: Re: [PATCH] arm64: mm: hugetlb: add support for free vmemmap pages of
HugeTLB
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@...edance.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
Powered by blists - more mailing lists