| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- #!/bin/bash
- # SPDX-License-Identifier: GPL-2.0+
- #
- # Analyze a given results directory for refscale performance measurements.
- #
- # Usage: kvm-recheck-refscale.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" '
- /^[ ]*Runs 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 refscale records found???"
- exit;
- }
- medianidx = int(newNR / 2);
- if (newNR == medianidx * 2)
- medianvalue = (readertimes[medianidx - 1] + readertimes[medianidx]) / 2;
- else
- medianvalue = readertimes[medianidx];
- points = "Points:";
- for (i = 1; i <= newNR; i++)
- points = points " " readertimes[i];
- print points;
- 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 refscale printk output.";
- }'
|