diff options
author | Paul E. McKenney <paulmck@kernel.org> | 2020-05-25 14:07:52 -0700 |
---|---|---|
committer | Paul E. McKenney <paulmck@kernel.org> | 2020-06-29 12:00:44 -0700 |
commit | f8b4bb23ec014a5d16663ad70b45d9f46c456ec4 (patch) | |
tree | 19551b890fb5e69190d4aa682114636a80512f45 /tools/testing/selftests/rcutorture/bin/kvm-recheck-refperf.sh | |
parent | 708cda31652c02e64adaeafafe7b996e4e14c3eb (diff) | |
download | linux-f8b4bb23ec014a5d16663ad70b45d9f46c456ec4.tar.gz |
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: Paul E. McKenney <paulmck@kernel.org>
Diffstat (limited to 'tools/testing/selftests/rcutorture/bin/kvm-recheck-refperf.sh')
-rwxr-xr-x | tools/testing/selftests/rcutorture/bin/kvm-recheck-refperf.sh | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/tools/testing/selftests/rcutorture/bin/kvm-recheck-refperf.sh b/tools/testing/selftests/rcutorture/bin/kvm-recheck-refperf.sh new file mode 100755 index 000000000000..6fc06cd3538e --- /dev/null +++ b/tools/testing/selftests/rcutorture/bin/kvm-recheck-refperf.sh @@ -0,0 +1,67 @@ +#!/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."; +}' |