aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/rcutree.c
diff options
context:
space:
mode:
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>2012-09-06 18:38:02 -0400
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>2012-09-23 10:41:56 -0400
commitb17c7035f37f47c7f7cb08a5555ab2aebfa31f91 (patch)
tree995c37771f64470dda04e631a8223e74d6713b0a /kernel/rcutree.c
parent4dbd6bb38dd1cbfa5cb21e56e51dffc74aa20038 (diff)
rcu: Shrink RCU based on number of CPUs
Currently, rcu_init_geometry() only reshapes RCU's combining trees if the leaf fanout is changed at boot time. This means that by default, kernels compiled with (say) NR_CPUS=4096 will keep oversized data structures, even when running on systems with (say) four CPUs. This commit therefore checks to see if the maximum number of CPUs on the actual running system (nr_cpu_ids) differs from NR_CPUS, and if so reshapes the combining trees accordingly. Reported-by: Mike Galbraith <efault@gmx.de> Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Diffstat (limited to 'kernel/rcutree.c')
-rw-r--r--kernel/rcutree.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/kernel/rcutree.c b/kernel/rcutree.c
index 8b9496fee235..b703989148e4 100644
--- a/kernel/rcutree.c
+++ b/kernel/rcutree.c
@@ -2821,7 +2821,8 @@ static void __init rcu_init_geometry(void)
2821 int rcu_capacity[MAX_RCU_LVLS + 1]; 2821 int rcu_capacity[MAX_RCU_LVLS + 1];
2822 2822
2823 /* If the compile-time values are accurate, just leave. */ 2823 /* If the compile-time values are accurate, just leave. */
2824 if (rcu_fanout_leaf == CONFIG_RCU_FANOUT_LEAF) 2824 if (rcu_fanout_leaf == CONFIG_RCU_FANOUT_LEAF &&
2825 nr_cpu_ids == NR_CPUS)
2825 return; 2826 return;
2826 2827
2827 /* 2828 /*