|author||Paul E. McKenney <firstname.lastname@example.org>||2008-01-25 21:08:24 +0100|
|committer||Ingo Molnar <email@example.com>||2008-01-25 21:08:24 +0100|
This patch implements a new version of RCU which allows its read-side critical sections to be preempted. It uses a set of counter pairs to keep track of the read-side critical sections and flips them when all tasks exit read-side critical section. The details of this implementation can be found in this paper - http://www.rdrop.com/users/paulmck/RCU/OLSrtRCU.2006.08.11a.pdf and the article- http://lwn.net/Articles/253651/ This patch was developed as a part of the -rt kernel development and meant to provide better latencies when read-side critical sections of RCU don't disable preemption. As a consequence of keeping track of RCU readers, the readers have a slight overhead (optimizations in the paper). This implementation co-exists with the "classic" RCU implementations and can be switched to at compiler. Also includes RCU tracing summarized in debugfs. [ firstname.lastname@example.org: build fixes on non-preempt architectures ] Signed-off-by: Gautham R Shenoy <email@example.com> Signed-off-by: Dipankar Sarma <firstname.lastname@example.org> Signed-off-by: Paul E. McKenney <email@example.com> Reviewed-by: Steven Rostedt <firstname.lastname@example.org> Signed-off-by: Ingo Molnar <email@example.com>
Diffstat (limited to 'init')
1 files changed, 28 insertions, 0 deletions
diff --git a/init/Kconfig b/init/Kconfig
index f5becd2a12f..0eda68f0ad5 100644
@@ -763,3 +763,31 @@ source "block/Kconfig"
+ prompt "RCU implementation type:"
+ default CLASSIC_RCU
+ bool "Classic RCU"
+ This option selects the classic RCU implementation that is
+ designed for best read-side performance on non-realtime
+ Say Y if you are unsure.
+ bool "Preemptible RCU"
+ depends on PREEMPT
+ This option reduces the latency of the kernel by making certain
+ RCU sections preemptible. Normally RCU code is non-preemptible, if
+ this option is selected then read-only RCU sections become
+ preemptible. This helps latency, but may expose bugs due to
+ now-naive assumptions about each RCU read-side critical section
+ remaining on a given CPU through its execution.
+ Say N if you are unsure.