hc
2024-05-14 bedbef8ad3e75a304af6361af235302bcc61d06b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#!/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.";
}'