summaryrefslogtreecommitdiff
path: root/qa/pconf
diff options
context:
space:
mode:
authorIgor Pashev <pashev.igor@gmail.com>2014-10-26 12:33:50 +0400
committerIgor Pashev <pashev.igor@gmail.com>2014-10-26 12:33:50 +0400
commit47e6e7c84f008a53061e661f31ae96629bc694ef (patch)
tree648a07f3b5b9d67ce19b0fd72e8caa1175c98f1a /qa/pconf
downloadpcp-debian.tar.gz
Debian 3.9.10debian/3.9.10debian
Diffstat (limited to 'qa/pconf')
-rw-r--r--qa/pconf/GNUmakefile18
-rw-r--r--qa/pconf/cpu/GNUmakefile17
-rw-r--r--qa/pconf/cpu/aggregate_util34
-rw-r--r--qa/pconf/cpu/excess_fpe43
-rw-r--r--qa/pconf/cpu/load_average29
-rw-r--r--qa/pconf/cpu/single_util36
-rw-r--r--qa/pconf/cpu/system_calls29
-rw-r--r--qa/pconf/cpu/system_mode45
-rw-r--r--qa/pconf/disk/GNUmakefile16
-rw-r--r--qa/pconf/disk/average_iops31
-rw-r--r--qa/pconf/disk/single_iops37
-rw-r--r--qa/pconf/filesys/GNUmakefile16
-rw-r--r--qa/pconf/filesys/buffer_cache37
-rw-r--r--qa/pconf/filesys/capacity34
-rw-r--r--qa/pconf/global/GNUmakefile16
-rw-r--r--qa/pconf/global/pcp_eoe93
-rw-r--r--qa/pconf/global/sss10
-rw-r--r--qa/pconf/memory/GNUmakefile16
-rw-r--r--qa/pconf/memory/exhausted26
-rw-r--r--qa/pconf/network/GNUmakefile16
-rw-r--r--qa/pconf/network/interface_bytes52
-rw-r--r--qa/pconf/network/interface_packets53
-rw-r--r--qa/pconf/network/tcp_dropped_conns42
-rw-r--r--qa/pconf/network/tcp_retransmit39
24 files changed, 785 insertions, 0 deletions
diff --git a/qa/pconf/GNUmakefile b/qa/pconf/GNUmakefile
new file mode 100644
index 0000000..5efad8a
--- /dev/null
+++ b/qa/pconf/GNUmakefile
@@ -0,0 +1,18 @@
+#!gmake
+
+TOPDIR = ../..
+include $(TOPDIR)/src/include/builddefs
+
+TESTDIR = $(PCP_VAR_DIR)/testsuite/pconf
+SUBDIRS = cpu disk filesys global memory network
+
+default default_pcp: $(SUBDIRS)
+ $(SUBDIRS_MAKERULE)
+
+setup:
+
+install install_pcp: $(SUBDIRS)
+ $(INSTALL) -m 755 -d $(TESTDIR)
+ $(SUBDIRS_MAKERULE)
+
+include $(BUILDRULES)
diff --git a/qa/pconf/cpu/GNUmakefile b/qa/pconf/cpu/GNUmakefile
new file mode 100644
index 0000000..3588b68
--- /dev/null
+++ b/qa/pconf/cpu/GNUmakefile
@@ -0,0 +1,17 @@
+#!gmake
+
+TOPDIR = ../../..
+include $(TOPDIR)/src/include/builddefs
+
+TESTDIR = $(PCP_VAR_DIR)/testsuite/pconf/cpu
+CONFIGS = aggregate_util excess_fpe load_average \
+ single_util system_calls system_mode
+LSRCFILES = $(CONFIGS)
+
+default default_pcp setup:
+
+install install_pcp:
+ $(INSTALL) -m 755 -d $(TESTDIR)
+ $(INSTALL) -m 644 $(CONFIGS) $(TESTDIR)
+
+include $(BUILDRULES)
diff --git a/qa/pconf/cpu/aggregate_util b/qa/pconf/cpu/aggregate_util
new file mode 100644
index 0000000..504264b
--- /dev/null
+++ b/qa/pconf/cpu/aggregate_util
@@ -0,0 +1,34 @@
+#pmieconf-rules 1
+#
+
+rule cpu.aggregate_util
+ default = "$rule$"
+ predicate =
+"some_host (
+ kernel.all.cpu.user $hosts$ +
+ kernel.all.cpu.sys $hosts$ +
+ kernel.all.cpu.intr $hosts$
+ > hinv.ncpu $hosts$ * $threshold$ / 100
+)"
+ enabled = no
+ version = 1
+ help =
+"The average processor utilization over all CPUs exceeded
+threshold percent during the last sample interval.";
+
+string rule
+ default = "aggregate processor saturation"
+ modify = no
+ display = no;
+
+percent threshold
+ default = 90
+ help =
+"Threshold percentage for CPU saturation, in the range 0 (idle)
+to 100 (completely busy), independent of the number of CPUs.";
+
+string action_expand
+ default = %h
+ display = no
+ modify = no;
+
diff --git a/qa/pconf/cpu/excess_fpe b/qa/pconf/cpu/excess_fpe
new file mode 100644
index 0000000..fe166eb
--- /dev/null
+++ b/qa/pconf/cpu/excess_fpe
@@ -0,0 +1,43 @@
+#pmieconf-rules 1
+#
+
+rule cpu.excess_fpe
+ default = "$rule$"
+ predicate =
+"some_host (
+ some_inst (
+ kernel.percpu.cpu.sys $hosts$ > $systime_util$ / 100 &&
+ kernel.percpu.syscall $hosts$ < $syscall_rate$
+ )
+)"
+ enabled = no
+ version = 1
+ help =
+"This predicate attempts to detect processes generating very large
+numbers of floating point exceptions (FPEs). Characteristic of this
+situation is heavy system time coupled with low system call rates
+(exceptions are delivered through the kernel to the process, taking
+some system time, but no system call is serviced on the applications
+behalf.";
+
+string rule
+ default = "possible high floating point exception rate"
+ modify = no
+ display = no;
+
+percent systime_util
+ default = 50
+ help =
+"Threshold percentage for kernel CPU utilization, in the range 0
+(idle) to 100 (completely busy)";
+
+double syscall_rate
+ default = 100
+ help =
+"Threshold system call rate at which something is deemed amiss.";
+
+string action_expand
+ default = %i@%h
+ display = no
+ modify = no;
+
diff --git a/qa/pconf/cpu/load_average b/qa/pconf/cpu/load_average
new file mode 100644
index 0000000..e5fa9bc
--- /dev/null
+++ b/qa/pconf/cpu/load_average
@@ -0,0 +1,29 @@
+#pmieconf-rules 1
+#
+
+rule cpu.load_average
+ default = "$rule$"
+ predicate =
+"some_host (
+ kernel.all.load $hosts$ #'1 minute'
+ > hinv.ncpu $hosts$ * $threshold$
+)"
+ enabled = yes
+ version = 1
+ help =
+"The current 1-minute load average is higher than threshold times the
+number of CPUs.
+The load average measures the number of processes that are running,
+runnable or soon to be runnable (i.e. in short term sleep).";
+
+string rule
+ default = "high 1-minute load average"
+ modify = no
+ display = no;
+
+double threshold
+ default = 1.5
+ help =
+"The threshold multiplier for load per CPU, typically in the range
+0.5 (very light load) to 4.0 (very heavy load ).";
+
diff --git a/qa/pconf/cpu/single_util b/qa/pconf/cpu/single_util
new file mode 100644
index 0000000..3f5dc81
--- /dev/null
+++ b/qa/pconf/cpu/single_util
@@ -0,0 +1,36 @@
+#pmieconf-rules 1
+#
+
+rule cpu.single_util
+ default = "$rule$"
+ predicate =
+"some_host (
+ some_inst (
+ kernel.percpu.cpu.user $hosts$ +
+ kernel.percpu.cpu.sys $hosts$ +
+ kernel.percpu.cpu.intr $hosts$
+ > $threshold$ / 100
+ )
+)"
+ enabled = no
+ version = 1
+ help =
+"The average processor utilization for at least one CPU exceeded
+threshold percent during the last sample interval.";
+
+string rule
+ default = "single processor saturation"
+ modify = no
+ display = no;
+
+percent threshold
+ default = 95
+ help =
+"Threshold percentage for CPU saturation, in the range 0 (idle)
+to 100 (completely busy)";
+
+string action_expand
+ default = %i@%h
+ display = no
+ modify = no;
+
diff --git a/qa/pconf/cpu/system_calls b/qa/pconf/cpu/system_calls
new file mode 100644
index 0000000..c2244e1
--- /dev/null
+++ b/qa/pconf/cpu/system_calls
@@ -0,0 +1,29 @@
+#pmieconf-rules 1
+#
+
+rule cpu.system_calls
+ default = "$rule$"
+ predicate =
+"some_host (
+ ( kernel.all.syscall $hosts$ / hinv.ncpu $hosts$ )
+ > $threshold$ count/sec
+)"
+ enabled = no
+ version = 1
+ help =
+"Average number of system calls per CPU per second exceeded threshold
+over the past sample interval.";
+
+string rule
+ default = "high average system call rate per CPU"
+ modify = no
+ display = no;
+
+double threshold
+ default = 2500
+ help =
+"The threshold of system calls per second per CPU. The appropriate
+value is a function of the processor type and the workload, but in
+the range 500 (a few, expensive systems calls) to 5000 (many,
+lightweight system calls) would be typical.";
+
diff --git a/qa/pconf/cpu/system_mode b/qa/pconf/cpu/system_mode
new file mode 100644
index 0000000..bdecce7
--- /dev/null
+++ b/qa/pconf/cpu/system_mode
@@ -0,0 +1,45 @@
+#pmieconf-rules 1
+#
+
+rule cpu.system_mode
+ default = "$rule$"
+ predicate =
+"some_host (
+ ( kernel.all.cpu.user $hosts$
+ + kernel.all.cpu.sys $hosts$
+ > hinv.ncpu $hosts$ * $busy$ / 100 ) &&
+ ( kernel.all.cpu.sys $hosts$ /
+ ( kernel.all.cpu.user $hosts$
+ + kernel.all.cpu.sys $hosts$ )
+ > $threshold$ / 100 )
+)"
+ enabled = yes
+ version = 1
+ help =
+"The average processor utilization over all CPUs was at least busy
+percent during the last sample interval, and the ratio of system time
+to busy time exceeded threshold percent.";
+
+string rule
+ default = "busy executing in system mode"
+ modify = no
+ display = no;
+
+percent busy
+ default = 75
+ help =
+"Busy percentage for average CPU utilization, in the range 0 (idle)
+to 100 (completely busy), independent of the number of CPUs.";
+
+percent threshold
+ default = 80
+ help =
+"Threshold percentage for system time as a fraction of the non-idle
+CPU time, in the range 0 (no system time) to 100 (all system time),
+independent of the number of CPUs.";
+
+string action_expand
+ default = "%h"
+ display = no
+ modify = no;
+
diff --git a/qa/pconf/disk/GNUmakefile b/qa/pconf/disk/GNUmakefile
new file mode 100644
index 0000000..ef3575e
--- /dev/null
+++ b/qa/pconf/disk/GNUmakefile
@@ -0,0 +1,16 @@
+#!gmake
+
+TOPDIR = ../../..
+include $(TOPDIR)/src/include/builddefs
+
+TESTDIR = $(PCP_VAR_DIR)/testsuite/pconf/disk
+CONFIGS = average_iops single_iops
+LSRCFILES = $(CONFIGS)
+
+default default_pcp setup:
+
+install install_pcp:
+ $(INSTALL) -m 755 -d $(TESTDIR)
+ $(INSTALL) -m 644 $(CONFIGS) $(TESTDIR)
+
+include $(BUILDRULES)
diff --git a/qa/pconf/disk/average_iops b/qa/pconf/disk/average_iops
new file mode 100644
index 0000000..9b03ebe
--- /dev/null
+++ b/qa/pconf/disk/average_iops
@@ -0,0 +1,31 @@
+#pmieconf-rules 1
+#
+
+rule disk.average_iops
+ default = "$rule$"
+ predicate =
+"some_host (
+ ( disk.all.total $hosts$ / hinv.ndisk $hosts$ )
+ > $threshold$ count/sec
+)"
+ enabled = no
+ version = 1
+ help =
+"The average rate of disk I/O operations per spindle per second
+exceeded the threshold during the last sample interval.";
+
+string rule
+ default = "high average disk activity per spindle"
+ modify = no
+ display = no;
+
+double threshold
+ default = 25
+ help =
+"Threshold in units of disk I/O operations per spindle per second.
+As a hint, the achievable peak is of the order of 100, although the
+disk model, the number of disks per controller, the spindle load
+balance and the distribution of transfer sizes all combine to make
+the practical peak either larger or smaller for any specific
+system.";
+
diff --git a/qa/pconf/disk/single_iops b/qa/pconf/disk/single_iops
new file mode 100644
index 0000000..cc42eff
--- /dev/null
+++ b/qa/pconf/disk/single_iops
@@ -0,0 +1,37 @@
+#pmieconf-rules 1
+#
+
+rule disk.single_iops
+ default = "$rule$"
+ predicate =
+"some_host (
+ some_inst (
+ disk.dev.total $hosts$ > $threshold$ count/sec
+ )
+)"
+ enabled = no
+ version = 1
+ help =
+"For at least one spindle, the average rate of disk I/O operations
+per second exceeded the threshold during the last sample interval.";
+
+string rule
+ default = "busy disk spindle"
+ modify = no
+ display = no;
+
+double threshold
+ default = 40
+ help =
+"Threshold in units of disk I/O operations per second.
+As a hint, the achievable peak is of the order of 100 IOPS for one
+disk, although the disk model, the number of disks per controller,
+the spindle load balance and the distribution of transfer sizes all
+combine to make the practical peak either larger or smaller for any
+specific system.";
+
+string action_expand
+ default = "%v:%i@%h"
+ display = no
+ modify = no;
+
diff --git a/qa/pconf/filesys/GNUmakefile b/qa/pconf/filesys/GNUmakefile
new file mode 100644
index 0000000..3620af7
--- /dev/null
+++ b/qa/pconf/filesys/GNUmakefile
@@ -0,0 +1,16 @@
+#!gmake
+
+TOPDIR = ../../..
+include $(TOPDIR)/src/include/builddefs
+
+TESTDIR = $(PCP_VAR_DIR)/testsuite/pconf/filesys
+CONFIGS = buffer_cache capacity
+LSRCFILES = $(CONFIGS)
+
+default default_pcp setup:
+
+install install_pcp:
+ $(INSTALL) -m 755 -d $(TESTDIR)
+ $(INSTALL) -m 644 $(CONFIGS) $(TESTDIR)
+
+include $(BUILDRULES)
diff --git a/qa/pconf/filesys/buffer_cache b/qa/pconf/filesys/buffer_cache
new file mode 100644
index 0000000..e964d0e
--- /dev/null
+++ b/qa/pconf/filesys/buffer_cache
@@ -0,0 +1,37 @@
+#pmieconf-rules 1
+#
+
+rule filesys.buffer_cache
+ default = "$rule$"
+ predicate =
+"some_host (
+ ( (kernel.all.io.lread $hosts$
+ - kernel.all.io.bread $hosts$)
+ / kernel.all.io.lread $hosts$ ) < $threshold$ / 100
+ && kernel.all.io.lread $hosts$ > 30 * 16 Kbytes/sec
+)"
+ enabled = no
+ version = 1
+ help =
+"Some file system read activity (at least 30 x 16 Kbyte logical reads
+per second), and the read hit ratio in the buffer cache is below
+threshold percent.";
+
+string rule
+ default = "low read hit ratio in buffer cache"
+ modify = no
+ display = no;
+
+percent threshold
+ default = 80
+ help =
+"The minimum acceptable buffer cache read hit ratio, expressed as a
+percentage. Values may be in the range 0 (nothing is read from the
+cache and poor performance is expected) to 100 (all reads come from
+the cache, no disk I/O required and good performance expected).";
+
+string action_expand
+ default = "%v%@%h"
+ display = no
+ modify = no;
+
diff --git a/qa/pconf/filesys/capacity b/qa/pconf/filesys/capacity
new file mode 100644
index 0000000..ffccddf
--- /dev/null
+++ b/qa/pconf/filesys/capacity
@@ -0,0 +1,34 @@
+#pmieconf-rules 1
+#
+
+rule filesys.capacity
+ default = "$rule$"
+ predicate =
+"some_host (
+ some_inst (
+ ( 100 * filesys.used $hosts$ >
+ $threshold$ * filesys.capacity $hosts$ ) &&
+ rate filesys.used $hosts$ > 0
+ )
+)"
+ enabled = yes
+ version = 1
+ help =
+"Filesystem is at least threshold percent full and the allocated
+space is growing.";
+
+string rule
+ default = "imminent file system full"
+ modify = no
+ display = no;
+
+percent threshold
+ default = 95
+ help =
+"The threshold of file system fullness, usually in the range 90 to 99.";
+
+string action_expand
+ default = "%i@%h"
+ display = no
+ modify = no;
+
diff --git a/qa/pconf/global/GNUmakefile b/qa/pconf/global/GNUmakefile
new file mode 100644
index 0000000..d0eb2b0
--- /dev/null
+++ b/qa/pconf/global/GNUmakefile
@@ -0,0 +1,16 @@
+#!gmake
+
+TOPDIR = ../../..
+include $(TOPDIR)/src/include/builddefs
+
+TESTDIR = $(PCP_VAR_DIR)/testsuite/pconf/global
+CONFIGS = pcp_eoe sss
+LSRCFILES = $(CONFIGS)
+
+default default_pcp setup:
+
+install install_pcp:
+ $(INSTALL) -m 755 -d $(TESTDIR)
+ $(INSTALL) -m 644 $(CONFIGS) $(TESTDIR)
+
+include $(BUILDRULES)
diff --git a/qa/pconf/global/pcp_eoe b/qa/pconf/global/pcp_eoe
new file mode 100644
index 0000000..6abcb66
--- /dev/null
+++ b/qa/pconf/global/pcp_eoe
@@ -0,0 +1,93 @@
+#pmieconf-rules 1
+#
+
+
+#
+# parameter definitions applicable to all rules
+# (unless overridden at the level of an individual rule or group)
+#
+
+double global.delta
+ default = 120
+ help =
+"Sample interval in seconds between evaluations of this rule.";
+
+unsigned global.holdoff
+ default = 15
+ help =
+"Once the condition is true, this parameter controls suppression of
+further evaluation of the rule for the specified number of minutes.
+A value of zero allows re-evaluation of the rule at the next sample
+time.";
+
+hostlist global.hosts
+ default = ""
+ help =
+"May be set to a list of host names for which the rules will be
+evaluated. Each host name should be prefixed by a colon and
+multiple entries separated by white space, e.g. :myhost :yourhost
+If the list is empty, the host will be the host named in the -h
+option to pmie(1) if specified, else the local host.";
+
+
+#
+# action definitions applicable to all rules follow
+#
+# o $rule$ defined locally & contains the "message" to be propagated
+# o $action_expand$ often overridden locally & contains the part of the
+# action string which is rule-semantics specific and will be expanded
+# possibly multiple times on truthful evaluation of the predicate to
+# contain values/instances/hosts which matched,e.g:
+# "%v@%h" might expand to "1.1@moomba 1.7@rattle 4.5@wobbly" if all
+# the rule is true for all of the hosts moomba, rattle and wobbly.
+#
+
+string global.action_expand
+ display = no
+ modify = no
+ default = "%v@%h"; # (value@host)
+ # some common alternatives:
+ # %i@%h (inst@host)
+ # %h (host)
+ # %v:%i@%h (value:inst@host)
+ # %v%@%h (value%@host)
+
+shell global.email_action
+ enabled = no
+ default = "/usr/sbin/Mail -s '$rule$^ $action_expand$^' $email_recipients$"
+ help =
+"The system log file /var/adm/SYSLOG will be updated when the rule
+condition is true.";
+
+string global.email_recipients
+ default = "root"
+ help =
+"Space separated list of e-mail addresses for notification from the
+\"email_action\" when it is enabled";
+
+shell global.user_action
+ enabled = no
+ default = "$user_command$"
+ help =
+"Execute \"user_command\" when the rule condition is true";
+
+string global.user_command
+ default = "/usr/bin/true $rule$^ $action_expand$"
+ help =
+"Shell (sh(1)) command line to execute when rule condition is true
+and \"user_action\" is enabled.";
+
+shell global.pcplog_action
+ enabled = yes
+ default = "/usr/pcp/bin/pmpost $rule$^ $action_expand$"
+ help =
+"The PCP notices file /var/adm/pcplog/NOTICES will be updated when
+the rule condition is true.";
+
+syslog global.syslog_action
+ enabled = no
+ default = "-p daemon.info $rule$^ $action_expand$"
+ help =
+"The system log file /var/adm/SYSLOG will be updated when the rule
+condition is true.";
+
diff --git a/qa/pconf/global/sss b/qa/pconf/global/sss
new file mode 100644
index 0000000..ce80501
--- /dev/null
+++ b/qa/pconf/global/sss
@@ -0,0 +1,10 @@
+#pmieconf-rules 1
+#
+
+shell global.sss_action
+ enabled = no
+ default = "/usr/bin/sslogger -cSSTOOLS -tPERFORMANCE -m '$rule$^ $action_expand$^'"
+ help =
+"The SSS (System Support Software) framework for the support of SGI
+systems will be notified when the rule condition is true.";
+
diff --git a/qa/pconf/memory/GNUmakefile b/qa/pconf/memory/GNUmakefile
new file mode 100644
index 0000000..658a17f
--- /dev/null
+++ b/qa/pconf/memory/GNUmakefile
@@ -0,0 +1,16 @@
+#!gmake
+
+TOPDIR = ../../..
+include $(TOPDIR)/src/include/builddefs
+
+TESTDIR = $(PCP_VAR_DIR)/testsuite/pconf/memory
+CONFIGS = exhausted
+LSRCFILES = $(CONFIGS)
+
+default default_pcp setup:
+
+install install_pcp:
+ $(INSTALL) -m 755 -d $(TESTDIR)
+ $(INSTALL) -m 644 $(CONFIGS) $(TESTDIR)/$(CONFIGS)
+
+include $(BUILDRULES)
diff --git a/qa/pconf/memory/exhausted b/qa/pconf/memory/exhausted
new file mode 100644
index 0000000..fad39ea
--- /dev/null
+++ b/qa/pconf/memory/exhausted
@@ -0,0 +1,26 @@
+#pmieconf-rules 1
+#
+
+rule memory.exhausted
+ default = "$rule$"
+ predicate =
+"some_host (30 %_sample swap.pagesout $hosts$ @0..9 > 0)"
+ enabled = yes
+ version = 1
+ help =
+"The system is swapping modified pages out of main memory to the
+swap partitions, and has been doing this on at least 3 of the
+last 10 evaluations of this rule.
+There appears to be insufficient main memory to meet the resident
+demands of the current workload.";
+
+string rule
+ default = "chronic main memory exhaustion"
+ modify = no
+ display = no;
+
+string action_expand
+ default = "%h"
+ modify = no
+ display = no;
+
diff --git a/qa/pconf/network/GNUmakefile b/qa/pconf/network/GNUmakefile
new file mode 100644
index 0000000..73b87b6
--- /dev/null
+++ b/qa/pconf/network/GNUmakefile
@@ -0,0 +1,16 @@
+#!gmake
+
+TOPDIR = ../../..
+include $(TOPDIR)/src/include/builddefs
+
+TESTDIR = $(PCP_VAR_DIR)/testsuite/pconf/network
+CONFIGS = interface_bytes interface_packets tcp_dropped_conns tcp_retransmit
+LSRCFILES = $(CONFIGS)
+
+default default_pcp setup:
+
+install install_pcp:
+ $(INSTALL) -m 755 -d $(TESTDIR)
+ $(INSTALL) -m 644 $(CONFIGS) $(TESTDIR)
+
+include $(BUILDRULES)
diff --git a/qa/pconf/network/interface_bytes b/qa/pconf/network/interface_bytes
new file mode 100644
index 0000000..5f75885
--- /dev/null
+++ b/qa/pconf/network/interface_bytes
@@ -0,0 +1,52 @@
+#pmieconf-rules 1
+#
+
+rule network.interface_bytes
+ default = "$rule$"
+ predicate =
+"some_host (
+ some_inst (
+ network.interface.total.bytes $hosts$ $interfaces$ >
+ $threshold$ Kbytes/sec
+ )
+)"
+ enabled = no
+ version = 1
+ help =
+"For at least one network interface, the average transfer rate (in
+and/or out) exceeded the threshold during the last sample interval.";
+
+string rule
+ default = "busy network interface (bytes)"
+ modify = no
+ display = no;
+
+double threshold
+ default = 500
+ help =
+"Threshold in units of Kbytes (in or out) per second per interface.
+A tolerable value depends on the type of network interface and
+the packet size; some experimentation may be required to find an
+accpetable threshold.";
+
+string interfaces
+ default = ""
+ help =
+"May be set to a list of network interfaces for which the rule will
+be evaluated, as a subset of configured network interfaces. Each
+network interface should be enclosed in single quotes, prefixed by a
+pound or hash (#) and multiple entries separated by white space,
+e.g. #'ec0' #'ec2'
+To discover the names of the network interfaces, execute the
+following command on the target host:
+ pminfo -f network.interface.total.bytes
+the (double) quoted instance names are the required network interface
+names.
+This is most useful to remove the loopback, SLIP and PPP interfaces
+from the rule evaluations.";
+
+string action_expand
+ default = "%v:%i@%h"
+ display = no
+ modify = no;
+
diff --git a/qa/pconf/network/interface_packets b/qa/pconf/network/interface_packets
new file mode 100644
index 0000000..b98198d
--- /dev/null
+++ b/qa/pconf/network/interface_packets
@@ -0,0 +1,53 @@
+#pmieconf-rules 1
+#
+
+rule network.interface_packets
+ default = "$rule$"
+ predicate =
+"some_host (
+ some_inst (
+ network.interface.total.packets $hosts$ $interfaces$ >
+ $threshold$ count/sec
+ )
+)"
+ enabled = no
+ version = 1
+ help =
+"For at least one network interface, the average rate of packet
+transfers (in and/or out) exceeded the threshold during the last
+sample interval.";
+
+string rule
+ default = "busy network interface (packets)"
+ modify = no
+ display = no;
+
+double threshold
+ default = 2000
+ help =
+"Threshold in units of packets (in or out) per second per interface.
+A tolerable value depends on the type of network interface and
+the packet size; some experimentation may be required to find
+an accpetable threshold.";
+
+string interfaces
+ default =""
+ help =
+"May be set to a list of network interfaces for which the rule will
+be evaluated, as a subset of configured network interfaces. Each
+network interface should be enclosed in single quotes, prefixed by a
+pound or hash (#) and multiple entries separated by white space,
+e.g. #'ec0' #'ec2'
+To discover the names of the network interfaces, execute the
+following command on the target host:
+ pminfo -f network.interface.total.packets
+the (double) quoted instance names are the required network interface
+names.
+This is most useful to remove the loopback, SLIP and PPP interfaces
+from the rule evaluations.";
+
+string action_expand
+ default = "%v:%i@%h"
+ display = no
+ modify = no;
+
diff --git a/qa/pconf/network/tcp_dropped_conns b/qa/pconf/network/tcp_dropped_conns
new file mode 100644
index 0000000..4b03184
--- /dev/null
+++ b/qa/pconf/network/tcp_dropped_conns
@@ -0,0 +1,42 @@
+#pmieconf-rules 1
+#
+
+rule network.tcp_dropped_conns
+ default = "$rule$"
+ predicate =
+"some_host (
+ ( 100 * ( network.tcp.drops $hosts$ +
+ network.tcp.conndrops $hosts$ +
+ network.tcp.timeoutdrop $hosts$ ) /
+ network.tcp.connects $hosts$ ) > $threshold$ &&
+ network.tcp.connects $hosts$ > 20 count/minute
+)"
+ enabled = no
+ version = 1
+ help =
+"There is some TCP connection activity (at least 20 connections
+per minute) and the average ratio of TCP dropped connections to
+successful connections exceeds threshold percent during the last
+sample interval.
+High drop rates indicate either network congestion (check the packet
+retransmission rate) or an application like a Web browser that is
+prone to terminating TCP connections prematurely, perhaps due to
+sluggish response or user impatience.";
+
+string rule
+ default = "high number of dropped TCP connections"
+ modify = no
+ display = no;
+
+percent threshold
+ default = 20
+ help =
+"Maximum acceptable percentage of dropped TCP connections per new
+TCP connection, in the range 0 (not expecting any connections to be
+dropped) to 100 (expect most connections to be dropped).";
+
+string action_expand
+ default = "%v%@%h"
+ display = no
+ modify = no;
+
diff --git a/qa/pconf/network/tcp_retransmit b/qa/pconf/network/tcp_retransmit
new file mode 100644
index 0000000..0c14119
--- /dev/null
+++ b/qa/pconf/network/tcp_retransmit
@@ -0,0 +1,39 @@
+#pmieconf-rules 1
+#
+
+rule network.tcp_retransmit
+ default = "$rule$"
+ predicate =
+"some_host (
+ ( 100 * ( network.tcp.sndrexmitpack $hosts$ +
+ network.tcp.rexmttimeo $hosts$ ) /
+ network.tcp.sndpack $hosts$ ) > $threshold$ &&
+ network.tcp.sndpack $hosts$ > 100 count/second
+)"
+ enabled = no
+ version = 1
+ help =
+"There is some network output activity (at least 100 TCP packets per
+second) and the average ratio of retransmitted TCP packets to output
+TCP packets exceeds threshold percent during the last sample
+interval.
+High retransmission rates are suggestive of network congestion, or
+long latency between the end-points of the TCP connections.";
+
+string rule
+ default = "high number of TCP packet retransmissions"
+ modify = no
+ display = no;
+
+percent threshold
+ default = 20
+ help =
+"Maximum acceptable percentage of retransmiited TCP packets per TCP
+output packet, in the range 0 (not expecting any retransmission) to
+100 (chronic saturation on the network).";
+
+string action_expand
+ default = "%v%@%h"
+ display = no
+ modify = no;
+