diff options
Diffstat (limited to 'qa/366')
-rwxr-xr-x | qa/366 | 332 |
1 files changed, 332 insertions, 0 deletions
@@ -0,0 +1,332 @@ +#!/bin/sh +# PCP QA Test No. 366 +# pmlogconf - migrate from version 1.0 to 2.0 +# +# Copyright (c) 2010 Ken McDonell. All Rights Reserved. +# +# Maintenance notes. +# As pmlogconf usage grows, the generated pmlogconf files are going +# to become more complicated and more variable across platforms and +# in particular groups will change from not being expanded by default +# to be expanded by default, and new groups will be added. +# +# Where this test _expects_ a control line to be expanded to a group +# of metrics, we use platform/version variants of the *.out files. +# +# But where a control line is expanded on some platforms, but not +# on others, we should just cull the control line from the $tmp.conf +# file and the block of related changes in all the *.out files ... +# as long as some expansion is done, the test remains valid. +# +# Newly added groups should be handled by adding to the $tmp.cull-list +# file below, using the pmlogconf "tag", e.g. networking/nfs2-client, and +# possibly removing the block of related changes in all the *.out files +# +# Newly added metrics within a group we care about should be culled +# in _filter(). +# + +seq=`basename $0` +echo "QA output created by $seq" + +# get standard environment, filters and checks +. ./common.product +. ./common.filter +. ./common.check +. ./localconfig + +[ -f $PCP_BINADM_DIR/pmlogconf-setup ] || _notrun "pmlogconf version 2.0 not installed" + +_filter() +{ + sed \ + -e '/network.interface.out.fifo/d' \ + -e '/network.interface.in.fifo/d' \ + -e "s;$PCP_VAR_DIR;\$PCP_VAR_DIR;g" \ + -e '/^[0-9]/d' +} + +status=0 # success is the default! +$sudo rm -rf $tmp.* $seq.full +trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15 + +cat <<End-of-File >$tmp.cull-list +networking/nfs2-client +networking/nfs2-server +networking/nfs3-client +networking/nfs3-server +networking/nfs4-client +networking/nfs4-server +tools/atop +tools/collectl +tools/dmcache +tools/mpstat +tools/vmstat +tools/iostat +tools/sar +shping/summary +postgresql/summary +sqlserver/summary +mysql/summary +memory/proc-linux +disk/perpartition +End-of-File + +# turn $tmp.cull-list into an awk program to cull groups like +#+ networking/nfs2-client:n:default: +## NFS v2 client stats +#---- +# +echo "BEGIN { i=0; skip=0" >$tmp.awk +sed -e 's/.*/ cull[i++] = "&"/' <$tmp.cull-list >>$tmp.awk +cat <<'End-of-File' >>$tmp.awk +} +$1 == "#+" { for (tag in cull) { + split($2, word, /:/) + if (word[1] == cull[tag]) { + skip = 1 + next + } + } + skip = 0 +} +skip == 0 { print } +End-of-File + +cat <<'End-of-File' >$tmp.conf +#pmlogconf 1.0 +# pmlogconf.sh control file version +# +# pmlogger(1) config file created and updated by +# pmlogconf.sh(1). +# +# DO NOT UPDATE THE INTITIAL SECTION OF THIS FILE. +# Any changes may be lost the next time pmlogconf.sh is used +# on this file. +# + +# System configuration +# +#+ I0:n:once: +## hardware configuration [nodevis, osvis, oview, routervis, +## pmchart:Overview] +#---- + +# Disk activity +# +#+ D0:n:default: +## activity (IOPs and bytes for both reads and writes) over all disks +## [osvis, pmstat, pmchart:Disk, pmchart:Overview] +#---- +#+ D1:n:default: +## per controller disk activity [pmchart:DiskCntrls] +#---- +#+ D2:n:default: +## per spindle disk activity [dkvis, pmie:per_disk] +#---- +#+ D3:n:default: +## all available data per disk spindle +#---- + +# CPU activity +# +#+ C0:n:default: +## utilization (usr, sys, idle, ...) over all CPUs [osvis, pmstat, +## pmchart:CPU, pmchart:Overview, pmie:cpu] +#---- +#+ C2:n:default: +## contributions to CPU wait time +#---- +#+ C1:n:default: +## utilization per CPU [clustervis, mpvis, nodevis, oview, pmie:cpu, +## pmie:per_cpu] +#---- +#+ C3:n:default: +## per CPU contributions to wait time +#---- + +# Kernel activity +# +#+ K0:n:default: +## load average and number of logins [osvis, pmstat, pmchart:LoadAvg, +## pmchart:Overview, pmie:cpu] +#---- +#+ Ka:n:default: +## run and swap queues [pmkstat] +#---- +#+ K1:n:default: +## context switches, total syscalls and counts for selected calls (e.g. read, +## write, fork, exec, select) over all CPUs [pmstat, pmchart:Syscalls, +## pmie:cpu] +#---- +#+ K2:n:default: +## per CPU context switches, total syscalls and counts for selected calls +## [pmie:per_cpu] +#---- +#+ K3:n:default: +## bytes across the read() and write() syscall interfaces +#---- +#+ K4:n:default: +## interrupts [pmkstat] +#---- +#+ K5:n:default: +## buffer cache reads, writes, hits and misses [pmchart:BufferCache, +## pmie:filesys] +#---- +#+ K6:n:default: +## all available buffer cache data +#---- +#+ K7:n:default: +## vnode activity +#---- +#+ K8:n:default: +## name cache (namei, iget, etc) activity [pmchart:DNLC, pmie:filesys] +#---- +#+ K9:n:default: +## asynchronous I/O activity +#---- + +# Memory +# +#+ M0:n:default: +## pages in and out (severe VM demand) [pmstat, pmchart:Paging] +#---- +#+ M1:n:default: +## address translation (faults and TLB activity) +#---- +#+ M2:n:default: +## kernel memory allocation [osvis, pmstat, pmchart:Memory, pmchart:Overview] +#---- +#+ M3:n:default: +## current swap allocation and all swap activity [pmchart:Swap, pmie:memory] +#---- +#+ M4:n:default: +## swap configuration +#---- +#+ M5:n:default: +## "large" page and Origin node-based allocations and activity [nodevis, +## oview] +#---- +#+ M7:n:default: +## NUMA migration stats [nodevis, oview] +#---- +#+ M6:n:default: +## all NUMA stats +#---- + +# Network +# +#+ N0:n:default: +## bytes and packets (in and out) and bandwidth per network interface +## [clustervis, osvis, pmchart:NetBytes, pmchart:Overview, pmie:per_netif] +#---- +#+ N1:n:default: +## all available data per network interface +#---- +#+ N2:n:default: +## TCP bytes and packets (in and out), connects, accepts, drops and closes +## [pmchart:NetConnDrop, pmchart:NetPackets, pmie:network] +#---- +#+ N3:n:default: +## all available TCP data [pmchart:NetTCPCongestion] +#---- +#+ N4:n:default: +## UDP packets in and out [pmchart:NetPackets] +#---- +#+ N5:n:default: +## all available UDP data +#---- +#+ N6:n:default: +## socket stats (counts by type and state) +#---- +#+ N7:n:default: +## all available data for other protocols (IP, ICMP, IGMP) +#---- +#+ N8:n:default: +## mbuf stats (alloc, failed, waited, etc) [pmie:network] +#---- +#+ N9:n:default: +## multicast routing stats +#---- +#+ Na:n:default: +## SVR5 streams activity +#---- + +# Services +# +#+ S2:n:default: +## RPC stats [pmie:rpc] +#---- + +# Filesystems and Volumes +# +#+ F0:n:default: +## Filesystem fullness [pmchart:FileSystem, pmie:filesys] +#---- +#+ F1:n:default: +## XFS data and log traffic +#---- +#+ F2:n:default: +## all available XFS data +#---- +#+ F3:n:default: +## XLV operations and bytes per volume [xlv_vis] +#---- +#+ F4:n:default: +## XLV striped volume stats [xlv_vis] +#---- +#+ F6:n:default: +## XVM operations and bytes per volume +#---- +#+ F7:n:default: +## XVM stripe, mirror and concat volume stats [pmie:xvm] +#---- +#+ F8:n:default: +## all available XVM data +#---- +#+ F5:n:default: +## EFS activity +#---- + +# Hardware event counters +# +#+ H0:n:default: +## NUMALink routers [nodevis, oview, routervis, pmchart:NUMALinks, +## pmie:craylink] +#---- +#+ H1:n:default: +## Origin hubs [pmie:craylink] +#---- +#+ H2:n:default: +## global MIPS CPU event counters (enable first with ecadmin(1)) +#---- +#+ H3:n:default: +## XBOW activity [xbowvis] +#---- + +# DO NOT UPDATE THE FILE ABOVE THIS LINE +# Otherwise any changes may be lost the next time pmlogconf.sh is +# used on this file. +# +# It is safe to make additions from here on ... +# + +End-of-File +cp $tmp.conf $tmp.orig + +# real QA test starts here +echo q \ +| $PCP_BINADM_DIR/pmlogconf $tmp.conf >/dev/null + +cat $tmp.conf >$seq.full +echo >>$seq.full +cat $tmp.awk >>$seq.full +$PCP_AWK_PROG -f $tmp.awk <$tmp.conf >$tmp.tmp +echo >>$seq.full +echo "after awking ..." >>$seq.full +cat $tmp.tmp >>$seq.full + +diff $tmp.orig $tmp.tmp | _filter + +# success, all done +exit |