Christoph Lameter
b263295dbf
x86: 64-bit, make sparsemem vmemmap the only memory model
...
Use sparsemem as the only memory model for UP, SMP and NUMA. Measurements
indicate that DISCONTIGMEM has a higher overhead than sparsemem. And
FLATMEMs benefits are minimal. So I think its best to simply standardize
on sparsemem.
Results of page allocator tests (test can be had via git from slab git
tree branch tests)
Measurements in cycle counts. 1000 allocations were performed and then the
average cycle count was calculated.
Order FlatMem Discontig SparseMem
0 639 665 641
1 567 647 593
2 679 774 692
3 763 967 781
4 961 1501 962
5 1356 2344 1392
6 2224 3982 2336
7 4869 7225 5074
8 12500 14048 12732
9 27926 28223 28165
10 58578 58714 58682
(Note that FlatMem is an SMP config and the rest NUMA configurations)
Memory use:
SMP Sparsemem
-------------
Kernel size:
text data bss dec hex filename
3849268 397739 1264856 5511863 541ab7 vmlinux
total used free shared buffers cached
Mem: 8242252 41164 8201088 0 352 11512
-/+ buffers/cache: 29300 8212952
Swap: 9775512 0 9775512
SMP Flatmem
-----------
Kernel size:
text data bss dec hex filename
3844612 397739 1264536 5506887 540747 vmlinux
So 4.5k growth in text size vs. FLATMEM.
total used free shared buffers cached
Mem: 8244052 40544 8203508 0 352 11484
-/+ buffers/cache: 28708 8215344
2k growth in overall memory use after boot.
NUMA discontig:
text data bss dec hex filename
3888124 470659 1276504 5635287 55fcd7 vmlinux
total used free shared buffers cached
Mem: 8256256 56908 8199348 0 352 11496
-/+ buffers/cache: 45060 8211196
Swap: 9775512 0 9775512
NUMA sparse:
text data bss dec hex filename
3896428 470659 1276824 5643911 561e87 vmlinux
8k text growth. Given that we fully inline virt_to_page and friends now
that is rather good.
total used free shared buffers cached
Mem: 8264720 57240 8207480 0 352 11516
-/+ buffers/cache: 45372 8219348
Swap: 9775512 0 9775512
The total available memory is increased by 8k.
This patch makes sparsemem the default and removes discontig and
flatmem support from x86.
[ akpm@linux-foundation.org: allnoconfig build fix ]
Acked-by: Andi Kleen <ak@suse.de>
Signed-off-by: Christoph Lameter <clameter@sgi.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2008-01-30 13:30:47 +01:00
..
mach-bigsmp
x86: cleanup mpspec variants
2008-01-30 13:30:35 +01:00
mach-default
x86: cleanup mpspec variants
2008-01-30 13:30:35 +01:00
mach-es7000
x86: cleanup mpspec variants
2008-01-30 13:30:35 +01:00
mach-generic
mach-numaq
x86: cleanup mpspec variants
2008-01-30 13:30:35 +01:00
mach-summit
x86: cleanup mpspec variants
2008-01-30 13:30:35 +01:00
mach-visws
x86: visws extern inline to static inline
2007-10-17 20:16:39 +02:00
mach-voyager
x86: voyager use correct header file name
2007-11-17 16:27:00 +01:00
xen
a.out.h
x86: unify a.out{,_32,_64}.h
2007-10-23 22:37:23 +02:00
acpi.h
x86: merge acpi_32/64.h
2008-01-30 13:30:36 +01:00
agp.h
x86: unify include/asm/agp_32/64.h
2007-10-17 20:17:12 +02:00
alternative-asm.h
x86: rename .i assembler includes to .h
2007-10-17 20:16:29 +02:00
alternative.h
x86: actually merge <asm/alternative.h>
2008-01-30 13:30:30 +01:00
apic.h
x86: extended interrupt LVT support for AMD Barcelona
2008-01-30 13:30:40 +01:00
apicdef.h
x86: extended interrupt LVT support for AMD Barcelona
2008-01-30 13:30:40 +01:00
arch_hooks.h
x86: move debug related declarations to kdebug.h
2008-01-30 13:30:17 +01:00
asm.h
x86: merge resume-trace.h variants
2008-01-30 13:30:38 +01:00
atomic.h
atomic_32.h
atomic_64.h
x86: make atomic64_t work like atomic_t
2007-10-17 20:16:21 +02:00
auxvec.h
x86: unify include/asm/auxvec_32/64.h
2007-10-17 20:17:13 +02:00
bitops.h
bitops_32.h
x86: bitops_32.h style cleanups
2008-01-30 13:30:32 +01:00
bitops_64.h
x86 bitops: fix code style issues
2007-10-25 16:16:26 -07:00
boot.h
bootparam.h
Make asm-x86/bootparam.h includable from userspace.
2007-10-23 15:49:47 +10:00
bug.h
x86: nuke a ton of unused exports
2008-01-30 13:30:28 +01:00
bugs.h
x86: unify some more trivial include/asm-x86/ 32/64 variants
2007-10-17 20:17:10 +02:00
byteorder.h
x86: fix asm-x86/byteorder.h for userspace export
2008-01-01 19:12:15 +01:00
cache.h
x86: unify include/asm/cache_32/64.h
2007-10-17 20:17:15 +02:00
cacheflush.h
Intel IOMMU: clflush_cache_range now takes size param
2007-10-22 08:13:18 -07:00
calgary.h
calling.h
checksum.h
checksum_32.h
checksum_64.h
x86: remove more bogus filenames in comments.
2008-01-30 13:30:28 +01:00
cmpxchg.h
cmpxchg_32.h
cmpxchg_64.h
compat.h
x86: Use linux/elfcore-compat.h
2007-10-19 20:35:02 +02:00
cpu.h
i386: no need to make enable_cpu_hotplug a variable
2007-10-17 20:16:16 +02:00
cpufeature.h
x86: cleanup tlbflush.h variants
2008-01-30 13:30:35 +01:00
cputime.h
x86: trivial header merges
2007-10-17 20:17:08 +02:00
current.h
current_32.h
current_64.h
debugreg.h
x86: unify include/asm/debugreg_32/64.h
2007-10-17 20:35:37 +02:00
delay.h
x86: unify include/asm/delay_32/64.h
2007-10-17 20:17:17 +02:00
desc.h
desc_32.h
desc_64.h
x86: get_desc_base
2008-01-30 13:30:44 +01:00
desc_defs.h
device.h
intel-iommu: fix for IOMMU early crash
2007-10-22 08:13:19 -07:00
div64.h
x86: unify div64{,_32,_64}.h
2007-10-23 22:37:23 +02:00
dma-mapping.h
dma-mapping_32.h
Change table chaining layout
2007-10-22 21:20:01 +02:00
dma-mapping_64.h
x86-64: enable sg chaining
2007-10-16 11:26:02 +02:00
dma.h
x86: merge include/asm-x86/dma.h
2008-01-30 13:30:20 +01:00
dmi.h
x86: unify include/asm/dmi_32/64.h
2007-10-17 20:17:18 +02:00
dwarf2.h
dwarf2_32.h
dwarf2_64.h
e820.h
Make asm-x86/bootparam.h includable from userspace.
2007-10-23 15:49:47 +10:00
e820_32.h
x86: remove extern declarations for code, data, bss resources
2008-01-30 13:30:32 +01:00
e820_64.h
x86: remove extern declarations for code, data, bss resources
2008-01-30 13:30:32 +01:00
edac.h
x86: unify include/asm/cache_32/64.h
2007-10-17 20:17:19 +02:00
elf.h
x86 vDSO: consolidate vdso32
2008-01-30 13:30:43 +01:00
emergency-restart.h
errno.h
x86: trivial header merges
2007-10-17 20:17:08 +02:00
fb.h
x86: unify include/asm/cache_32/64.h
2007-10-17 20:17:21 +02:00
fcntl.h
fixmap.h
fixmap_32.h
fixmap_64.h
floppy.h
x86: unify include/asm/floppy_32/64.h
2007-10-17 20:24:56 +02:00
fpu32.h
frame.h
x86: rename .i assembler includes to .h
2007-10-17 20:16:29 +02:00
futex.h
x86: merge futex_32/64.h
2008-01-30 13:30:20 +01:00
gart.h
x86 gart: rename symbols only used for the GART implementation
2007-10-30 00:22:22 +01:00
genapic.h
genapic_32.h
genapic_64.h
geode.h
GEODE: use symbolic constant in cs5536 reboot fixup
2007-10-19 20:35:02 +02:00
hardirq.h
hardirq_32.h
x86: expand /proc/interrupts to include missing vectors, v2
2007-10-17 20:16:53 +02:00
hardirq_64.h
highmem.h
hpet.h
x86: offer is_hpet_enabled() on !CONFIG_HPET_TIMER too
2008-01-30 13:30:02 +01:00
hw_irq.h
hw_irq_32.h
hw_irq_64.h
x86: clear IO_APIC before enabing apic error vector.
2008-01-30 13:30:39 +01:00
hypertransport.h
i387.h
i387_32.h
x86: remove more bogus filenames in comments.
2008-01-30 13:30:28 +01:00
i387_64.h
x86: remove more bogus filenames in comments.
2008-01-30 13:30:28 +01:00
i8253.h
i386: Remove the useless #ifdef in i8253.h
2007-10-12 23:04:23 +02:00
i8259.h
x86: move 8259 defines to i8259.h
2008-01-30 13:30:29 +01:00
ia32.h
x86: TLS cleanup
2008-01-30 13:30:46 +01:00
ia32_unistd.h
x86: remove more bogus filenames in comments.
2008-01-30 13:30:28 +01:00
ide.h
x86: remove more bogus filenames in comments.
2008-01-30 13:30:28 +01:00
idle.h
x86: remove dead code and exports
2008-01-30 13:30:28 +01:00
intel_arch_perfmon.h
x86: unify some more trivial include/asm-x86/ 32/64 variants
2007-10-17 20:17:10 +02:00
io.h
io_32.h
x86: various changes and cleanups to in_p/out_p delay details
2008-01-30 13:30:05 +01:00
io_64.h
x86: various changes and cleanups to in_p/out_p delay details
2008-01-30 13:30:05 +01:00
io_apic.h
x86: merge include/asm-x86/sparsemem.h
2008-01-30 13:30:37 +01:00
ioctl.h
ioctls.h
x86: unify include/asm/ioctls_32/64.h
2007-10-17 20:26:11 +02:00
iommu.h
x86 gart: rename iommu.h to gart.h
2007-10-30 00:22:22 +01:00
ipcbuf.h
x86: unify some more trivial include/asm-x86/ 32/64 variants
2007-10-17 20:17:10 +02:00
ipi.h
x86: convert cpu_to_apicid to be a per cpu variable
2007-10-19 20:35:03 +02:00
irq.h
irq_32.h
i386: introduce "used_vectors" bitmap which can be used to reserve vectors.
2007-10-19 20:35:03 +02:00
irq_64.h
irq_regs.h
irq_regs_32.h
irq_regs_64.h
irqflags.h
x86: irqflags consolidation
2008-01-30 13:30:33 +01:00
ist.h
Make asm-x86/bootparam.h includable from userspace.
2007-10-23 15:49:47 +10:00
k8.h
x86: move k8 related declarations
2008-01-30 13:30:16 +01:00
Kbuild
x86 vDSO: ia32 vsyscall removal
2008-01-30 13:30:44 +01:00
kdebug.h
x86: move debug related declarations to kdebug.h
2008-01-30 13:30:17 +01:00
kexec.h
kexec_32.h
kexec_64.h
kmap_types.h
x86: unify include/asm/agp_32/64.h
2007-10-17 20:26:13 +02:00
kprobes.h
kprobes_32.h
x86: jprobe bugfix
2007-12-18 18:05:58 +01:00
kprobes_64.h
x86: jprobe bugfix
2007-12-18 18:05:58 +01:00
ldt.h
x86: unify include/asm/ldt_32/64.h
2007-10-17 20:16:47 +02:00
lguest.h
Reorder guest saved regs to match hyperall order
2007-10-23 15:49:51 +10:00
lguest_hcall.h
lguest: make async_hcall() static
2007-11-05 21:53:29 +11:00
linkage.h
linkage_32.h
linkage_64.h
local.h
local_32.h
local_64.h
mach_apic.h
math_emu.h
mc146818rtc.h
x86: isolate the rtc code for sharing
2008-01-30 13:30:26 +01:00
mca.h
mca_dma.h
mce.h
x86: move mce related declarations
2008-01-30 13:30:17 +01:00
mman.h
x86: unify include/asm/mman_32/64.h
2007-10-17 20:26:15 +02:00
mmsegment.h
mmu.h
x86: merge mmu{,_32,_64}.h
2007-10-23 22:37:22 +02:00
mmu_context.h
mmu_context_32.h
mmu_context_64.h
x86: nuke a ton of unused exports
2008-01-30 13:30:28 +01:00
mmx.h
mmzone.h
mmzone_32.h
x86: put all kern_addr_valid() incarnations to pgtable.h
2008-01-30 13:30:37 +01:00
mmzone_64.h
x86: 64-bit, make sparsemem vmemmap the only memory model
2008-01-30 13:30:47 +01:00
module.h
module_32.h
module_64.h
mpspec.h
x86: cleanup smp.h variants
2008-01-30 13:30:36 +01:00
mpspec_def.h
x86: cleanup mpspec variants
2008-01-30 13:30:35 +01:00
msgbuf.h
x86: merge msgbuf_32/64.h
2007-10-23 22:37:24 +02:00
msidef.h
msr-index.h
i386: i386 add AMD64 Barcelona PMU MSR definitions to msr.h
2007-10-19 20:35:03 +02:00
msr.h
x86: asm-x86/msr.h: pull in linux/types.h
2008-01-15 16:44:38 +01:00
mtrr.h
x86: mtrr use type bool [RESEND AGAIN]
2008-01-30 13:30:31 +01:00
mutex.h
mutex_32.h
mutex_64.h
namei.h
x86: unify some more trivial include/asm-x86/ 32/64 variants
2007-10-17 20:17:10 +02:00
nmi.h
nmi_32.h
x86: remove more bogus filenames in comments.
2008-01-30 13:30:28 +01:00
nmi_64.h
x86: nmi_64.c: make code static
2008-01-30 13:30:31 +01:00
numa.h
numa_32.h
numa_64.h
x86: fixup numa 64 namespace
2008-01-30 13:30:38 +01:00
numaq.h
page.h
page_32.h
page_64.h
x86: 64-bit, make sparsemem vmemmap the only memory model
2008-01-30 13:30:47 +01:00
param.h
x86: unify some more trivial include/asm-x86/ 32/64 variants
2007-10-17 20:17:10 +02:00
paravirt.h
x86: irqflags consolidation
2008-01-30 13:30:33 +01:00
parport.h
x86: unify some more trivial include/asm-x86/ 32/64 variants
2007-10-17 20:17:10 +02:00
pci-direct.h
pci.h
x86: consolidate toloplogy_32/64.h
2008-01-30 13:30:38 +01:00
pci_32.h
PCI: merge almost all of pci_32.h and pci_64.h together
2007-10-12 15:03:20 -07:00
pci_64.h
x86: pci-dma_64.c: cleanups
2008-01-30 13:30:31 +01:00
pda.h
x86: move pda related declaration
2008-01-30 13:30:18 +01:00
percpu.h
percpu_32.h
percpu_64.h
pgalloc.h
pgalloc_32.h
pgalloc_64.h
pgtable-2level-defs.h
pgtable-2level.h
pgtable-3level-defs.h
paravirt: refactor struct paravirt_ops into smaller pv_*_ops
2007-10-16 11:51:29 -07:00
pgtable-3level.h
pgtable.h
pgtable_32.h
x86: put all kern_addr_valid() incarnations to pgtable.h
2008-01-30 13:30:37 +01:00
pgtable_64.h
remove asm/bitops.h includes
2007-10-19 11:53:41 -07:00
poll.h
posix_types.h
posix_types_32.h
posix_types_64.h
prctl.h
processor-cyrix.h
processor-flags.h
KVM: Use standard CR8 flags, and fix TPR definition
2007-10-13 10:18:19 +02:00
processor.h
processor_32.h
x86: desc_empty
2008-01-30 13:30:45 +01:00
processor_64.h
x86: desc_empty
2008-01-30 13:30:45 +01:00
proto.h
x86: remove obsolte declarations from proto.h
2008-01-30 13:30:19 +01:00
ptrace-abi.h
x86: unify include/asm/ptrace-abi_32/64.h
2007-10-17 20:16:45 +02:00
ptrace.h
x86: TLS cleanup
2008-01-30 13:30:46 +01:00
reboot.h
reboot_fixups.h
required-features.h
x86: merge required-features.h
2007-10-23 22:37:24 +02:00
resource.h
x86: trivial header merges
2007-10-17 20:17:08 +02:00
resume-trace.h
x86: merge resume-trace.h variants
2008-01-30 13:30:38 +01:00
rio.h
x86: remove more bogus filenames in comments.
2008-01-30 13:30:28 +01:00
rtc.h
x86: trivial header merges
2007-10-17 20:17:08 +02:00
rwlock.h
x86: use immediates instead of RW_LOCK_BIAS_STR
2008-01-30 13:30:34 +01:00
rwsem.h
x86: remove more bogus filenames in comments.
2008-01-30 13:30:28 +01:00
scatterlist.h
x86: merge include/asm-x86/scatterlist.h
2008-01-30 13:30:21 +01:00
seccomp.h
seccomp_32.h
seccomp_64.h
sections.h
x86: trivial header merges
2007-10-17 20:17:08 +02:00
segment.h
segment_32.h
segment_64.h
semaphore.h
semaphore_32.h
kill DECLARE_MUTEX_LOCKED
2007-10-17 08:42:47 -07:00
semaphore_64.h
kill DECLARE_MUTEX_LOCKED
2007-10-17 08:42:47 -07:00
sembuf.h
x86: unify some more trivial include/asm-x86/ 32/64 variants
2007-10-17 20:17:10 +02:00
serial.h
x86: merge some trivially mergeable headers
2007-10-17 20:17:09 +02:00
setup.h
x86: clean up setup.h and the boot code
2007-10-23 22:37:25 +02:00
shmbuf.h
x86: merge shmbuf_32/64.h
2007-10-23 22:37:24 +02:00
shmparam.h
x86: unify some more trivial include/asm-x86/ 32/64 variants
2007-10-17 20:17:10 +02:00
sigcontext.h
x86: merge sigcontext_32/64.h
2007-10-23 22:37:24 +02:00
sigcontext32.h
siginfo.h
x86: unify include/asm/siginfo_32/64.h
2007-10-17 20:26:17 +02:00
signal.h
x86: merge signal_32/64.h
2007-10-23 22:37:24 +02:00
smp.h
smp_32.h
x86: cleanup smp.h variants
2008-01-30 13:30:36 +01:00
smp_64.h
x86: cleanup smp.h variants
2008-01-30 13:30:36 +01:00
socket.h
sockios.h
x86: merge some trivially mergeable headers
2007-10-17 20:17:09 +02:00
sparsemem.h
x86: merge include/asm-x86/sparsemem.h
2008-01-30 13:30:37 +01:00
spinlock.h
x86: merge spinlock.h variants
2008-01-30 13:30:34 +01:00
spinlock_types.h
srat.h
stacktrace.h
x86: constify stacktrace_ops
2007-10-17 20:16:11 +02:00
stat.h
x86: merge stat_32/64.h
2007-10-23 22:37:24 +02:00
statfs.h
x86: merge statfs_32/64.h
2007-10-23 22:37:24 +02:00
string.h
string_32.h
i386: Remove strrchr assembler implementation
2007-10-17 20:16:23 +02:00
string_64.h
suspend.h
suspend_32.h
suspend_64.h
x86: hibernation: document __save_processor_state() on x86
2008-01-30 13:30:04 +01:00
swiotlb.h
sync_bitops.h
system.h
system_32.h
x86: move debug related declarations to kdebug.h
2008-01-30 13:30:17 +01:00
system_64.h
x86: also define AT_VECTOR_SIZE_ARCH
2007-12-18 18:05:58 +01:00
tce.h
termbits.h
x86: unify some more trivial include/asm-x86/ 32/64 variants
2007-10-17 20:17:10 +02:00
termios.h
x86: unify some more trivial include/asm-x86/ 32/64 variants
2007-10-17 20:17:10 +02:00
therm_throt.h
thread_info.h
thread_info_32.h
remove __attribute_used__
2008-01-28 23:21:18 +01:00
thread_info_64.h
x86 vDSO: ia32 sysenter_return
2008-01-30 13:30:43 +01:00
time.h
x86: isolate the rtc code for sharing
2008-01-30 13:30:26 +01:00
timer.h
x86: scale cyc_2_nsec according to CPU frequency
2008-01-30 13:30:06 +01:00
timex.h
x86: unify timex.h variants
2007-10-12 23:04:23 +02:00
tlb.h
x86: unify include/asm/tlb_32/64.h
2007-10-17 20:26:18 +02:00
tlbflush.h
x86: merge tlbflush.h variants
2008-01-30 13:30:35 +01:00
topology.h
x86: merge topology.h variants
2008-01-30 13:30:38 +01:00
tsc.h
x86: move tsc related declarations
2008-01-30 13:30:18 +01:00
types.h
x86: unify include/asm/types_32/64.h
2007-10-17 20:32:07 +02:00
uaccess.h
uaccess_32.h
uaccess_64.h
ucontext.h
x86: unify some more trivial include/asm-x86/ 32/64 variants
2007-10-17 20:17:10 +02:00
unaligned.h
x86: unify some more trivial include/asm-x86/ 32/64 variants
2007-10-17 20:17:10 +02:00
unistd.h
unistd_32.h
unistd_64.h
x86: cleanup 64bit unistd.h
2007-10-17 20:16:36 +02:00
unwind.h
x86: unify include/asm/unwind_32/64.h
2007-10-17 20:32:38 +02:00
user.h
user32.h
user_32.h
user_64.h
vdso.h
x86 vDSO: i386 vdso32
2008-01-30 13:30:42 +01:00
vga.h
vgtod.h
vic.h
vm86.h
vmi.h
vmi_time.h
voyager.h
vsyscall.h
i386/x8664: cleanup the shared hpet code
2007-10-12 23:04:23 +02:00
xor.h
xor_32.h
x86: remove more bogus filenames in comments.
2008-01-30 13:30:28 +01:00
xor_64.h
x86: remove more bogus filenames in comments.
2008-01-30 13:30:28 +01:00