pmrep: update TODO, man page
[pcp.git] / qa / 508
blob82469e9b00b5b55ed742ef1c4dfdd718b7db6579
1 #!/bin/sh
2 # PCP QA Test No. 508
3 # pmlogreduce workout (includes check for obscure interp.c bug reported
4 # by Arthur Kepner @ sgi)
6 # Copyright (c) 2011 Ken McDonell. All Rights Reserved.
9 seq=`basename $0`
10 echo "QA output created by $seq"
12 # get standard environment, filters and checks
13 . ./common.product
14 . ./common.filter
15 . ./common.check
17 status=0 # success is the default!
18 $sudo rm -rf $tmp.* $seq.full
19 trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
21 # real QA test starts here
23 _filter1()
25 sed \
26 -e '/^archive:/d' \
27 -e '/^end:/d' \
28 -e '/^samples:/d'
31 _filter2()
33 sed \
34 -e '/^[a-z]/d' \
35 -e '/^Note/s/.*/<<< pmval header >>>/'
38 _join()
40 # Note: sed in the pipeline is because join(1) on ia64 SuSE SLES 11
41 # is broken and produces gratuitous white space in the output
43 join -a 1 -a 2 $1 $2 \
44 | sed -e 's/ */ /g' \
45 | awk '
46 /No .* values available No .* values available/ { next }
47 { ok = 0 }
48 NF % 2 == 1 { for (i = 2; i < 2+(NF-1)/2; i++) {
49 j = i+(NF-1)/2
50 if ($i == $j)
51 continue
52 if ($i+0 == $i && $j+0 == $j &&
53 0.98*$i <= $j && $j <= 1.02*$i)
54 continue
55 break
57 if (i == 2+(NF-1)/2)
58 ok = 1
60 ok == 0 { print }'
63 if pmlogreduce -A 3sec -t 3sec archives/interpmark $tmp.reduce
64 then
66 else
67 echo "Arrgh: pmlogreduce failed!"
68 status=1
69 exit
72 # from src/mkinterpmark ...
74 # metric semantics type indom sample
75 # disk.dev.read counter U64 60.1 500msec
76 # disk.dev.write counter U64 60.1 2sec
77 # disk.dev.total counter U64 60.1 10sec
78 # disk.all.read counter U64 NULL 500msec
79 # disk.all.write counter U64 NULL 2sec
80 # disk.all.total counter U64 NULL 10sec
81 # disk.dev.read_bytes counter U32 60.1 500msec
82 # disk.dev.write_bytes counter U32 60.1 2sec
83 # disk.dev.total_bytes counter U32 60.1 10sec
84 # disk.all.read_bytes counter U32 NULL 500msec
85 # disk.all.write_bytes counter U32 NULL 2sec
86 # disk.all.total_bytes counter U32 NULL 10sec
88 # filesys.used instant U64 60.5 500msec
89 # sample.longlong.bin instant 64 29.2 2sec
90 # filesys.free instant U64 60.5 10sec
91 # sample.longlong.one instant 64 NULL 500msec
92 # swap.length instant U64 NULL 2sec
93 # mem.util.kernelStack instant U64 NULL 10sec
94 # filesys.usedfiles instant U32 60.5 500msec
95 # swapdev.free instant U32 60.6 2sec
96 # pmcd.buf.alloc instant 32 2.5 10sec
97 # sample.control instant 32 NULL 500msec
98 # kernel.all.uptime instant U32 NULL 2sec
99 # network.tcpconn.close instant U32 NULL 10sec
101 # filesys.capacity discrete U64 60.5 2sec
102 # tmpfs.capacity discrete U64 60.18 once
104 # mem.physmem discrete U64 NULL 2sec
106 # filesys.capacity discrete U32 60.5 2sec
107 # hinv.cpu.cache discrete U32 60.0 once
108 # filesys.maxfiles discrete U32 60.5 once
109 # hinv.physmem discrete U32 NULL 2sec
110 # hinv.pagesize discrete U32 NULL once
111 # hinv.ncpu discrete U32 NULL once
113 for m in \
114 \#500msec \
115 disk.dev.read disk.all.read disk.dev.read_bytes disk.all.read_bytes \
116 filesys.used sample.longlong.one filesys.usedfiles sample.control \
117 \#2sec \
118 disk.all.write disk.dev.write_bytes disk.all.write_bytes \
119 sample.longlong.bin swap.length swapdev.free kernel.all.uptime \
120 filesys.capacity mem.physmem filesys.capacity hinv.physmem \
121 \#10sec \
122 disk.dev.total disk.all.total disk.dev.total_bytes \
123 disk.all.total_bytes filesys.free mem.util.kernelStack \
124 pmcd.buf.alloc network.tcpconn.close \
125 \#once \
126 tmpfs.capacity hinv.cpu.cache filesys.maxfiles hinv.pagesize \
127 hinv.ncpu
129 case "$m"
131 \#*)
132 continue
134 esac
135 echo "=== $m ===" | tee -a $seq.full
136 pmval -rz -w 12 -f 3 -A 3sec -t 3sec -a archives/section-a $m \
137 | _filter1 >$tmp.in
138 pmval -rz -w 12 -f 3 -A 3sec -t 3sec -a archives/section-b $m \
139 | _filter2 >>$tmp.in
140 pmval -rz -w 12 -f 3 -A 3sec -t 3sec -a archives/section-d $m \
141 | _filter2 >>$tmp.in
142 sed -n '/^[0-2]/{
143 s/[ ]*$//
144 s/No values/No input values/
146 }' $tmp.in >$tmp.in2
147 echo "--- inputs compared to merge ---" | tee -a $seq.full
148 pmval -rz -w 12 -f 3 -U archives/interpmark $m >>$seq.full 2>&1
150 pmval -rz -w 12 -f 3 -A 3sec -t 3sec -a archives/interpmark $m \
151 | tee -a $seq.full \
152 | _filter1 >$tmp.merge
153 sed -n '/^[0-2]/{
154 s/[ ]*$//
155 s/No values/No merge values/
157 }' $tmp.merge >$tmp.tmp
158 _join $tmp.in2 $tmp.tmp
160 echo "--- merge compared to reduce ---"
161 pmval -rz -w 12 -f 3 -U $tmp.reduce $m >>$seq.full 2>&1
163 pmval -Dfetch,log,interp -rz -w 12 -f 3 -A 3sec -t 3sec -a $tmp.reduce $m 2>&1 \
164 | tee -a $seq.full \
165 | sed -n '/^[0-2]/{
166 s/[ ]*$//
167 s/No values/No reduce values/
169 }' >$tmp.out
170 _join $tmp.tmp $tmp.out
172 done
174 # success, all done
175 exit