···4157 rcu_node tree with an eye towards determining4158 why a new grace period has not yet started.41594160- rcuperf.gp_async= [KNL]4161 Measure performance of asynchronous4162 grace-period primitives such as call_rcu().41634164- rcuperf.gp_async_max= [KNL]4165 Specify the maximum number of outstanding4166 callbacks per writer thread. When a writer4167 thread exceeds this limit, it invokes the4168 corresponding flavor of rcu_barrier() to allow4169 previously posted callbacks to drain.41704171- rcuperf.gp_exp= [KNL]4172 Measure performance of expedited synchronous4173 grace-period primitives.41744175- rcuperf.holdoff= [KNL]4176 Set test-start holdoff period. The purpose of4177 this parameter is to delay the start of the4178 test until boot completes in order to avoid4179 interference.41804181- rcuperf.kfree_rcu_test= [KNL]4182 Set to measure performance of kfree_rcu() flooding.41834184- rcuperf.kfree_nthreads= [KNL]4185 The number of threads running loops of kfree_rcu().41864187- rcuperf.kfree_alloc_num= [KNL]4188 Number of allocations and frees done in an iteration.41894190- rcuperf.kfree_loops= [KNL]4191- Number of loops doing rcuperf.kfree_alloc_num number4192 of allocations and frees.41934194- rcuperf.nreaders= [KNL]4195 Set number of RCU readers. The value -1 selects4196 N, where N is the number of CPUs. A value4197 "n" less than -1 selects N-n+1, where N is again···4200 A value of "n" less than or equal to -N selects4201 a single reader.42024203- rcuperf.nwriters= [KNL]4204 Set number of RCU writers. The values operate4205- the same as for rcuperf.nreaders.4206 N, where N is the number of CPUs42074208- rcuperf.perf_type= [KNL]4209 Specify the RCU implementation to test.42104211- rcuperf.shutdown= [KNL]4212 Shut the system down after performance tests4213 complete. This is useful for hands-off automated4214 testing.42154216- rcuperf.verbose= [KNL]4217 Enable additional printk() statements.42184219- rcuperf.writer_holdoff= [KNL]4220 Write-side holdoff between grace periods,4221 in microseconds. The default of zero says4222 no holdoff.···4502 refscale.shutdown= [KNL]4503 Shut down the system at the end of the performance4504 test. This defaults to 1 (shut it down) when4505- rcuperf is built into the kernel and to 0 (leave4506- it running) when rcuperf is built as a module.45074508 refscale.verbose= [KNL]4509 Enable additional printk() statements.···4648 and so on.4649 Format: integer between 0 and 104650 Default is 0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046514652 skew_tick= [KNL] Offset the periodic timer tick per cpu to mitigate4653 xtime_lock contention on larger systems, and/or RCU lock
···4157 rcu_node tree with an eye towards determining4158 why a new grace period has not yet started.41594160+ rcuscale.gp_async= [KNL]4161 Measure performance of asynchronous4162 grace-period primitives such as call_rcu().41634164+ rcuscale.gp_async_max= [KNL]4165 Specify the maximum number of outstanding4166 callbacks per writer thread. When a writer4167 thread exceeds this limit, it invokes the4168 corresponding flavor of rcu_barrier() to allow4169 previously posted callbacks to drain.41704171+ rcuscale.gp_exp= [KNL]4172 Measure performance of expedited synchronous4173 grace-period primitives.41744175+ rcuscale.holdoff= [KNL]4176 Set test-start holdoff period. The purpose of4177 this parameter is to delay the start of the4178 test until boot completes in order to avoid4179 interference.41804181+ rcuscale.kfree_rcu_test= [KNL]4182 Set to measure performance of kfree_rcu() flooding.41834184+ rcuscale.kfree_nthreads= [KNL]4185 The number of threads running loops of kfree_rcu().41864187+ rcuscale.kfree_alloc_num= [KNL]4188 Number of allocations and frees done in an iteration.41894190+ rcuscale.kfree_loops= [KNL]4191+ Number of loops doing rcuscale.kfree_alloc_num number4192 of allocations and frees.41934194+ rcuscale.nreaders= [KNL]4195 Set number of RCU readers. The value -1 selects4196 N, where N is the number of CPUs. A value4197 "n" less than -1 selects N-n+1, where N is again···4200 A value of "n" less than or equal to -N selects4201 a single reader.42024203+ rcuscale.nwriters= [KNL]4204 Set number of RCU writers. The values operate4205+ the same as for rcuscale.nreaders.4206 N, where N is the number of CPUs42074208+ rcuscale.perf_type= [KNL]4209 Specify the RCU implementation to test.42104211+ rcuscale.shutdown= [KNL]4212 Shut the system down after performance tests4213 complete. This is useful for hands-off automated4214 testing.42154216+ rcuscale.verbose= [KNL]4217 Enable additional printk() statements.42184219+ rcuscale.writer_holdoff= [KNL]4220 Write-side holdoff between grace periods,4221 in microseconds. The default of zero says4222 no holdoff.···4502 refscale.shutdown= [KNL]4503 Shut down the system at the end of the performance4504 test. This defaults to 1 (shut it down) when4505+ refscale is built into the kernel and to 0 (leave4506+ it running) when refscale is built as a module.45074508 refscale.verbose= [KNL]4509 Enable additional printk() statements.···4648 and so on.4649 Format: integer between 0 and 104650 Default is 0.4651+4652+ scftorture.holdoff= [KNL]4653+ Number of seconds to hold off before starting4654+ test. Defaults to zero for module insertion and4655+ to 10 seconds for built-in smp_call_function()4656+ tests.4657+4658+ scftorture.longwait= [KNL]4659+ Request ridiculously long waits randomly selected4660+ up to the chosen limit in seconds. Zero (the4661+ default) disables this feature. Please note4662+ that requesting even small non-zero numbers of4663+ seconds can result in RCU CPU stall warnings,4664+ softlockup complaints, and so on.4665+4666+ scftorture.nthreads= [KNL]4667+ Number of kthreads to spawn to invoke the4668+ smp_call_function() family of functions.4669+ The default of -1 specifies a number of kthreads4670+ equal to the number of CPUs.4671+4672+ scftorture.onoff_holdoff= [KNL]4673+ Number seconds to wait after the start of the4674+ test before initiating CPU-hotplug operations.4675+4676+ scftorture.onoff_interval= [KNL]4677+ Number seconds to wait between successive4678+ CPU-hotplug operations. Specifying zero (which4679+ is the default) disables CPU-hotplug operations.4680+4681+ scftorture.shutdown_secs= [KNL]4682+ The number of seconds following the start of the4683+ test after which to shut down the system. The4684+ default of zero avoids shutting down the system.4685+ Non-zero values are useful for automated tests.4686+4687+ scftorture.stat_interval= [KNL]4688+ The number of seconds between outputting the4689+ current test statistics to the console. A value4690+ of zero disables statistics output.4691+4692+ scftorture.stutter_cpus= [KNL]4693+ The number of jiffies to wait between each change4694+ to the set of CPUs under test.4695+4696+ scftorture.use_cpus_read_lock= [KNL]4697+ Use use_cpus_read_lock() instead of the default4698+ preempt_disable() to disable CPU hotplug4699+ while invoking one of the smp_call_function*()4700+ functions.4701+4702+ scftorture.verbose= [KNL]4703+ Enable additional printk() statements.4704+4705+ scftorture.weight_single= [KNL]4706+ The probability weighting to use for the4707+ smp_call_function_single() function with a zero4708+ "wait" parameter. A value of -1 selects the4709+ default if all other weights are -1. However,4710+ if at least one weight has some other value, a4711+ value of -1 will instead select a weight of zero.4712+4713+ scftorture.weight_single_wait= [KNL]4714+ The probability weighting to use for the4715+ smp_call_function_single() function with a4716+ non-zero "wait" parameter. See weight_single.4717+4718+ scftorture.weight_many= [KNL]4719+ The probability weighting to use for the4720+ smp_call_function_many() function with a zero4721+ "wait" parameter. See weight_single.4722+ Note well that setting a high probability for4723+ this weighting can place serious IPI load4724+ on the system.4725+4726+ scftorture.weight_many_wait= [KNL]4727+ The probability weighting to use for the4728+ smp_call_function_many() function with a4729+ non-zero "wait" parameter. See weight_single4730+ and weight_many.4731+4732+ scftorture.weight_all= [KNL]4733+ The probability weighting to use for the4734+ smp_call_function_all() function with a zero4735+ "wait" parameter. See weight_single and4736+ weight_many.4737+4738+ scftorture.weight_all_wait= [KNL]4739+ The probability weighting to use for the4740+ smp_call_function_all() function with a4741+ non-zero "wait" parameter. See weight_single4742+ and weight_many.47434744 skew_tick= [KNL] Offset the periodic timer tick per cpu to mitigate4745 xtime_lock contention on larger systems, and/or RCU lock
···927928 if (ratelimit < 10 &&929 (local_softirq_pending() & SOFTIRQ_STOP_IDLE_MASK)) {930+ pr_warn("NOHZ tick-stop error: Non-RCU local softirq work is pending, handler #%02x!!!\n",931 (unsigned int) local_softirq_pending());932 ratelimit++;933 }
+10
lib/Kconfig.debug
···1367 Say M if you want these self tests to build as a module.1368 Say N if you are unsure.136900000000001370endmenu # lock debugging13711372config TRACE_IRQFLAGS
···1367 Say M if you want these self tests to build as a module.1368 Say N if you are unsure.13691370+config SCF_TORTURE_TEST1371+ tristate "torture tests for smp_call_function*()"1372+ depends on DEBUG_KERNEL1373+ select TORTURE_TEST1374+ help1375+ This option provides a kernel module that runs torture tests1376+ on the smp_call_function() family of primitives. The kernel1377+ module may be built after the fact on the running kernel to1378+ be tested, if desired.1379+1380endmenu # lock debugging13811382config TRACE_IRQFLAGS
···1#!/bin/bash2# SPDX-License-Identifier: GPL-2.0+3#4-# Analyze a given results directory for rcuperf performance measurements,5# looking for ftrace data. Exits with 0 if data was found, analyzed, and6-# printed. Intended to be invoked from kvm-recheck-rcuperf.sh after7# argument checking.8#9-# Usage: kvm-recheck-rcuperf-ftrace.sh resdir10#11# Copyright (C) IBM Corporation, 201612#
···1#!/bin/bash2# SPDX-License-Identifier: GPL-2.0+3#4+# Analyze a given results directory for rcuscale performance measurements,5# looking for ftrace data. Exits with 0 if data was found, analyzed, and6+# printed. Intended to be invoked from kvm-recheck-rcuscale.sh after7# argument checking.8#9+# Usage: kvm-recheck-rcuscale-ftrace.sh resdir10#11# Copyright (C) IBM Corporation, 201612#