Re: [PATCH RFC] Documentation: RCU: Clarify comment about fanout

From: Joel Fernandes
Date: Sat Sep 22 2018 - 04:11:17 EST


On Fri, Sep 21, 2018 at 9:14 PM Paul E. McKenney <paulmck@xxxxxxxxxxxxx> wrote:
>
> On Fri, Sep 21, 2018 at 06:31:53PM -0400, Joel Fernandes (Google) wrote:
> > RCU Data-Structures document describes a trick to test RCU with small
> > number of CPUs but with a larger tree. It wasn't immediately clear how
> > the document arrived at 16 CPUs which also requires setting the
> > FANOUT_LEAF to 2 instead of the default of 16. Clarify that.
> >
> > Signed-off-by: Joel Fernandes (Google) <joel@xxxxxxxxxxxxxxxxx>
>
> Good catch, applied, thank you! You know, those two Kconfig options
> are so closely linked in my mind that I doubt if I would ever have
> noticed this issue. So good show!

Thanks!

> I of course could not resist doing a bit of editing. Could you please
> check the following to make sure that I didn't mess something up?

Yes, the edit looks good and improved the changes ;-)

I have a few more as well, I'll send them out soon.

thanks!

- Joel


>
> Thanx, Paul
>
> ------------------------------------------------------------------------
>
> commit 9870c5b0f7b41a7b6085c20c22b320681800dabc
> Author: Joel Fernandes (Google) <joel@xxxxxxxxxxxxxxxxx>
> Date: Fri Sep 21 18:31:53 2018 -0400
>
> doc: Clarify RCU data-structure comment about rcu_tree fanout
>
> RCU Data-Structures document describes a trick to test RCU with small
> number of CPUs but with a taller tree. It wasn't immediately clear how
> the document arrived at 16 CPUs which also requires setting the
> FANOUT_LEAF to 2 instead of the default of 16. This commit therefore
> provides the needed clarification.
>
> Signed-off-by: Joel Fernandes (Google) <joel@xxxxxxxxxxxxxxxxx>
> Signed-off-by: Paul E. McKenney <paulmck@xxxxxxxxxxxxx>
>
> diff --git a/Documentation/RCU/Design/Data-Structures/Data-Structures.html b/Documentation/RCU/Design/Data-Structures/Data-Structures.html
> index 1d2051c0c3fc..476b1ac38e4c 100644
> --- a/Documentation/RCU/Design/Data-Structures/Data-Structures.html
> +++ b/Documentation/RCU/Design/Data-Structures/Data-Structures.html
> @@ -127,9 +127,11 @@ CPUs, RCU would configure the <tt>rcu_node</tt> tree as follows:
> </p><p>RCU currently permits up to a four-level tree, which on a 64-bit system
> accommodates up to 4,194,304 CPUs, though only a mere 524,288 CPUs for
> 32-bit systems.
> -On the other hand, you can set <tt>CONFIG_RCU_FANOUT</tt> to be
> -as small as 2 if you wish, which would permit only 16 CPUs, which
> -is useful for testing.
> +On the other hand, you can set both <tt>CONFIG_RCU_FANOUT</tt> and
> +<tt>CONFIG_RCU_FANOUT_LEAF</tt> to be as small as 2, which would result
> +in a 16-CPU test using a 4-level tree.
> +This can be useful for testing large-system capabilities on small test
> +machines.
>
> </p><p>This multi-level combining tree allows us to get most of the
> performance and scalability
>