linux/kernel/rcu
Paul E. McKenney 15651201fa rcu: Mark task as .need_qs less aggressively
If any scheduling-clock interrupt interrupts an RCU-preempt read-side
critical section, the interrupted task's ->rcu_read_unlock_special.b.need_qs
field is set.  This causes the outermost rcu_read_unlock() to incur the
extra overhead of calling into rcu_read_unlock_special().  This commit
reduces that overhead by setting ->rcu_read_unlock_special.b.need_qs only
if the grace period has been in effect for more than one second.

Why one second?  Because this is comfortably smaller than the minimum
RCU CPU stall-warning timeout of three seconds, but long enough that the
.need_qs marking should happen quite rarely.  And if your RCU read-side
critical section has run on-CPU for a full second, it is not unreasonable
to invest some CPU time in ending the grace period quickly.

Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
2018-07-12 15:39:15 -07:00
..
Kconfig rcu: Drive TASKS_RCU directly off of PREEMPT 2017-08-17 07:26:04 -07:00
Kconfig.debug rcu: Move RCU debug Kconfig options to kernel/rcu 2017-06-08 18:52:44 -07:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
rcu_segcblist.c rcu: Simplify and inline cpu_needs_another_gp() 2018-05-15 10:30:59 -07:00
rcu_segcblist.h rcu: Simplify and inline cpu_needs_another_gp() 2018-05-15 10:30:59 -07:00
rcu.h rcutorture: Correctly handle grace-period sequence wrap 2018-07-12 15:38:55 -07:00
rcuperf.c rcu: Use pr_fmt to prefix "rcu: " to logging output 2018-07-12 15:39:13 -07:00
rcutorture.c rcu: Use pr_fmt to prefix "rcu: " to logging output 2018-07-12 15:39:13 -07:00
srcutiny.c srcu: Add cleanup_srcu_struct_quiesced() 2018-05-15 10:27:56 -07:00
srcutree.c rcu: Use pr_fmt to prefix "rcu: " to logging output 2018-07-12 15:39:13 -07:00
sync.c doc: Fix various RCU docbook comment-header problems 2017-10-19 22:26:11 -04:00
tiny.c rcu: Improve rcu_note_voluntary_context_switch() reporting 2018-07-12 15:39:12 -07:00
tree_exp.h rcu: Make expedited GPs handle CPU 0 being offline 2018-07-12 12:36:06 -07:00
tree_plugin.h rcu: Mark task as .need_qs less aggressively 2018-07-12 15:39:15 -07:00
tree.c rcu: Improve RCU-tasks naming and comments 2018-07-12 15:39:15 -07:00
tree.h rcu: Add diagnostics for offline CPUs failing to report QS 2018-07-12 15:39:10 -07:00
update.c rcu: Improve RCU-tasks naming and comments 2018-07-12 15:39:15 -07:00