Skip to content

x86: Reduce memory and intra-node effects with large count NR_CPUs V2

[email protected] linux-mm lkml 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest10 patches 4 repliesIn review

V1->V2 from the cover letter

- Remove extraneous casts
- Add comment about node memory < NODE_MIN_SIZE
- changed pxm_to_node_map to u16
- changed memnode map entries to u16
- Fix !NUMA builds with '#ifdef CONFIG_NUMA"
- Add slight optimization to apic_is_clustered_box()
---

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/10x86: Change size of APICIDs from u8 to u16 V2arch/x86/kernel/genapic_64.c arch/x86/kernel/mpparse_64.c arch/x86/kernel/smpboot_64.c +4 more+34 -260 replies
2/10x86: Change size of node ids from u8 to u16 V2arch/x86/mm/numa_64.c arch/x86/mm/srat_64.c drivers/acpi/numa.c +3 more+13 -102 replies
3/10x86: Change NR_CPUS arrays in powernow-k8 V2arch/x86/kernel/cpu/cpufreq/powernow-k8.c+6 -60 replies
4/10x86: Change NR_CPUS arrays in intel_cacheinfo V2arch/x86/kernel/cpu/intel_cacheinfo.c+29 -260 replies
5/10x86: Change NR_CPUS arrays in smpboot_64 V2arch/x86/kernel/smpboot_64.c+11 -10 replies
6/10x86: Change NR_CPUS arrays in topology V2arch/x86/kernel/topology.c include/asm-x86/cpu.h+5 -50 replies
7/10x86: Cleanup x86_cpu_to_apicid references V2arch/x86/kernel/genapic_64.c arch/x86/kernel/mpparse_64.c arch/x86/kernel/setup_64.c +4 more+21 -350 replies
8/10x86: Change NR_CPUS arrays in numa_64 V2arch/x86/kernel/setup_64.c arch/x86/kernel/smpboot_64.c arch/x86/mm/numa_64.c +3 more+44 -102 replies
9/10x86: Change NR_CPUS arrays in acpi-cpufreq V2arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c+13 -120 replies
10/10x86: Change bios_cpu_apicid to percpu data variable V2arch/x86/kernel/apic_64.c arch/x86/kernel/mpparse_64.c arch/x86/kernel/setup_64.c +2 more+33 -80 replies

Reviews trailers per patch

All 10 patches have a Reviewed-by or Acked-by of their own; the series has one for all of them.

PatchChristoph Lameter
SeriesR-b
1/10R-b
2/10R-b
3/10R-b
4/10R-b
5/10R-b
6/10R-b
7/10R-b
8/10R-b
9/10R-b
10/10R-b

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.

Read the v1 thread

Cover letter [PATCH 00/10] x86: Reduce memory and intra-node effects with large count NR_CPUs V2

This patchset addresses the kernel bloat that occurs when NR_CPUS is increased. The memory numbers below are with NR_CPUS = 1024 which I've been testing (4 and 32 real processors, the rest "possible" using the additional_cpus start option.) These changes are all specific to the x86 architecture, non-arch specific changes will follow.

Based on 2.6.24-rc6-mm1

---
V1->V2:
- Remove extraneous casts
- Add comment about node memory < NODE_MIN_SIZE
- changed pxm_to_node_map to u16
- changed memnode map entries to u16
- Fix !NUMA builds with '#ifdef CONFIG_NUMA"
- Add slight optimization to apic_is_clustered_box()
---

The following columns are using the default x86_64 config with no modules. 32cpus is the default NR_CPUS, 1kcpus-before has NR_CPUS = 1024, and 1kcpus-after is after applying this patch.

As noticeable below there's still plenty of room for improvement... ;-)

32cpus 1kcpus-before 1kcpus-after

       228 .altinstr_repl 	  +0 .altinstr_repl 	    +0 .altinstr_repl
      1219 .altinstructio 	  +0 .altinstructio 	    +0 .altinstructio
    717512 .bss		    +1542784 .bss	       -147456 .bss
     61374 .comment	  	  +0 .comment	    	    +0 .comment
	16 .con_initcall. 	  +0 .con_initcall. 	    +0 .con_initcall.
    425256 .data	      +20224 .data	    	 -1024 .data
    178688 .data.cachelin  +12898304 .data.cachelin 	    +0 .data.cachelin
      8192 .data.init_tas 	  +0 .data.init_tas 	    +0 .data.init_tas
      4096 .data.page_ali 	  +0 .data.page_ali 	    +0 .data.page_ali
     27008 .data.percpu	     +128768 .data.percpu   	  +128 .data.percpu
     43904 .data.read_mos   +8707872 .data.read_mos 	 -4096 .data.read_mos
	 4 .data_nosave	  	  +0 .data_nosave   	    +0 .data_nosave
      5141 .exit.text	  	  +9 .exit.text	    	    -1 .exit.text
    138480 .init.data	  	+992 .init.data	    	 +3616 .init.data
       133 .init.ramfs	  	  +0 .init.ramfs    	    +1 .init.ramfs
      3192 .init.setup	  	  +0 .init.setup    	    +0 .init.setup
    159754 .init.text	  	+891 .init.text	    	   +13 .init.text
      2288 .initcall.init 	  +0 .initcall.init 	    +0 .initcall.init
	 8 .jiffies	  	  +0 .jiffies	    	    +0 .jiffies
      4512 .pci_fixup	  	  +0 .pci_fixup	    	    +0 .pci_fixup
   1314438 .rodata	       +1312 .rodata	    	  -552 .rodata
     36552 .smp_locks	  	+256 .smp_locks	    	    +0 .smp_locks
   3971848 .text	      +12992 .text	    	 +1781 .text
      3368 .vdso	  	  +0 .vdso	    	    +0 .vdso
	 4 .vgetcpu_mode  	  +0 .vgetcpu_mode  	    +0 .vgetcpu_mode
       218 .vsyscall_0	  	  +0 .vsyscall_0    	    +0 .vsyscall_0
	52 .vsyscall_1	  	  +0 .vsyscall_1    	    +0 .vsyscall_1
	91 .vsyscall_2	  	  +0 .vsyscall_2    	    +0 .vsyscall_2
	 8 .vsyscall_3	  	  +0 .vsyscall_3    	    +0 .vsyscall_3
	54 .vsyscall_fn	  	  +0 .vsyscall_fn   	    +0 .vsyscall_fn
	80 .vsyscall_gtod 	  +0 .vsyscall_gtod 	    +0 .vsyscall_gtod
     39480 __bug_table	  	  +0 __bug_table    	    +0 __bug_table
     16320 __ex_table	  	  +0 __ex_table	    	    +0 __ex_table
      9160 __param	  	  +0 __param	    	    +0 __param

7172678 Total +23314404 Total -147590 Total

Signature · 5 lines
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to [email protected].  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>