* [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
* 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
* [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
* 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
* [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 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).