2018-06-24 19:36:00

by Joel Fernandes

[permalink] [raw]
Subject: [RFC] doc: Improve rcu_dynticks::dynticks documentation

From: "Joel Fernandes (Google)" <[email protected]>

The very useful RCU Data-Structures describes that the dynticks counter
of the rcu_dynticks data structure is incremented when we transitions to
or from dynticks-idle mode. However it doesn't mention that it is also
incremented due to transitions to and from user mode which for dynticks
purposes is an extended quiescent state.

I found this with tracing calls to rcu_dynticks_eqs_enter which can also
happen from rcu_user_enter. Lets add this information to the
Data-Structures document.

Signed-off-by: Joel Fernandes (Google) <[email protected]>
---
.../RCU/Design/Data-Structures/Data-Structures.html | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/Documentation/RCU/Design/Data-Structures/Data-Structures.html b/Documentation/RCU/Design/Data-Structures/Data-Structures.html
index f5120a00f511..50be87e59937 100644
--- a/Documentation/RCU/Design/Data-Structures/Data-Structures.html
+++ b/Documentation/RCU/Design/Data-Structures/Data-Structures.html
@@ -1227,9 +1227,11 @@ to overflow the counter, this approach corrects the
CPU enters the idle loop from process context.

</p><p>The <tt>-&gt;dynticks</tt> field counts the corresponding
-CPU's transitions to and from dyntick-idle mode, so that this counter
-has an even value when the CPU is in dyntick-idle mode and an odd
-value otherwise.
+CPU's transitions to and from either dyntick-idle or user mode, so
+that this counter has an even value when the CPU is in dyntick-idle
+mode or user mode and an odd value otherwise. The transitions to/from
+user mode need to be counted for user mode adaptive-ticks support
+(see timers/NO_HZ.txt).

</p><p>The <tt>-&gt;rcu_need_heavy_qs</tt> field is used
to record the fact that the RCU core code would really like to
--
2.18.0.rc2.346.g013aa6912e-goog



2018-06-25 04:08:13

by Paul E. McKenney

[permalink] [raw]
Subject: Re: [RFC] doc: Improve rcu_dynticks::dynticks documentation

On Sun, Jun 24, 2018 at 12:34:51PM -0700, Joel Fernandes wrote:
> From: "Joel Fernandes (Google)" <[email protected]>
>
> The very useful RCU Data-Structures describes that the dynticks counter
> of the rcu_dynticks data structure is incremented when we transitions to
> or from dynticks-idle mode. However it doesn't mention that it is also
> incremented due to transitions to and from user mode which for dynticks
> purposes is an extended quiescent state.
>
> I found this with tracing calls to rcu_dynticks_eqs_enter which can also
> happen from rcu_user_enter. Lets add this information to the
> Data-Structures document.
>
> Signed-off-by: Joel Fernandes (Google) <[email protected]>

Good addition, queued, thank you!

Thanx, Paul

> ---
> .../RCU/Design/Data-Structures/Data-Structures.html | 8 +++++---
> 1 file changed, 5 insertions(+), 3 deletions(-)
>
> diff --git a/Documentation/RCU/Design/Data-Structures/Data-Structures.html b/Documentation/RCU/Design/Data-Structures/Data-Structures.html
> index f5120a00f511..50be87e59937 100644
> --- a/Documentation/RCU/Design/Data-Structures/Data-Structures.html
> +++ b/Documentation/RCU/Design/Data-Structures/Data-Structures.html
> @@ -1227,9 +1227,11 @@ to overflow the counter, this approach corrects the
> CPU enters the idle loop from process context.
>
> </p><p>The <tt>-&gt;dynticks</tt> field counts the corresponding
> -CPU's transitions to and from dyntick-idle mode, so that this counter
> -has an even value when the CPU is in dyntick-idle mode and an odd
> -value otherwise.
> +CPU's transitions to and from either dyntick-idle or user mode, so
> +that this counter has an even value when the CPU is in dyntick-idle
> +mode or user mode and an odd value otherwise. The transitions to/from
> +user mode need to be counted for user mode adaptive-ticks support
> +(see timers/NO_HZ.txt).
>
> </p><p>The <tt>-&gt;rcu_need_heavy_qs</tt> field is used
> to record the fact that the RCU core code would really like to
> --
> 2.18.0.rc2.346.g013aa6912e-goog
>