linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH rcu 0/3] Documentation updates for v5.20
@ 2022-06-20 22:17 Paul E. McKenney
  2022-06-20 22:17 ` [PATCH rcu 1/3] rcutorture: Update rcutorture.fwd_progress help text Paul E. McKenney
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Paul E. McKenney @ 2022-06-20 22:17 UTC (permalink / raw)
  To: rcu; +Cc: linux-kernel, kernel-team, rostedt

Hello!

This series contains a few documentation updates:

1.	Update rcutorture.fwd_progress help text.

2.	Document the rcutree.rcu_divisor kernel boot parameter.

3.	Document rcutree.nocb_nobypass_lim_per_jiffy kernel parameter.

						Thanx, Paul

------------------------------------------------------------------------

 Documentation/admin-guide/kernel-parameters.txt   |   13 +++++
 b/Documentation/admin-guide/kernel-parameters.txt |   15 ++++++
 b/kernel/rcu/rcutorture.c                         |   53 +++++++---------------
 3 files changed, 46 insertions(+), 35 deletions(-)

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH rcu 1/3] rcutorture: Update rcutorture.fwd_progress help text
  2022-06-20 22:17 [PATCH rcu 0/3] Documentation updates for v5.20 Paul E. McKenney
@ 2022-06-20 22:17 ` Paul E. McKenney
  2022-06-21  5:10   ` Neeraj Upadhyay
  2022-06-20 22:17 ` [PATCH rcu 2/3] doc: Document the rcutree.rcu_divisor kernel boot parameter Paul E. McKenney
  2022-06-20 22:17 ` [PATCH rcu 3/3] doc: Document rcutree.nocb_nobypass_lim_per_jiffy kernel parameter Paul E. McKenney
  2 siblings, 1 reply; 8+ messages in thread
From: Paul E. McKenney @ 2022-06-20 22:17 UTC (permalink / raw)
  To: rcu; +Cc: linux-kernel, kernel-team, rostedt, Paul E. McKenney

This commit updates the rcutorture.fwd_progress help text to say that
it is the number of forward-progress kthreads to spawn rather than the
old enable/disable functionality.  While in the area, make the list of
torture-test parameters easier to read by taking advantage of 100 columns.

Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
---
 kernel/rcu/rcutorture.c | 53 ++++++++++++++---------------------------
 1 file changed, 18 insertions(+), 35 deletions(-)

diff --git a/kernel/rcu/rcutorture.c b/kernel/rcu/rcutorture.c
index 7120165a93426..6f47d1490c4f5 100644
--- a/kernel/rcu/rcutorture.c
+++ b/kernel/rcu/rcutorture.c
@@ -75,62 +75,45 @@ MODULE_AUTHOR("Paul E. McKenney <paulmck@linux.ibm.com> and Josh Triplett <josh@
 
 torture_param(int, extendables, RCUTORTURE_MAX_EXTEND,
 	      "Extend readers by disabling bh (1), irqs (2), or preempt (4)");
-torture_param(int, fqs_duration, 0,
-	      "Duration of fqs bursts (us), 0 to disable");
+torture_param(int, fqs_duration, 0, "Duration of fqs bursts (us), 0 to disable");
 torture_param(int, fqs_holdoff, 0, "Holdoff time within fqs bursts (us)");
 torture_param(int, fqs_stutter, 3, "Wait time between fqs bursts (s)");
-torture_param(int, fwd_progress, 1, "Test grace-period forward progress");
+torture_param(int, fwd_progress, 1, "Number of grace-period forward progress tasks (0 to disable)");
 torture_param(int, fwd_progress_div, 4, "Fraction of CPU stall to wait");
-torture_param(int, fwd_progress_holdoff, 60,
-	      "Time between forward-progress tests (s)");
-torture_param(bool, fwd_progress_need_resched, 1,
-	      "Hide cond_resched() behind need_resched()");
+torture_param(int, fwd_progress_holdoff, 60, "Time between forward-progress tests (s)");
+torture_param(bool, fwd_progress_need_resched, 1, "Hide cond_resched() behind need_resched()");
 torture_param(bool, gp_cond, false, "Use conditional/async GP wait primitives");
 torture_param(bool, gp_exp, false, "Use expedited GP wait primitives");
-torture_param(bool, gp_normal, false,
-	     "Use normal (non-expedited) GP wait primitives");
+torture_param(bool, gp_normal, false, "Use normal (non-expedited) GP wait primitives");
 torture_param(bool, gp_poll, false, "Use polling GP wait primitives");
 torture_param(bool, gp_sync, false, "Use synchronous GP wait primitives");
 torture_param(int, irqreader, 1, "Allow RCU readers from irq handlers");
 torture_param(int, leakpointer, 0, "Leak pointer dereferences from readers");
-torture_param(int, n_barrier_cbs, 0,
-	     "# of callbacks/kthreads for barrier testing");
+torture_param(int, n_barrier_cbs, 0, "# of callbacks/kthreads for barrier testing");
 torture_param(int, nfakewriters, 4, "Number of RCU fake writer threads");
 torture_param(int, nreaders, -1, "Number of RCU reader threads");
-torture_param(int, object_debug, 0,
-	     "Enable debug-object double call_rcu() testing");
+torture_param(int, object_debug, 0, "Enable debug-object double call_rcu() testing");
 torture_param(int, onoff_holdoff, 0, "Time after boot before CPU hotplugs (s)");
-torture_param(int, onoff_interval, 0,
-	     "Time between CPU hotplugs (jiffies), 0=disable");
+torture_param(int, onoff_interval, 0, "Time between CPU hotplugs (jiffies), 0=disable");
 torture_param(int, nocbs_nthreads, 0, "Number of NOCB toggle threads, 0 to disable");
 torture_param(int, nocbs_toggle, 1000, "Time between toggling nocb state (ms)");
-torture_param(int, read_exit_delay, 13,
-	      "Delay between read-then-exit episodes (s)");
-torture_param(int, read_exit_burst, 16,
-	      "# of read-then-exit bursts per episode, zero to disable");
+torture_param(int, read_exit_delay, 13, "Delay between read-then-exit episodes (s)");
+torture_param(int, read_exit_burst, 16, "# of read-then-exit bursts per episode, zero to disable");
 torture_param(int, shuffle_interval, 3, "Number of seconds between shuffles");
 torture_param(int, shutdown_secs, 0, "Shutdown time (s), <= zero to disable.");
 torture_param(int, stall_cpu, 0, "Stall duration (s), zero to disable.");
-torture_param(int, stall_cpu_holdoff, 10,
-	     "Time to wait before starting stall (s).");
-torture_param(bool, stall_no_softlockup, false,
-	     "Avoid softlockup warning during cpu stall.");
+torture_param(int, stall_cpu_holdoff, 10, "Time to wait before starting stall (s).");
+torture_param(bool, stall_no_softlockup, false, "Avoid softlockup warning during cpu stall.");
 torture_param(int, stall_cpu_irqsoff, 0, "Disable interrupts while stalling.");
 torture_param(int, stall_cpu_block, 0, "Sleep while stalling.");
-torture_param(int, stall_gp_kthread, 0,
-	      "Grace-period kthread stall duration (s).");
-torture_param(int, stat_interval, 60,
-	     "Number of seconds between stats printk()s");
+torture_param(int, stall_gp_kthread, 0, "Grace-period kthread stall duration (s).");
+torture_param(int, stat_interval, 60, "Number of seconds between stats printk()s");
 torture_param(int, stutter, 5, "Number of seconds to run/halt test");
 torture_param(int, test_boost, 1, "Test RCU prio boost: 0=no, 1=maybe, 2=yes.");
-torture_param(int, test_boost_duration, 4,
-	     "Duration of each boost test, seconds.");
-torture_param(int, test_boost_interval, 7,
-	     "Interval between boost tests, seconds.");
-torture_param(bool, test_no_idle_hz, true,
-	     "Test support for tickless idle CPUs");
-torture_param(int, verbose, 1,
-	     "Enable verbose debugging printk()s");
+torture_param(int, test_boost_duration, 4, "Duration of each boost test, seconds.");
+torture_param(int, test_boost_interval, 7, "Interval between boost tests, seconds.");
+torture_param(bool, test_no_idle_hz, true, "Test support for tickless idle CPUs");
+torture_param(int, verbose, 1, "Enable verbose debugging printk()s");
 
 static char *torture_type = "rcu";
 module_param(torture_type, charp, 0444);
-- 
2.31.1.189.g2e36527f23


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH rcu 2/3] doc: Document the rcutree.rcu_divisor kernel boot parameter
  2022-06-20 22:17 [PATCH rcu 0/3] Documentation updates for v5.20 Paul E. McKenney
  2022-06-20 22:17 ` [PATCH rcu 1/3] rcutorture: Update rcutorture.fwd_progress help text Paul E. McKenney
@ 2022-06-20 22:17 ` Paul E. McKenney
  2022-06-21  5:10   ` Neeraj Upadhyay
  2022-06-20 22:17 ` [PATCH rcu 3/3] doc: Document rcutree.nocb_nobypass_lim_per_jiffy kernel parameter Paul E. McKenney
  2 siblings, 1 reply; 8+ messages in thread
From: Paul E. McKenney @ 2022-06-20 22:17 UTC (permalink / raw)
  To: rcu; +Cc: linux-kernel, kernel-team, rostedt, Paul E. McKenney, Eric Dumazet

This commit adds kernel-parameters.txt documentation for the
rcutree.rcu_divisor kernel boot parameter, which controls the softirq
callback-invocation batch limit.

Cc: Eric Dumazet <edumazet@google.com>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
---
 Documentation/admin-guide/kernel-parameters.txt | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
index 2522b11e593f2..bdf431bdbfdc4 100644
--- a/Documentation/admin-guide/kernel-parameters.txt
+++ b/Documentation/admin-guide/kernel-parameters.txt
@@ -4666,6 +4666,21 @@
 			When RCU_NOCB_CPU is set, also adjust the
 			priority of NOCB callback kthreads.
 
+	rcutree.rcu_divisor= [KNL]
+			Set the shift-right count to use to compute
+			the callback-invocation batch limit bl from
+			the number of callbacks queued on this CPU.
+			The result will be bounded below by the value of
+			the rcutree.blimit kernel parameter.  Every bl
+			callbacks, the softirq handler will exit in
+			order to allow the CPU to do other work.
+
+			Please note that this callback-invocation batch
+			limit applies only to non-offloaded callback
+			invocation.  Offloaded callbacks are instead
+			invoked in the context of an rcuoc kthread, which
+			scheduler will preempt as it does any other task.
+
 	rcutree.rcu_nocb_gp_stride= [KNL]
 			Set the number of NOCB callback kthreads in
 			each group, which defaults to the square root
-- 
2.31.1.189.g2e36527f23


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH rcu 3/3] doc: Document rcutree.nocb_nobypass_lim_per_jiffy kernel parameter
  2022-06-20 22:17 [PATCH rcu 0/3] Documentation updates for v5.20 Paul E. McKenney
  2022-06-20 22:17 ` [PATCH rcu 1/3] rcutorture: Update rcutorture.fwd_progress help text Paul E. McKenney
  2022-06-20 22:17 ` [PATCH rcu 2/3] doc: Document the rcutree.rcu_divisor kernel boot parameter Paul E. McKenney
@ 2022-06-20 22:17 ` Paul E. McKenney
  2022-06-21  5:11   ` Neeraj Upadhyay
  2 siblings, 1 reply; 8+ messages in thread
From: Paul E. McKenney @ 2022-06-20 22:17 UTC (permalink / raw)
  To: rcu
  Cc: linux-kernel, kernel-team, rostedt, Paul E. McKenney,
	Frederic Weisbecker, Uladzislau Rezki

This commit provides documentation for the kernel parameter controlling
RCU's handling of callback floods on offloaded (rcu_nocbs) CPUs.
This parameter might be obscure, but it is always there when you need it.

Reported-by: Frederic Weisbecker <frederic@kernel.org>
Reported-by: Uladzislau Rezki <urezki@gmail.com>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
---
 Documentation/admin-guide/kernel-parameters.txt | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
index bdf431bdbfdc4..a30890141b1a5 100644
--- a/Documentation/admin-guide/kernel-parameters.txt
+++ b/Documentation/admin-guide/kernel-parameters.txt
@@ -4681,6 +4681,19 @@
 			invoked in the context of an rcuoc kthread, which
 			scheduler will preempt as it does any other task.
 
+	rcutree.nocb_nobypass_lim_per_jiffy= [KNL]
+			On callback-offloaded (rcu_nocbs) CPUs,
+			RCU reduces the lock contention that would
+			otherwise be caused callback floods through
+			use of the ->nocb_bypass list.	However, in the
+			common non-flooded case, RCU queues directly to
+			the main ->cblist in order to avoid the extra
+			overhead of the ->nocb_bypass list and its lock.
+			But if there are too many callbacks queued during
+			a single jiffy, RCU pre-queues the callbacks into
+			the ->nocb_bypass queue.  The definition of "too
+			many" is supplied by this kernel boot parameter.
+
 	rcutree.rcu_nocb_gp_stride= [KNL]
 			Set the number of NOCB callback kthreads in
 			each group, which defaults to the square root
-- 
2.31.1.189.g2e36527f23


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH rcu 1/3] rcutorture: Update rcutorture.fwd_progress help text
  2022-06-20 22:17 ` [PATCH rcu 1/3] rcutorture: Update rcutorture.fwd_progress help text Paul E. McKenney
@ 2022-06-21  5:10   ` Neeraj Upadhyay
  0 siblings, 0 replies; 8+ messages in thread
From: Neeraj Upadhyay @ 2022-06-21  5:10 UTC (permalink / raw)
  To: Paul E. McKenney, rcu; +Cc: linux-kernel, kernel-team, rostedt



On 6/21/2022 3:47 AM, Paul E. McKenney wrote:
> This commit updates the rcutorture.fwd_progress help text to say that
> it is the number of forward-progress kthreads to spawn rather than the
> old enable/disable functionality.  While in the area, make the list of
> torture-test parameters easier to read by taking advantage of 100 columns.
> 
> Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
> ---

Reviewed-by: Neeraj Upadhyay <quic_neeraju@quicinc.com>

>   kernel/rcu/rcutorture.c | 53 ++++++++++++++---------------------------
>   1 file changed, 18 insertions(+), 35 deletions(-)
> 
> diff --git a/kernel/rcu/rcutorture.c b/kernel/rcu/rcutorture.c
> index 7120165a93426..6f47d1490c4f5 100644
> --- a/kernel/rcu/rcutorture.c
> +++ b/kernel/rcu/rcutorture.c
> @@ -75,62 +75,45 @@ MODULE_AUTHOR("Paul E. McKenney <paulmck@linux.ibm.com> and Josh Triplett <josh@
>   
>   torture_param(int, extendables, RCUTORTURE_MAX_EXTEND,
>   	      "Extend readers by disabling bh (1), irqs (2), or preempt (4)");
> -torture_param(int, fqs_duration, 0,
> -	      "Duration of fqs bursts (us), 0 to disable");
> +torture_param(int, fqs_duration, 0, "Duration of fqs bursts (us), 0 to disable");
>   torture_param(int, fqs_holdoff, 0, "Holdoff time within fqs bursts (us)");
>   torture_param(int, fqs_stutter, 3, "Wait time between fqs bursts (s)");
> -torture_param(int, fwd_progress, 1, "Test grace-period forward progress");
> +torture_param(int, fwd_progress, 1, "Number of grace-period forward progress tasks (0 to disable)");
>   torture_param(int, fwd_progress_div, 4, "Fraction of CPU stall to wait");
> -torture_param(int, fwd_progress_holdoff, 60,
> -	      "Time between forward-progress tests (s)");
> -torture_param(bool, fwd_progress_need_resched, 1,
> -	      "Hide cond_resched() behind need_resched()");
> +torture_param(int, fwd_progress_holdoff, 60, "Time between forward-progress tests (s)");
> +torture_param(bool, fwd_progress_need_resched, 1, "Hide cond_resched() behind need_resched()");
>   torture_param(bool, gp_cond, false, "Use conditional/async GP wait primitives");
>   torture_param(bool, gp_exp, false, "Use expedited GP wait primitives");
> -torture_param(bool, gp_normal, false,
> -	     "Use normal (non-expedited) GP wait primitives");
> +torture_param(bool, gp_normal, false, "Use normal (non-expedited) GP wait primitives");
>   torture_param(bool, gp_poll, false, "Use polling GP wait primitives");
>   torture_param(bool, gp_sync, false, "Use synchronous GP wait primitives");
>   torture_param(int, irqreader, 1, "Allow RCU readers from irq handlers");
>   torture_param(int, leakpointer, 0, "Leak pointer dereferences from readers");
> -torture_param(int, n_barrier_cbs, 0,
> -	     "# of callbacks/kthreads for barrier testing");
> +torture_param(int, n_barrier_cbs, 0, "# of callbacks/kthreads for barrier testing");
>   torture_param(int, nfakewriters, 4, "Number of RCU fake writer threads");
>   torture_param(int, nreaders, -1, "Number of RCU reader threads");
> -torture_param(int, object_debug, 0,
> -	     "Enable debug-object double call_rcu() testing");
> +torture_param(int, object_debug, 0, "Enable debug-object double call_rcu() testing");
>   torture_param(int, onoff_holdoff, 0, "Time after boot before CPU hotplugs (s)");
> -torture_param(int, onoff_interval, 0,
> -	     "Time between CPU hotplugs (jiffies), 0=disable");
> +torture_param(int, onoff_interval, 0, "Time between CPU hotplugs (jiffies), 0=disable");
>   torture_param(int, nocbs_nthreads, 0, "Number of NOCB toggle threads, 0 to disable");
>   torture_param(int, nocbs_toggle, 1000, "Time between toggling nocb state (ms)");
> -torture_param(int, read_exit_delay, 13,
> -	      "Delay between read-then-exit episodes (s)");
> -torture_param(int, read_exit_burst, 16,
> -	      "# of read-then-exit bursts per episode, zero to disable");
> +torture_param(int, read_exit_delay, 13, "Delay between read-then-exit episodes (s)");
> +torture_param(int, read_exit_burst, 16, "# of read-then-exit bursts per episode, zero to disable");
>   torture_param(int, shuffle_interval, 3, "Number of seconds between shuffles");
>   torture_param(int, shutdown_secs, 0, "Shutdown time (s), <= zero to disable.");
>   torture_param(int, stall_cpu, 0, "Stall duration (s), zero to disable.");
> -torture_param(int, stall_cpu_holdoff, 10,
> -	     "Time to wait before starting stall (s).");
> -torture_param(bool, stall_no_softlockup, false,
> -	     "Avoid softlockup warning during cpu stall.");
> +torture_param(int, stall_cpu_holdoff, 10, "Time to wait before starting stall (s).");
> +torture_param(bool, stall_no_softlockup, false, "Avoid softlockup warning during cpu stall.");
>   torture_param(int, stall_cpu_irqsoff, 0, "Disable interrupts while stalling.");
>   torture_param(int, stall_cpu_block, 0, "Sleep while stalling.");
> -torture_param(int, stall_gp_kthread, 0,
> -	      "Grace-period kthread stall duration (s).");
> -torture_param(int, stat_interval, 60,
> -	     "Number of seconds between stats printk()s");
> +torture_param(int, stall_gp_kthread, 0, "Grace-period kthread stall duration (s).");
> +torture_param(int, stat_interval, 60, "Number of seconds between stats printk()s");
>   torture_param(int, stutter, 5, "Number of seconds to run/halt test");
>   torture_param(int, test_boost, 1, "Test RCU prio boost: 0=no, 1=maybe, 2=yes.");
> -torture_param(int, test_boost_duration, 4,
> -	     "Duration of each boost test, seconds.");
> -torture_param(int, test_boost_interval, 7,
> -	     "Interval between boost tests, seconds.");
> -torture_param(bool, test_no_idle_hz, true,
> -	     "Test support for tickless idle CPUs");
> -torture_param(int, verbose, 1,
> -	     "Enable verbose debugging printk()s");
> +torture_param(int, test_boost_duration, 4, "Duration of each boost test, seconds.");
> +torture_param(int, test_boost_interval, 7, "Interval between boost tests, seconds.");
> +torture_param(bool, test_no_idle_hz, true, "Test support for tickless idle CPUs");
> +torture_param(int, verbose, 1, "Enable verbose debugging printk()s");
>   
>   static char *torture_type = "rcu";
>   module_param(torture_type, charp, 0444);

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH rcu 2/3] doc: Document the rcutree.rcu_divisor kernel boot parameter
  2022-06-20 22:17 ` [PATCH rcu 2/3] doc: Document the rcutree.rcu_divisor kernel boot parameter Paul E. McKenney
@ 2022-06-21  5:10   ` Neeraj Upadhyay
  0 siblings, 0 replies; 8+ messages in thread
From: Neeraj Upadhyay @ 2022-06-21  5:10 UTC (permalink / raw)
  To: Paul E. McKenney, rcu; +Cc: linux-kernel, kernel-team, rostedt, Eric Dumazet



On 6/21/2022 3:47 AM, Paul E. McKenney wrote:
> This commit adds kernel-parameters.txt documentation for the
> rcutree.rcu_divisor kernel boot parameter, which controls the softirq
> callback-invocation batch limit.
> 
> Cc: Eric Dumazet <edumazet@google.com>
> Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
> ---

Reviewed-by: Neeraj Upadhyay <quic_neeraju@quicinc.com>

>   Documentation/admin-guide/kernel-parameters.txt | 15 +++++++++++++++
>   1 file changed, 15 insertions(+)
> 
> diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
> index 2522b11e593f2..bdf431bdbfdc4 100644
> --- a/Documentation/admin-guide/kernel-parameters.txt
> +++ b/Documentation/admin-guide/kernel-parameters.txt
> @@ -4666,6 +4666,21 @@
>   			When RCU_NOCB_CPU is set, also adjust the
>   			priority of NOCB callback kthreads.
>   
> +	rcutree.rcu_divisor= [KNL]
> +			Set the shift-right count to use to compute
> +			the callback-invocation batch limit bl from
> +			the number of callbacks queued on this CPU.
> +			The result will be bounded below by the value of
> +			the rcutree.blimit kernel parameter.  Every bl
> +			callbacks, the softirq handler will exit in
> +			order to allow the CPU to do other work.
> +
> +			Please note that this callback-invocation batch
> +			limit applies only to non-offloaded callback
> +			invocation.  Offloaded callbacks are instead
> +			invoked in the context of an rcuoc kthread, which
> +			scheduler will preempt as it does any other task.
> +
>   	rcutree.rcu_nocb_gp_stride= [KNL]
>   			Set the number of NOCB callback kthreads in
>   			each group, which defaults to the square root

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH rcu 3/3] doc: Document rcutree.nocb_nobypass_lim_per_jiffy kernel parameter
  2022-06-20 22:17 ` [PATCH rcu 3/3] doc: Document rcutree.nocb_nobypass_lim_per_jiffy kernel parameter Paul E. McKenney
@ 2022-06-21  5:11   ` Neeraj Upadhyay
  2022-06-21 19:03     ` Paul E. McKenney
  0 siblings, 1 reply; 8+ messages in thread
From: Neeraj Upadhyay @ 2022-06-21  5:11 UTC (permalink / raw)
  To: Paul E. McKenney, rcu
  Cc: linux-kernel, kernel-team, rostedt, Frederic Weisbecker,
	Uladzislau Rezki



On 6/21/2022 3:47 AM, Paul E. McKenney wrote:
> This commit provides documentation for the kernel parameter controlling
> RCU's handling of callback floods on offloaded (rcu_nocbs) CPUs.
> This parameter might be obscure, but it is always there when you need it.
> 
> Reported-by: Frederic Weisbecker <frederic@kernel.org>
> Reported-by: Uladzislau Rezki <urezki@gmail.com>
> Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
> ---

Reviewed-by: Neeraj Upadhyay <quic_neeraju@quicinc.com>

>   Documentation/admin-guide/kernel-parameters.txt | 13 +++++++++++++
>   1 file changed, 13 insertions(+)
> 
> diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
> index bdf431bdbfdc4..a30890141b1a5 100644
> --- a/Documentation/admin-guide/kernel-parameters.txt
> +++ b/Documentation/admin-guide/kernel-parameters.txt
> @@ -4681,6 +4681,19 @@
>   			invoked in the context of an rcuoc kthread, which
>   			scheduler will preempt as it does any other task.
>   
> +	rcutree.nocb_nobypass_lim_per_jiffy= [KNL]
> +			On callback-offloaded (rcu_nocbs) CPUs,
> +			RCU reduces the lock contention that would
> +			otherwise be caused callback floods through

Minor : "caused by" ?


Thanks
Neeraj

> +			use of the ->nocb_bypass list.	However, in the
> +			common non-flooded case, RCU queues directly to
> +			the main ->cblist in order to avoid the extra
> +			overhead of the ->nocb_bypass list and its lock.
> +			But if there are too many callbacks queued during
> +			a single jiffy, RCU pre-queues the callbacks into
> +			the ->nocb_bypass queue.  The definition of "too
> +			many" is supplied by this kernel boot parameter.
> +
>   	rcutree.rcu_nocb_gp_stride= [KNL]
>   			Set the number of NOCB callback kthreads in
>   			each group, which defaults to the square root

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH rcu 3/3] doc: Document rcutree.nocb_nobypass_lim_per_jiffy kernel parameter
  2022-06-21  5:11   ` Neeraj Upadhyay
@ 2022-06-21 19:03     ` Paul E. McKenney
  0 siblings, 0 replies; 8+ messages in thread
From: Paul E. McKenney @ 2022-06-21 19:03 UTC (permalink / raw)
  To: Neeraj Upadhyay
  Cc: rcu, linux-kernel, kernel-team, rostedt, Frederic Weisbecker,
	Uladzislau Rezki

On Tue, Jun 21, 2022 at 10:41:54AM +0530, Neeraj Upadhyay wrote:
> 
> 
> On 6/21/2022 3:47 AM, Paul E. McKenney wrote:
> > This commit provides documentation for the kernel parameter controlling
> > RCU's handling of callback floods on offloaded (rcu_nocbs) CPUs.
> > This parameter might be obscure, but it is always there when you need it.
> > 
> > Reported-by: Frederic Weisbecker <frederic@kernel.org>
> > Reported-by: Uladzislau Rezki <urezki@gmail.com>
> > Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
> > ---
> 
> Reviewed-by: Neeraj Upadhyay <quic_neeraju@quicinc.com>
> 
> >   Documentation/admin-guide/kernel-parameters.txt | 13 +++++++++++++
> >   1 file changed, 13 insertions(+)
> > 
> > diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
> > index bdf431bdbfdc4..a30890141b1a5 100644
> > --- a/Documentation/admin-guide/kernel-parameters.txt
> > +++ b/Documentation/admin-guide/kernel-parameters.txt
> > @@ -4681,6 +4681,19 @@
> >   			invoked in the context of an rcuoc kthread, which
> >   			scheduler will preempt as it does any other task.
> > +	rcutree.nocb_nobypass_lim_per_jiffy= [KNL]
> > +			On callback-offloaded (rcu_nocbs) CPUs,
> > +			RCU reduces the lock contention that would
> > +			otherwise be caused callback floods through
> 
> Minor : "caused by" ?

Good catch, fixed, thank you!

I applied your Reviewed-by to this series as well, and thank you for
that as well.

							Thanx, Paul

> Thanks
> Neeraj
> 
> > +			use of the ->nocb_bypass list.	However, in the
> > +			common non-flooded case, RCU queues directly to
> > +			the main ->cblist in order to avoid the extra
> > +			overhead of the ->nocb_bypass list and its lock.
> > +			But if there are too many callbacks queued during
> > +			a single jiffy, RCU pre-queues the callbacks into
> > +			the ->nocb_bypass queue.  The definition of "too
> > +			many" is supplied by this kernel boot parameter.
> > +
> >   	rcutree.rcu_nocb_gp_stride= [KNL]
> >   			Set the number of NOCB callback kthreads in
> >   			each group, which defaults to the square root

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2022-06-21 19:03 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-06-20 22:17 [PATCH rcu 0/3] Documentation updates for v5.20 Paul E. McKenney
2022-06-20 22:17 ` [PATCH rcu 1/3] rcutorture: Update rcutorture.fwd_progress help text Paul E. McKenney
2022-06-21  5:10   ` Neeraj Upadhyay
2022-06-20 22:17 ` [PATCH rcu 2/3] doc: Document the rcutree.rcu_divisor kernel boot parameter Paul E. McKenney
2022-06-21  5:10   ` Neeraj Upadhyay
2022-06-20 22:17 ` [PATCH rcu 3/3] doc: Document rcutree.nocb_nobypass_lim_per_jiffy kernel parameter Paul E. McKenney
2022-06-21  5:11   ` Neeraj Upadhyay
2022-06-21 19:03     ` Paul E. McKenney

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).