diff options
author | Paul E. McKenney <paulmck@linux.vnet.ibm.com> | 2010-10-26 05:11:40 -0400 |
---|---|---|
committer | Paul E. McKenney <paulmck@linux.vnet.ibm.com> | 2010-11-30 01:02:40 -0500 |
commit | 46fdb0937f26124700fc9fc80da4776330cc00d3 (patch) | |
tree | ce3bdf6c0379fdab8c72085f885402751fadea52 /init/Kconfig | |
parent | db3a8920995484e5e9a0abaf3bad2c7311b163db (diff) |
rcu: Make synchronize_srcu_expedited() fast if running readers
The synchronize_srcu_expedited() function is currently quick if there
are no active readers, but will delay a full jiffy if there are any.
If these readers leave their SRCU read-side critical sections quickly,
this is way too long to wait. So this commit first waits ten microseconds,
and only then falls back to jiffy-at-a-time waiting.
Reported-by: Avi Kivity <avi@redhat.com>
Reported-by: Marcelo Tosatti <mtosatti@redhat.com>
Tested-by: Takuya Yoshikawa <yoshikawa.takuya@oss.ntt.co.jp>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Diffstat (limited to 'init/Kconfig')
-rw-r--r-- | init/Kconfig | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/init/Kconfig b/init/Kconfig index 929adf6cb6b4..35518243c4bd 100644 --- a/init/Kconfig +++ b/init/Kconfig | |||
@@ -488,6 +488,21 @@ config RCU_BOOST_DELAY | |||
488 | 488 | ||
489 | Accept the default if unsure. | 489 | Accept the default if unsure. |
490 | 490 | ||
491 | config SRCU_SYNCHRONIZE_DELAY | ||
492 | int "Microseconds to delay before waiting for readers" | ||
493 | range 0 20 | ||
494 | default 10 | ||
495 | help | ||
496 | This option controls how long SRCU delays before entering its | ||
497 | loop waiting on SRCU readers. The purpose of this loop is | ||
498 | to avoid the unconditional context-switch penalty that would | ||
499 | otherwise be incurred if there was an active SRCU reader, | ||
500 | in a manner similar to adaptive locking schemes. This should | ||
501 | be set to be a bit longer than the common-case SRCU read-side | ||
502 | critical-section overhead. | ||
503 | |||
504 | Accept the default if unsure. | ||
505 | |||
491 | endmenu # "RCU Subsystem" | 506 | endmenu # "RCU Subsystem" |
492 | 507 | ||
493 | config IKCONFIG | 508 | config IKCONFIG |