Re: [PATCH v5 0/8] Support for contiguous pte hugepages

From: Punit Agrawal
Date: Wed Jun 21 2017 - 08:32:20 EST

Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> writes:

> On Tue, 20 Jun 2017 14:39:57 +0100 Punit Agrawal <punit.agrawal@xxxxxxx> wrote:
>> The architecture supports two flavours of hugepages -
>> * Block mappings at the pud/pmd level
>> These are regular hugepages where a pmd or a pud page table entry
>> points to a block of memory. Depending on the PAGE_SIZE in use the
>> following size of block mappings are supported -
>> --- ---
>> 4K: 2M 1G
>> 16K: 32M
>> 64K: 512M
>> For certain applications/usecases such as HPC and large enterprise
>> workloads, folks are using 64k page size but the minimum hugepage size
>> of 512MB isn't very practical.
>> To overcome this ...
>> * Using the Contiguous bit
>> The architecture provides a contiguous bit in the translation table
>> entry which acts as a hint to the mmu to indicate that it is one of a
>> contiguous set of entries that can be cached in a single TLB entry.
>> We use the contiguous bit in Linux to increase the mapping size at the
>> pmd and pte (last) level.
>> The number of supported contiguous entries varies by page size and
>> level of the page table.
>> Using the contiguous bit allows additional hugepage sizes -
>> -------- --- -------- ---
>> 4K: 64K 2M 32M 1G
>> 16K: 2M 32M 1G
>> 64K: 2M 512M 16G
>> Of these, 64K with 4K and 2M with 64K pages have been explicitly
>> requested by a few different users.
>> Entries with the contiguous bit set are required to be modified all
>> together - which makes things like memory poisoning and migration
>> impossible to do correctly without knowing the size of hugepage being
>> dealt with - the reason for adding size parameter to a few of the
>> hugepage helpers in this series.
> Thanks, I added the above to the 1/n changelog. Perhaps it's worth
> adding something like this to Documentation/vm/hugetlbpage.txt.

Yes, it would be useful to have this documented.

I'll send a patch once the architecture bits for re-enabling contiguous
hugepages are merged.