#!/bin/sh # PCP QA Test No. 508 # pmlogreduce workout (includes check for obscure interp.c bug reported # by Arthur Kepner @ sgi) # # Copyright (c) 2011 Ken McDonell. All Rights Reserved. # seq=`basename $0` echo "QA output created by $seq" # get standard environment, filters and checks . ./common.product . ./common.filter . ./common.check status=0 # success is the default! $sudo rm -rf $tmp.* $seq.full trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15 # real QA test starts here _filter1() { sed \ -e '/^archive:/d' \ -e '/^end:/d' \ -e '/^samples:/d' } _filter2() { sed \ -e '/^[a-z]/d' \ -e '/^Note/s/.*/<<< pmval header >>>/' } _join() { # Note: sed in the pipeline is because join(1) on ia64 SuSE SLES 11 # is broken and produces gratuitous white space in the output # join -a 1 -a 2 $1 $2 \ | sed -e 's/ */ /g' \ | awk ' /No .* values available No .* values available/ { next } { ok = 0 } NF % 2 == 1 { for (i = 2; i < 2+(NF-1)/2; i++) { j = i+(NF-1)/2 if ($i == $j) continue if ($i+0 == $i && $j+0 == $j && 0.98*$i <= $j && $j <= 1.02*$i) continue break } if (i == 2+(NF-1)/2) ok = 1 } ok == 0 { print }' } if pmlogreduce -A 3sec -t 3sec src/interpmark $tmp.reduce then : else echo "Arrgh: pmlogreduce failed!" status=1 exit fi # from src/mkinterpmark ... # # metric semantics type indom sample # disk.dev.read counter U64 60.1 500msec # disk.dev.write counter U64 60.1 2sec # disk.dev.total counter U64 60.1 10sec # disk.all.read counter U64 NULL 500msec # disk.all.write counter U64 NULL 2sec # disk.all.total counter U64 NULL 10sec # disk.dev.read_bytes counter U32 60.1 500msec # disk.dev.write_bytes counter U32 60.1 2sec # disk.dev.total_bytes counter U32 60.1 10sec # disk.all.read_bytes counter U32 NULL 500msec # disk.all.write_bytes counter U32 NULL 2sec # disk.all.total_bytes counter U32 NULL 10sec # # filesys.used instant U64 60.5 500msec # sample.longlong.bin instant 64 29.2 2sec # filesys.free instant U64 60.5 10sec # sample.longlong.one instant 64 NULL 500msec # swap.length instant U64 NULL 2sec # mem.util.kernelStack instant U64 NULL 10sec # filesys.usedfiles instant U32 60.5 500msec # swapdev.free instant U32 60.6 2sec # pmcd.buf.alloc instant 32 2.5 10sec # sample.control instant 32 NULL 500msec # kernel.all.uptime instant U32 NULL 2sec # network.tcpconn.close instant U32 NULL 10sec # # filesys.capacity discrete U64 60.5 2sec # tmpfs.capacity discrete U64 60.18 once # # mem.physmem discrete U64 NULL 2sec # # filesys.capacity discrete U32 60.5 2sec # hinv.cpu.cache discrete U32 60.0 once # filesys.maxfiles discrete U32 60.5 once # hinv.physmem discrete U32 NULL 2sec # hinv.pagesize discrete U32 NULL once # hinv.ncpu discrete U32 NULL once for m in \ \#500msec \ disk.dev.read disk.all.read disk.dev.read_bytes disk.all.read_bytes \ filesys.used sample.longlong.one filesys.usedfiles sample.control \ \#2sec \ disk.all.write disk.dev.write_bytes disk.all.write_bytes \ sample.longlong.bin swap.length swapdev.free kernel.all.uptime \ filesys.capacity mem.physmem filesys.capacity hinv.physmem \ \#10sec \ disk.dev.total disk.all.total disk.dev.total_bytes \ disk.all.total_bytes filesys.free mem.util.kernelStack \ pmcd.buf.alloc network.tcpconn.close \ \#once \ tmpfs.capacity hinv.cpu.cache filesys.maxfiles hinv.pagesize \ hinv.ncpu do case "$m" in \#*) continue ;; esac echo "=== $m ===" | tee -a $seq.full pmval -rz -w 12 -f 3 -A 3sec -t 3sec -a src/section-a $m \ | _filter1 >$tmp.in pmval -rz -w 12 -f 3 -A 3sec -t 3sec -a src/section-b $m \ | _filter2 >>$tmp.in pmval -rz -w 12 -f 3 -A 3sec -t 3sec -a src/section-d $m \ | _filter2 >>$tmp.in sed -n '/^[0-2]/{ s/[ ]*$// s/No values/No input values/ p }' $tmp.in >$tmp.in2 echo "--- inputs compared to merge ---" | tee -a $seq.full pmval -rz -w 12 -f 3 -U src/interpmark $m >>$seq.full 2>&1 pmval -rz -w 12 -f 3 -A 3sec -t 3sec -a src/interpmark $m \ | tee -a $seq.full \ | _filter1 >$tmp.merge sed -n '/^[0-2]/{ s/[ ]*$// s/No values/No merge values/ p }' $tmp.merge >$tmp.tmp _join $tmp.in2 $tmp.tmp echo "--- merge compared to reduce ---" pmval -rz -w 12 -f 3 -U $tmp.reduce $m >>$seq.full 2>&1 pmval -Dfetch,log,interp -rz -w 12 -f 3 -A 3sec -t 3sec -a $tmp.reduce $m 2>&1 \ | tee -a $seq.full \ | sed -n '/^[0-2]/{ s/[ ]*$// s/No values/No reduce values/ p }' >$tmp.out _join $tmp.tmp $tmp.out done # success, all done exit