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
72
|
#! /bin/sh
# PCP QA Test No. 034
# pmlogger with different logging rates
#
# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
#
seq=`basename $0`
echo "QA output created by $seq"
# get standard filters
. ./common.product
. ./common.filter
trap "rm -f $tmp.*; exit" 0 1 2 3 15
# real QA test starts here
#
# Logs are built for 70 samples (-s70) (see Makefile)
# The sample metric rates are 100msec, 500msec, 900msec
# Theoretically,....
# This means that (x + x/5 + x/9 = 70) for integral x.
# => 59x = 70 * 45
# => x ~= 53.39
# But x is integral
# So, x = 54, x/5 = 10, x/9 = 6 (54 + 10 + 6 = 70)
#
# Note below that n[i] is not incremented on its 1st occurrence
# => expect values of 53, 9, 5
for arch in src/bar src/mv-bar src/noti-bar
do
echo
echo "=== $arch ==="
pmdumplog $arch \
| sed -e 's/:/ /g' \
| $PCP_AWK_PROG '
/^[0-9]/ { print $3,$NF }' \
| $PCP_AWK_PROG '
{ if (l[$2] != "") {
delta = $1 - l[$2];
if (delta < 0)
delta += 60;
# print $2,delta
t[$2] += delta
n[$2]++
}
l[$2] = $1
}
END { for (i in n) {
printf "%d msec requested: ",i
if (n[i] != 0)
ave = 1000*t[i]/n[i]
else
ave = 0
if (i == 100 && 51 <= n[i] && n[i] <= 54)
printf "no. of samples within range, "
else if (i == 500 && 9 <= n[i] && n[i] <= 11)
printf "no. of samples within range, "
else if (i == 900 && 4 <= n[i] && n[i] <= 6)
printf "no. of samples within range, "
else
printf "no. of samples (%d) unexpected, ",n[i]
if (0.9 * i <= ave && ave <= 1.1 * i)
printf "avg within 10%% of requested delay\n"
else
printf "avg (%.2f msec) outside 10%% of requested delay\n",1000*t[i]/n[i]
}
}' \
| LC_COLLATE=POSIX sort
done
|