Commit f8b4bb23 authored by Paul E. McKenney's avatar Paul E. McKenney
Browse files

torture: Add refperf to the rcutorture scripting



This commit updates the rcutorture scripting to include the new refperf
torture-test module.

Cc: Joel Fernandes (Google) <joel@joelfernandes.org>
Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
parent 708cda31
Loading
Loading
Loading
Loading
+67 −0
Original line number Diff line number Diff line
#!/bin/bash
# SPDX-License-Identifier: GPL-2.0+
#
# Analyze a given results directory for refperf performance measurements.
#
# Usage: kvm-recheck-refperf.sh resdir
#
# Copyright (C) IBM Corporation, 2016
#
# Authors: Paul E. McKenney <paulmck@linux.ibm.com>

i="$1"
if test -d "$i" -a -r "$i"
then
	:
else
	echo Unreadable results directory: $i
	exit 1
fi
PATH=`pwd`/tools/testing/selftests/rcutorture/bin:$PATH; export PATH
. functions.sh

configfile=`echo $i | sed -e 's/^.*\///'`

sed -e 's/^\[[^]]*]//' < $i/console.log | tr -d '\015' |
awk -v configfile="$configfile" '
/^[ 	]*Threads	Time\(ns\) *$/ {
	if (dataphase + 0 == 0) {
		dataphase = 1;
		# print configfile, $0;
	}
	next;
}

/[^ 	]*[0-9][0-9]*	[0-9][0-9]*\.[0-9][0-9]*$/ {
	if (dataphase == 1) {
		# print $0;
		readertimes[++n] = $2;
		sum += $2;
	}
	next;
}

{
	if (dataphase == 1)
		dataphase == 2;
	next;
}

END {
	print configfile " results:";
	newNR = asort(readertimes);
	if (newNR <= 0) {
		print "No refperf records found???"
		exit;
	}
	medianidx = int(newNR / 2);
	if (newNR == medianidx * 2)
		medianvalue = (readertimes[medianidx - 1] + readertimes[medianidx]) / 2;
	else
		medianvalue = readertimes[medianidx];
	print "Average reader duration: " sum / newNR " nanoseconds";
	print "Minimum reader duration: " readertimes[1];
	print "Median reader duration: " medianvalue;
	print "Maximum reader duration: " readertimes[newNR];
	print "Computed from refperf printk output.";
}'
+5 −4
Original line number Diff line number Diff line
@@ -180,13 +180,14 @@ do
		shift
		;;
	--torture)
		checkarg --torture "(suite name)" "$#" "$2" '^\(lock\|rcu\|rcuperf\)$' '^--'
		checkarg --torture "(suite name)" "$#" "$2" '^\(lock\|rcu\|rcuperf\|refperf\)$' '^--'
		TORTURE_SUITE=$2
		shift
		if test "$TORTURE_SUITE" = rcuperf
		if test "$TORTURE_SUITE" = rcuperf || test "$TORTURE_SUITE" = refperf
		then
			# If you really want jitter for rcuperf, specify
			# it after specifying rcuperf.  (But why?)
			# If you really want jitter for refperf or
			# rcuperf, specify it after specifying the rcuperf
			# or the refperf.  (But why jitter in these cases?)
			jitter=0
		fi
		;;
+2 −2
Original line number Diff line number Diff line
@@ -33,8 +33,8 @@ then
fi
cat /dev/null > $file.diags

# Check for proper termination, except that rcuperf runs don't indicate this.
if test "$TORTURE_SUITE" != rcuperf
# Check for proper termination, except for rcuperf and refperf.
if test "$TORTURE_SUITE" != rcuperf && test "$TORTURE_SUITE" != refperf
then
	# check for abject failure

+2 −0
Original line number Diff line number Diff line
NOPREEMPT
PREEMPT
+2 −0
Original line number Diff line number Diff line
CONFIG_RCU_REF_PERF_TEST=y
CONFIG_PRINTK_TIME=y
Loading