#!/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."; }'