Skip to content

Commit dfabd42

Browse files
committed
rcutorture: Avoid redundant builds for rcuscale and refscale in torture.sh
This commit causes torture.sh to use the new --bootargs and --datestamp parameters to kvm-again.sh in order to avoid redundant kernel builds during rcuscale and refscale testing. This trims the better part of an hour off of torture.sh runs that use --do-kasan. Signed-off-by: Paul E. McKenney <[email protected]>
1 parent fb53a8d commit dfabd42

File tree

1 file changed

+83
-4
lines changed

1 file changed

+83
-4
lines changed

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

Lines changed: 83 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -277,6 +277,8 @@ function torture_one {
277277
then
278278
cat $T/$curflavor.out | tee -a $T/log
279279
echo retcode=$retcode | tee -a $T/log
280+
else
281+
echo $resdir > $T/last-resdir
280282
fi
281283
if test "$retcode" == 0
282284
then
@@ -302,10 +304,12 @@ function torture_set {
302304
shift
303305
curflavor=$flavor
304306
torture_one "$@"
307+
mv $T/last-resdir $T/last-resdir-nodebug || :
305308
if test "$do_kasan" = "yes"
306309
then
307310
curflavor=${flavor}-kasan
308311
torture_one "$@" --kasan
312+
mv $T/last-resdir $T/last-resdir-kasan || :
309313
fi
310314
if test "$do_kcsan" = "yes"
311315
then
@@ -316,6 +320,7 @@ function torture_set {
316320
cur_kcsan_kmake_args="$kcsan_kmake_args"
317321
fi
318322
torture_one "$@" --kconfig "CONFIG_DEBUG_LOCK_ALLOC=y CONFIG_PROVE_LOCKING=y" $kcsan_kmake_tag $cur_kcsan_kmake_args --kcsan
323+
mv $T/last-resdir $T/last-resdir-kcsan || :
319324
fi
320325
}
321326

@@ -378,23 +383,97 @@ then
378383
else
379384
primlist=
380385
fi
386+
firsttime=1
387+
do_kasan_save="$do_kasan"
388+
do_kcsan_save="$do_kcsan"
381389
for prim in $primlist
382390
do
383-
torture_bootargs="refscale.scale_type="$prim" refscale.nreaders=$HALF_ALLOTED_CPUS refscale.loops=10000 refscale.holdoff=20 torture.disable_onoff_at_boot"
384-
torture_set "refscale-$prim" tools/testing/selftests/rcutorture/bin/kvm.sh --torture refscale --allcpus --duration 5 --kconfig "CONFIG_TASKS_TRACE_RCU=y CONFIG_NR_CPUS=$HALF_ALLOTED_CPUS" --bootargs "verbose_batched=$VERBOSE_BATCH_CPUS torture.verbose_sleep_frequency=8 torture.verbose_sleep_duration=$VERBOSE_BATCH_CPUS" --trust-make
391+
if test -n "$firsttime"
392+
then
393+
torture_bootargs="refscale.scale_type="$prim" refscale.nreaders=$HALF_ALLOTED_CPUS refscale.loops=10000 refscale.holdoff=20 torture.disable_onoff_at_boot"
394+
torture_set "refscale-$prim" tools/testing/selftests/rcutorture/bin/kvm.sh --torture refscale --allcpus --duration 5 --kconfig "CONFIG_TASKS_TRACE_RCU=y CONFIG_NR_CPUS=$HALF_ALLOTED_CPUS" --bootargs "verbose_batched=$VERBOSE_BATCH_CPUS torture.verbose_sleep_frequency=8 torture.verbose_sleep_duration=$VERBOSE_BATCH_CPUS" --trust-make
395+
mv $T/last-resdir-nodebug $T/first-resdir-nodebug || :
396+
if test -f "$T/last-resdir-kasan"
397+
then
398+
mv $T/last-resdir-kasan $T/first-resdir-kasan || :
399+
fi
400+
if test -f "$T/last-resdir-kcsan"
401+
then
402+
mv $T/last-resdir-kcsan $T/first-resdir-kcsan || :
403+
fi
404+
firsttime=
405+
do_kasan=
406+
do_kcsan=
407+
else
408+
torture_bootargs=
409+
for i in $T/first-resdir-*
410+
do
411+
case "$i" in
412+
*-nodebug)
413+
torture_suffix=
414+
;;
415+
*-kasan)
416+
torture_suffix="-kasan"
417+
;;
418+
*-kcsan)
419+
torture_suffix="-kcsan"
420+
;;
421+
esac
422+
torture_set "refscale-$prim$torture_suffix" tools/testing/selftests/rcutorture/bin/kvm-again.sh "`cat "$i"`" --duration 5 --bootargs "refscale.scale_type=$prim"
423+
done
424+
fi
385425
done
426+
do_kasan="$do_kasan_save"
427+
do_kcsan="$do_kcsan_save"
386428

387429
if test "$do_rcuscale" = yes
388430
then
389431
primlist="`grep '\.name[ ]*=' kernel/rcu/rcuscale.c | sed -e 's/^[^"]*"//' -e 's/".*$//'`"
390432
else
391433
primlist=
392434
fi
435+
firsttime=1
436+
do_kasan_save="$do_kasan"
437+
do_kcsan_save="$do_kcsan"
393438
for prim in $primlist
394439
do
395-
torture_bootargs="rcuscale.scale_type="$prim" rcuscale.nwriters=$HALF_ALLOTED_CPUS rcuscale.holdoff=20 torture.disable_onoff_at_boot"
396-
torture_set "rcuscale-$prim" tools/testing/selftests/rcutorture/bin/kvm.sh --torture rcuscale --allcpus --duration 5 --kconfig "CONFIG_TASKS_TRACE_RCU=y CONFIG_NR_CPUS=$HALF_ALLOTED_CPUS" --trust-make
440+
if test -n "$firsttime"
441+
then
442+
torture_bootargs="rcuscale.scale_type="$prim" rcuscale.nwriters=$HALF_ALLOTED_CPUS rcuscale.holdoff=20 torture.disable_onoff_at_boot"
443+
torture_set "rcuscale-$prim" tools/testing/selftests/rcutorture/bin/kvm.sh --torture rcuscale --allcpus --duration 5 --kconfig "CONFIG_TASKS_TRACE_RCU=y CONFIG_NR_CPUS=$HALF_ALLOTED_CPUS" --trust-make
444+
mv $T/last-resdir-nodebug $T/first-resdir-nodebug || :
445+
if test -f "$T/last-resdir-kasan"
446+
then
447+
mv $T/last-resdir-kasan $T/first-resdir-kasan || :
448+
fi
449+
if test -f "$T/last-resdir-kcsan"
450+
then
451+
mv $T/last-resdir-kcsan $T/first-resdir-kcsan || :
452+
fi
453+
firsttime=
454+
do_kasan=
455+
do_kcsan=
456+
else
457+
torture_bootargs=
458+
for i in $T/first-resdir-*
459+
do
460+
case "$i" in
461+
*-nodebug)
462+
torture_suffix=
463+
;;
464+
*-kasan)
465+
torture_suffix="-kasan"
466+
;;
467+
*-kcsan)
468+
torture_suffix="-kcsan"
469+
;;
470+
esac
471+
torture_set "rcuscale-$prim$torture_suffix" tools/testing/selftests/rcutorture/bin/kvm-again.sh "`cat "$i"`" --duration 5 --bootargs "rcuscale.scale_type=$prim"
472+
done
473+
fi
397474
done
475+
do_kasan="$do_kasan_save"
476+
do_kcsan="$do_kcsan_save"
398477

399478
if test "$do_kvfree" = "yes"
400479
then

0 commit comments

Comments
 (0)