Thread (23 messages) 23 messages, 7 authors, 2020-07-20

Re: [PATCH v2 4/4] mm/vmalloc: Hugepage vmalloc mappings

From: Christoph Hellwig <hch@infradead.org>
Date: 2020-04-14 07:23:31
Also in: linux-arch, linux-arm-kernel, linux-mm, lkml

On Mon, Apr 13, 2020 at 10:53:03PM +1000, Nicholas Piggin wrote:
For platforms that define HAVE_ARCH_HUGE_VMAP and support PMD vmap mappings,
have vmalloc attempt to allocate PMD-sized pages first, before falling back
to small pages. Allocations which use something other than PAGE_KERNEL
protections are not permitted to use huge pages yet, not all callers expect
this (e.g., module allocations vs strict module rwx).

This gives a 6x reduction in dTLB misses for a `git diff` (of linux), from
45600 to 6500 and a 2.2% reduction in cycles on a 2-node POWER9.

This can result in more internal fragmentation and memory overhead for a
given allocation. It can also cause greater NUMA unbalance on hashdist
allocations.

There may be other callers that expect small pages under vmalloc but use
PAGE_KERNEL, I'm not sure if it's feasible to catch them all. An
alternative would be a new function or flag which enables large mappings,
and use that in callers.
Why do we even use vmalloc in this case rather than just doing a huge
page allocation?  What callers are you intersted in?
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help