]> git.karo-electronics.de Git - linux-beck.git/commitdiff
rcutorture: Allow negative values of nreaders to oversubscribe
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Thu, 12 Mar 2015 20:55:48 +0000 (13:55 -0700)
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Wed, 27 May 2015 19:59:57 +0000 (12:59 -0700)
By default, with rcutorture.nreaders equal to -1, rcutorture provisions
N-1 reader kthreads, where N is the number of CPUs.  This avoids
rcutorture-induced stalls, but also avoids heavier levels of torture.
This commit therefore allows negative values of rcutorture.nreaders
to specify larger numbers of reader kthreads, so that for example
rcutorture.nreaders=-2 provisions N kthreads and rcutorture.nreaders=-5
provisions N+3 kthreads.

Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
[ paulmck: Update documentation, as suggested by Josh Triplett. ]

Documentation/kernel-parameters.txt
kernel/rcu/rcutorture.c

index 61ab1628a057cc2c4d8b11d892d834f7e5f7773a..04b811086dca49778d2e1a0f4549365686235262 100644 (file)
@@ -3101,7 +3101,11 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
                        test, hence the "fake".
 
        rcutorture.nreaders= [KNL]
-                       Set number of RCU readers.
+                       Set number of RCU readers.  The value -1 selects
+                       N-1, where N is the number of CPUs.  A value
+                       "n" less than -1 selects N-n-2, where N is again
+                       the number of CPUs.  For example, -2 selects N
+                       (the number of CPUs), -3 selects N+1, and so on.
 
        rcutorture.object_debug= [KNL]
                        Enable debug-object double-call_rcu() testing.
index a67ef6ff86b01c86be90c3a3aa4578440aafce89..7294d605c481717542a6d643fec53fcd4557a63b 100644 (file)
@@ -1701,7 +1701,7 @@ rcu_torture_init(void)
        if (nreaders >= 0) {
                nrealreaders = nreaders;
        } else {
-               nrealreaders = num_online_cpus() - 1;
+               nrealreaders = num_online_cpus() - 2 - nreaders;
                if (nrealreaders <= 0)
                        nrealreaders = 1;
        }