Re: [PATCH tip/core/rcu 2/4] rcu: enable fourth level of TREE_RCUhierarchy

From: Josh Triplett
Date: Wed Dec 02 2009 - 18:26:02 EST


On Wed, Dec 02, 2009 at 12:10:14PM -0800, Paul E. McKenney wrote:
> From: Paul E. McKenney <paulmck@xxxxxxxxxxxxxxxxxx>
>
> Enable a fourth level of rcu_node hierarchy for TREE_RCU and
> TREE_PREEMPT_RCU. This is for stress-testing and experiemental
> purposes only, although in theory this would enable 16,777,216 CPUs
> on 64-bit systems, though only 1,048,576 CPUs on 32-bit systems.
> Normal experimental use of this fourth level will normally set
> CONFIG_RCU_FANOUT=2, requiring a 16-CPU system, though the more
> adventurous (and more fortunate) experimenters may wish to chose
> CONFIG_RCU_FANOUT=3 for 81-CPU systems or even CONFIG_RCU_FANOUT=4 for
> 256-CPU systems.
>
> Signed-off-by: Paul E. McKenney <paulmck@xxxxxxxxxxxxxxxxxx>

I like this idea in general, but I have one suggestion on your boot-up
message:

> --- a/kernel/rcutree.c
> +++ b/kernel/rcutree.c
[...]
> @@ -1877,6 +1878,9 @@ void __init rcu_init(void)
> #ifdef CONFIG_RCU_CPU_STALL_DETECTOR
> printk(KERN_INFO "RCU-based detection of stalled CPUs is enabled.\n");
> #endif /* #ifdef CONFIG_RCU_CPU_STALL_DETECTOR */
> +#if NUM_RCU_LVL_4 != 0
> + printk(KERN_INFO "Experimental four-level hierarchy is enabled.\n");
> +#endif /* #if NUM_RCU_LVL_4 != 0 */

Rather than printing a message when people use the four-level hierarchy,
how about just printing a message any time someone has set
CONFIG_RCU_FANOUT manually rather than automatically, and including
NR_CPUS in that message? That should only occur when testing or when
trying to do NUMA optimization, and either way it seems worth noting.

Either way the change seems fine to me. With or without that suggested
change:

Acked-by: Josh Triplett <josh@xxxxxxxxxxxxxxxx>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/