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 | |
| 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')
| -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 |
