linux/arch
Tejun Heo a530b79586 percpu: teach large page allocator about NUMA
Large page first chunk allocator is primarily used for NUMA machines;
however, its NUMA handling is extremely simplistic.  Regardless of
their proximity, each cpu is put into separate large page just to
return most of the allocated space back wasting large amount of
vmalloc space and increasing cache footprint.

This patch teachs NUMA details to large page allocator.  Given
processor proximity information, pcpu_lpage_build_unit_map() will find
fitting cpu -> unit mapping in which cpus in LOCAL_DISTANCE share the
same large page and not too much virtual address space is wasted.

This greatly reduces the unit and thus chunk size and wastes much less
address space for the first chunk.  For example, on 4/4 NUMA machine,
the original code occupied 16MB of virtual space for the first chunk
while the new code only uses 4MB - one 2MB page for each node.

[ Impact: much better space efficiency on NUMA machines ]

Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Jan Beulich <JBeulich@novell.com>
Cc: Andi Kleen <andi@firstfloor.org>
Cc: David Miller <davem@davemloft.net>
2009-07-04 08:11:00 +09:00
..
alpha alpha: fix percpu build breakage 2009-06-30 18:55:59 -07:00
arm Merge branch 'master' into for-next 2009-07-04 07:13:18 +09:00
avr32 linker script: throw away .discard section 2009-06-24 15:13:38 +09:00
blackfin Merge branch 'master' into for-next 2009-07-04 07:13:18 +09:00
cris Merge branch 'master' into for-next 2009-07-04 07:13:18 +09:00
frv Merge branch 'master' into for-next 2009-07-04 07:13:18 +09:00
h8300 Merge branch 'master' into for-next 2009-07-04 07:13:18 +09:00
ia64 Merge branch 'master' into for-next 2009-07-04 07:13:18 +09:00
m32r linker script: throw away .discard section 2009-06-24 15:13:38 +09:00
m68k linker script: throw away .discard section 2009-06-24 15:13:38 +09:00
m68knommu linker script: throw away .discard section 2009-06-24 15:13:38 +09:00
microblaze linker script: throw away .discard section 2009-06-24 15:13:38 +09:00
mips Merge branch 'master' into for-next 2009-07-04 07:13:18 +09:00
mn10300 Merge branch 'master' into for-next 2009-07-04 07:13:18 +09:00
parisc linker script: throw away .discard section 2009-06-24 15:13:38 +09:00
powerpc Merge branch 'master' into for-next 2009-07-04 07:13:18 +09:00
s390 Merge branch 'master' into for-next 2009-07-04 07:13:18 +09:00
sh Merge branch 'master' into for-next 2009-07-04 07:13:18 +09:00
sparc percpu: allow non-linear / sparse cpu -> unit mapping 2009-07-04 08:11:00 +09:00
um Merge branch 'master' into for-next 2009-07-04 07:13:18 +09:00
x86 percpu: teach large page allocator about NUMA 2009-07-04 08:11:00 +09:00
xtensa Merge branch 'master' into for-next 2009-07-04 07:13:18 +09:00
.gitignore
Kconfig gcov: add gcov profiling infrastructure 2009-06-18 13:03:57 -07:00