Skip to content

Commit 3269363

Browse files
paulmckrcuFrederic Weisbecker
authored andcommitted
torture: Add --no-affinity parameter to kvm.sh
In performance tests, it can be counter-productive to spread torture-test guest OSes across sockets. Plus the experimenter might have ideas about what CPUs individual guest OSes are to run on. This commit therefore adds a --no-affinity parameter to kvm.sh to prevent it from running taskset on its guest OSes. Signed-off-by: Paul E. McKenney <[email protected]> Reviewed-by: Neeraj Upadhyay <[email protected]> Signed-off-by: Frederic Weisbecker <[email protected]>
1 parent f7345cc commit 3269363

File tree

2 files changed

+29
-20
lines changed

2 files changed

+29
-20
lines changed

tools/testing/selftests/rcutorture/bin/kvm-test-1-run-batch.sh

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -56,27 +56,30 @@ do
5656
echo > $i/kvm-test-1-run-qemu.sh.out
5757
export TORTURE_AFFINITY=
5858
kvm-get-cpus-script.sh $T/cpuarray.awk $T/cpubatches.awk $T/cpustate
59-
cat << ' ___EOF___' >> $T/cpubatches.awk
60-
END {
61-
affinitylist = "";
62-
if (!gotcpus()) {
63-
print "echo No CPU-affinity information, so no taskset command.";
64-
} else if (cpu_count !~ /^[0-9][0-9]*$/) {
65-
print "echo " scenario ": Bogus number of CPUs (old qemu-cmd?), so no taskset command.";
66-
} else {
67-
affinitylist = nextcpus(cpu_count);
68-
if (!(affinitylist ~ /^[0-9,-][0-9,-]*$/))
69-
print "echo " scenario ": Bogus CPU-affinity information, so no taskset command.";
70-
else if (!dumpcpustate())
71-
print "echo " scenario ": Could not dump state, so no taskset command.";
72-
else
73-
print "export TORTURE_AFFINITY=" affinitylist;
59+
if test -z "${TORTURE_NO_AFFINITY}"
60+
then
61+
cat << ' ___EOF___' >> $T/cpubatches.awk
62+
END {
63+
affinitylist = "";
64+
if (!gotcpus()) {
65+
print "echo No CPU-affinity information, so no taskset command.";
66+
} else if (cpu_count !~ /^[0-9][0-9]*$/) {
67+
print "echo " scenario ": Bogus number of CPUs (old qemu-cmd?), so no taskset command.";
68+
} else {
69+
affinitylist = nextcpus(cpu_count);
70+
if (!(affinitylist ~ /^[0-9,-][0-9,-]*$/))
71+
print "echo " scenario ": Bogus CPU-affinity information, so no taskset command.";
72+
else if (!dumpcpustate())
73+
print "echo " scenario ": Could not dump state, so no taskset command.";
74+
else
75+
print "export TORTURE_AFFINITY=" affinitylist;
76+
}
7477
}
75-
}
76-
___EOF___
77-
cpu_count="`grep '# TORTURE_CPU_COUNT=' $i/qemu-cmd | sed -e 's/^.*=//'`"
78-
affinity_export="`awk -f $T/cpubatches.awk -v cpu_count="$cpu_count" -v scenario=$i < /dev/null`"
79-
$affinity_export
78+
___EOF___
79+
cpu_count="`grep '# TORTURE_CPU_COUNT=' $i/qemu-cmd | sed -e 's/^.*=//'`"
80+
affinity_export="`awk -f $T/cpubatches.awk -v cpu_count="$cpu_count" -v scenario=$i < /dev/null`"
81+
$affinity_export
82+
fi
8083
kvm-test-1-run-qemu.sh $i >> $i/kvm-test-1-run-qemu.sh.out 2>&1 &
8184
done
8285
for i in $runfiles

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ TORTURE_JITTER_STOP=""
4242
TORTURE_KCONFIG_KASAN_ARG=""
4343
TORTURE_KCONFIG_KCSAN_ARG=""
4444
TORTURE_KMAKE_ARG=""
45+
TORTURE_NO_AFFINITY=""
4546
TORTURE_QEMU_MEM=512
4647
torture_qemu_mem_default=1
4748
TORTURE_REMOTE=
@@ -82,6 +83,7 @@ usage () {
8283
echo " --kmake-arg kernel-make-arguments"
8384
echo " --mac nn:nn:nn:nn:nn:nn"
8485
echo " --memory megabytes|nnnG"
86+
echo " --no-affinity"
8587
echo " --no-initrd"
8688
echo " --qemu-args qemu-arguments"
8789
echo " --qemu-cmd qemu-system-..."
@@ -220,6 +222,9 @@ do
220222
torture_qemu_mem_default=
221223
shift
222224
;;
225+
--no-affinity)
226+
TORTURE_NO_AFFINITY="no-affinity"
227+
;;
223228
--no-initrd)
224229
TORTURE_INITRD=""; export TORTURE_INITRD
225230
;;
@@ -417,6 +422,7 @@ TORTURE_KCONFIG_KASAN_ARG="$TORTURE_KCONFIG_KASAN_ARG"; export TORTURE_KCONFIG_K
417422
TORTURE_KCONFIG_KCSAN_ARG="$TORTURE_KCONFIG_KCSAN_ARG"; export TORTURE_KCONFIG_KCSAN_ARG
418423
TORTURE_KMAKE_ARG="$TORTURE_KMAKE_ARG"; export TORTURE_KMAKE_ARG
419424
TORTURE_MOD="$TORTURE_MOD"; export TORTURE_MOD
425+
TORTURE_NO_AFFINITY="$TORTURE_NO_AFFINITY"; export TORTURE_NO_AFFINITY
420426
TORTURE_QEMU_CMD="$TORTURE_QEMU_CMD"; export TORTURE_QEMU_CMD
421427
TORTURE_QEMU_INTERACTIVE="$TORTURE_QEMU_INTERACTIVE"; export TORTURE_QEMU_INTERACTIVE
422428
TORTURE_QEMU_MAC="$TORTURE_QEMU_MAC"; export TORTURE_QEMU_MAC

0 commit comments

Comments
 (0)