torture: Explain and simplify odd "for" loop in mkinitrd.sh
authorPaul E. McKenney <paulmck@linux.ibm.com>
Tue, 4 Dec 2018 22:59:12 +0000 (14:59 -0800)
committerPaul E. McKenney <paulmck@linux.ibm.com>
Fri, 25 Jan 2019 23:37:09 +0000 (15:37 -0800)
Why a Bourne-shell "for" loop?  And why 192 instances of "a"?  This commit
adds a shell comment to present the answer to these mysteries.  It also
uses a series of factor-of-four Bourne-shell assignments to make it
easy to see how many instances there are, replacing the earlier wall of
'a' characters.

Reported-by: Josh Triplett <josh@joshtriplett.org>
Signed-off-by: Paul E. McKenney <paulmck@linux.ibm.com>
Reviewed-by: Josh Triplett <josh@joshtriplett.org>
[ paulmck: Fix wrong-variable bugs noted by Andrea Parri. ]

tools/testing/selftests/rcutorture/bin/mkinitrd.sh

index da298394daa244cdd67f6837d5d1826d61360038..e79eb35c41e2b1ded26115b4d51996b06d78b824 100755 (executable)
@@ -40,17 +40,24 @@ mkdir $T
 cat > $T/init << '__EOF___'
 #!/bin/sh
 # Run in userspace a few milliseconds every second.  This helps to
-# exercise the NO_HZ_FULL portions of RCU.
+# exercise the NO_HZ_FULL portions of RCU.  The 192 instances of "a" was
+# empirically shown to give a nice multi-millisecond burst of user-mode
+# execution on a 2GHz CPU, as desired.  Modern CPUs will vary from a
+# couple of milliseconds up to perhaps 100 milliseconds, which is an
+# acceptable range.
+#
+# Why not calibrate an exact delay?  Because within this initrd, we
+# are restricted to Bourne-shell builtins, which as far as I know do not
+# provide any means of obtaining a fine-grained timestamp.
+
+a4="a a a a"
+a16="$a4 $a4 $a4 $a4"
+a64="$a16 $a16 $a16 $a16"
+a192="$a64 $a64 $a64"
 while :
 do
        q=
-       for i in \
-               a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a \
-               a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a \
-               a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a \
-               a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a \
-               a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a \
-               a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a
+       for i in $a192
        do
                q="$q $i"
        done