Commit 820687a7 authored by Paul E. McKenney's avatar Paul E. McKenney
Browse files

rcuperf: Add writer_holdoff boot parameter



This commit adds a writer_holdoff boot parameter to rcuperf, which is
intended to be used to test Tree SRCU's auto-expediting.  This
boot parameter is in microseconds, and defaults to zero (that is,
disabled).  Set it to a bit larger than srcutree.exp_holdoff,
keeping the nanosecond/microsecond conversion, to force Tree SRCU
to auto-expedite more aggressively.

This commit also adds documentation for this parameter, and fixes some
alphabetization while in the neighborhood.
Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.vnet.ibm.com>
parent b562b85c
...@@ -3357,17 +3357,22 @@ ...@@ -3357,17 +3357,22 @@
rcuperf.perf_runnable= [BOOT] rcuperf.perf_runnable= [BOOT]
Start rcuperf running at boot time. Start rcuperf running at boot time.
rcuperf.perf_type= [KNL]
Specify the RCU implementation to test.
rcuperf.shutdown= [KNL] rcuperf.shutdown= [KNL]
Shut the system down after performance tests Shut the system down after performance tests
complete. This is useful for hands-off automated complete. This is useful for hands-off automated
testing. testing.
rcuperf.perf_type= [KNL]
Specify the RCU implementation to test.
rcuperf.verbose= [KNL] rcuperf.verbose= [KNL]
Enable additional printk() statements. Enable additional printk() statements.
rcuperf.writer_holdoff= [KNL]
Write-side holdoff between grace periods,
in microseconds. The default of zero says
no holdoff.
rcutorture.cbflood_inter_holdoff= [KNL] rcutorture.cbflood_inter_holdoff= [KNL]
Set holdoff time (jiffies) between successive Set holdoff time (jiffies) between successive
callback-flood tests. callback-flood tests.
......
...@@ -68,6 +68,7 @@ torture_param(int, nwriters, -1, "Number of RCU updater threads"); ...@@ -68,6 +68,7 @@ torture_param(int, nwriters, -1, "Number of RCU updater threads");
torture_param(bool, shutdown, !IS_ENABLED(MODULE), torture_param(bool, shutdown, !IS_ENABLED(MODULE),
"Shutdown at end of performance tests."); "Shutdown at end of performance tests.");
torture_param(bool, verbose, true, "Enable verbose debugging printk()s"); torture_param(bool, verbose, true, "Enable verbose debugging printk()s");
torture_param(int, writer_holdoff, 0, "Holdoff (us) between GPs, zero to disable");
static char *perf_type = "rcu"; static char *perf_type = "rcu";
module_param(perf_type, charp, 0444); module_param(perf_type, charp, 0444);
...@@ -447,6 +448,8 @@ rcu_perf_writer(void *arg) ...@@ -447,6 +448,8 @@ rcu_perf_writer(void *arg)
} }
do { do {
if (writer_holdoff)
udelay(writer_holdoff);
wdp = &wdpp[i]; wdp = &wdpp[i];
*wdp = ktime_get_mono_fast_ns(); *wdp = ktime_get_mono_fast_ns();
if (gp_async) { if (gp_async) {
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment