torture: Handle systems lacking the mpstat command
authorPaul E. McKenney <paulmck@kernel.org>
Mon, 21 Oct 2019 15:38:00 +0000 (08:38 -0700)
committerPaul E. McKenney <paulmck@kernel.org>
Mon, 9 Dec 2019 21:00:27 +0000 (13:00 -0800)
The rcutorture scripting uses the mpstat command to determine how much
the system is being used, and adjusts make's -j argument accordingly.
However, mpstat isn't installed by default, so it would be good if the
scripting does something useful when mpstat isn't present.

This commit therefore makes the scripts assumes that if mpstat is not
present, they are free to use all the CPUs.

Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
tools/testing/selftests/rcutorture/bin/cpus2use.sh

index 4e9485590c10d5535a08ebf030518fcecb2e7be9..1dbfb62567d2fff9fb60c51afc91277653be01d9 100755 (executable)
@@ -15,8 +15,15 @@ then
        exit 0
 fi
 ncpus=`grep '^processor' /proc/cpuinfo | wc -l`
-idlecpus=`mpstat | tail -1 | \
-       awk -v ncpus=$ncpus '{ print ncpus * ($7 + $NF) / 100 }'`
+if mpstat -V > /dev/null 2>&1
+then
+       idlecpus=`mpstat | tail -1 | \
+               awk -v ncpus=$ncpus '{ print ncpus * ($7 + $NF) / 100 }'`
+else
+       # No mpstat command, so use all available CPUs.
+       echo The mpstat command is not available, so greedily using all CPUs.
+       idlecpus=$ncpus
+fi
 awk -v ncpus=$ncpus -v idlecpus=$idlecpus < /dev/null '
 BEGIN {
        cpus2use = idlecpus;