diff options
author | Paul E. McKenney <paulmck@linux.vnet.ibm.com> | 2008-06-18 12:26:49 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-06-19 05:22:15 -0400 |
commit | 31a72bce0bd6f3e0114009288bccbc96376eeeca (patch) | |
tree | 14a817fbe0b47511d3119360c47959d48f851140 /lib/Kconfig.debug | |
parent | d120f65f3aaf306c957bc4c82e510f5b0f1e9b27 (diff) |
rcu: make rcutorture more vicious: reinstate boot-time testing
This patch re-institutes the ability to build rcutorture directly into
the Linux kernel. The reason that this capability was removed was that
this could result in your kernel being pretty much useless, as rcutorture
would be running starting from early boot. This problem has been avoided
by (1) making rcutorture run only three seconds of every six by default,
(2) adding a CONFIG_RCU_TORTURE_TEST_RUNNABLE that permits rcutorture
to be quiesced at boot time, and (3) adding a sysctl in /proc named
/proc/sys/kernel/rcutorture_runnable that permits rcutorture to be
quiesced and unquiesced when built into the kernel.
Please note that this /proc file is -not- available when rcutorture
is built as a module. Please also note that to get the earlier
take-no-prisoners behavior, you must use the boot command line to set
rcutorture's "stutter" parameter to zero.
The rcutorture quiescing mechanism is currently quite crude: loops
in each rcutorture process that poll a global variable once per tick.
Suggestions for improvement are welcome. The default action will
be to reduce the polling rate to a few times per second.
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Suggested-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'lib/Kconfig.debug')
-rw-r--r-- | lib/Kconfig.debug | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug index f51ba2fa2662..c35a86a516a0 100644 --- a/lib/Kconfig.debug +++ b/lib/Kconfig.debug | |||
@@ -537,11 +537,28 @@ config RCU_TORTURE_TEST | |||
537 | on the RCU infrastructure. The kernel module may be built | 537 | on the RCU infrastructure. The kernel module may be built |
538 | after the fact on the running kernel to be tested, if desired. | 538 | after the fact on the running kernel to be tested, if desired. |
539 | 539 | ||
540 | Say Y here if you want RCU torture tests to start automatically | 540 | Say Y here if you want RCU torture tests to be built into |
541 | at boot time (you probably don't). | 541 | the kernel. |
542 | Say M if you want the RCU torture tests to build as a module. | 542 | Say M if you want the RCU torture tests to build as a module. |
543 | Say N if you are unsure. | 543 | Say N if you are unsure. |
544 | 544 | ||
545 | config RCU_TORTURE_TEST_RUNNABLE | ||
546 | bool "torture tests for RCU runnable by default" | ||
547 | depends on RCU_TORTURE_TEST = y | ||
548 | default n | ||
549 | help | ||
550 | This option provides a way to build the RCU torture tests | ||
551 | directly into the kernel without them starting up at boot | ||
552 | time. You can use /proc/sys/kernel/rcutorture_runnable | ||
553 | to manually override this setting. This /proc file is | ||
554 | available only when the RCU torture tests have been built | ||
555 | into the kernel. | ||
556 | |||
557 | Say Y here if you want the RCU torture tests to start during | ||
558 | boot (you probably don't). | ||
559 | Say N here if you want the RCU torture tests to start only | ||
560 | after being manually enabled via /proc. | ||
561 | |||
545 | config KPROBES_SANITY_TEST | 562 | config KPROBES_SANITY_TEST |
546 | bool "Kprobes sanity tests" | 563 | bool "Kprobes sanity tests" |
547 | depends on DEBUG_KERNEL | 564 | depends on DEBUG_KERNEL |