x86: add remapping percpu first chunk allocator
authorTejun Heo <tj@kernel.org>
Tue, 24 Feb 2009 02:57:22 +0000 (11:57 +0900)
committerTejun Heo <tj@kernel.org>
Tue, 24 Feb 2009 02:57:22 +0000 (11:57 +0900)
commit8ac837571491e239e64bd87863c1679d8002e8a2
treeb001c6513609d86b8ebd1d1a2192054ff14c0443
parent89c9215165ca609096e845926d9a18f1306176a4
x86: add remapping percpu first chunk allocator

Impact: add better first percpu allocation for NUMA

On NUMA, embedding allocator can't be used as different units can't be
made to fall in the correct NUMA nodes.  To use large page mapping,
each unit needs to be remapped.  However, percpu areas are usually
much smaller than large page size and unused space hurts a lot as the
number of cpus grow.  This allocator remaps large pages for each chunk
but gives back unused part to the bootmem allocator making the large
pages mapped twice.

This adds slightly to the TLB pressure but is much better than using
4k mappings while still being NUMA-friendly.

Ingo suggested that this would be the correct approach for NUMA.

Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: Ingo Molnar <mingo@elte.hu>
arch/x86/kernel/setup_percpu.c