Dave Hansen wrote: [Wed Jun 29 2005, 03:13:04PM EDT] > This is a quick and dirty release. We need to figure out where > SPARSEMEM_EXTREME should be the only option available, and we should > dump the normal option. > > I expected SPARSEMEM_EXTREME to be slower, but I can't produce any real > evidence from any benchmarks that it is. It bloats .text by about 7k > out of 2.7MB, which I think I can live with. > > This patch set makes SPARSEMEM_EXTREME a user-configurable option, right > next to the SPARSEMEM "choice". Can everybody give it a run, on and > off, and see if it makes any kind of performance impact? > > http://sr71.net/patches/2.6.13/ > > -- Dave > This was all quick but reasonably reliable results and strange. Well I've got a strange issue here. It boots fine with kgdb but without hangs early bringing up the 3rd processor. I haven't tried the simple things like plain 2.6.13-rc1. Any how the results below are for EXTREME and !EXTREME with kgdb. It's only one reaim run per configuration but there aren't any glaring differences. The attached patch below is required for EXTREME because memory_present uses the bootmem allocator. There won't be further progress here until Tuesday. bob Signed-off-by: Dave Hansen Index: linux-2.6.13/arch/x86_64/kernel/setup.c =================================================================== --- linux-2.6.13.orig/arch/x86_64/kernel/setup.c 2005-08-28 16:41:01.000000000 -0700 +++ linux-2.6.13/arch/x86_64/kernel/setup.c 2005-08-30 11:58:41.000000000 -0700 @@ -652,8 +652,6 @@ void __init setup_arch(char **cmdline_p) } #endif - sparse_init(); - paging_init(); check_ioapic(); Index: linux-2.6.13/arch/x86_64/mm/numa.c =================================================================== --- linux-2.6.13.orig/arch/x86_64/mm/numa.c 2005-08-28 16:41:01.000000000 -0700 +++ linux-2.6.13/arch/x86_64/mm/numa.c 2005-08-30 11:58:13.000000000 -0700 @@ -89,7 +89,6 @@ void __init setup_node_bootmem(int nodei start_pfn = start >> PAGE_SHIFT; end_pfn = end >> PAGE_SHIFT; - memory_present(nodeid, start_pfn, end_pfn); nodedata_phys = find_e820_area(start, end, pgdat_size); if (nodedata_phys == -1L) panic("Cannot find memory pgdat in node %d\n", nodeid); @@ -279,9 +278,14 @@ unsigned long __init numa_free_all_bootm void __init paging_init(void) { int i; - for_each_online_node(i) { + + for_each_online_node(i) + memory_present(node_start_pfn(i), node_end_pfn(i)); + + sparse_init(); + + for_each_online_node(i) setup_node_zones(i); - } } /* [numa=off] */