summaryrefslogtreecommitdiff
path: root/src/pmieconf/percpu
diff options
context:
space:
mode:
Diffstat (limited to 'src/pmieconf/percpu')
-rw-r--r--src/pmieconf/percpu/context_switch70
-rw-r--r--src/pmieconf/percpu/localdefs45
-rw-r--r--src/pmieconf/percpu/many_util85
-rw-r--r--src/pmieconf/percpu/some_util83
-rw-r--r--src/pmieconf/percpu/syscall80
-rw-r--r--src/pmieconf/percpu/system84
6 files changed, 447 insertions, 0 deletions
diff --git a/src/pmieconf/percpu/context_switch b/src/pmieconf/percpu/context_switch
new file mode 100644
index 0000000..fdee5cd
--- /dev/null
+++ b/src/pmieconf/percpu/context_switch
@@ -0,0 +1,70 @@
+#pmieconf-rules 1
+# --- DO NOT MODIFY THIS FILE --- see pmieconf(4)
+#
+
+rule per_cpu.context_switch
+ summary = "$rule$"
+ enumerate = "hosts"
+ predicate =
+"some_host (
+ some_inst (
+ kernel.percpu.pswitch $hosts$ > $threshold$ count/sec
+ )
+ && hinv.ncpu $hosts$ > 1
+)"
+ enabled = yes
+ version = 1
+ help =
+"The number of context switches per second for at least one CPU
+exceeded $threshold$ over the past sample interval.
+
+This rule only applies to multi-processor systems, for
+single-processor systems refer to the cpu.context_switch rule.
+
+For Origin 200 and Origin 2000 systems, use the command
+ $ pminfo -f hinv.map.cpu
+to discover the abbreviated PCP names of the installed CPUs and
+their corresponding full names in the /hw file system.";
+
+string rule
+ default = "High per CPU context switch rate"
+ modify = no
+ display = no;
+
+double threshold
+ default = 5000
+ help =
+"The threshold number of context switches per second per CPU.";
+
+string action_expand
+ default = %vctxsw/s[%i]@%h
+ display = no
+ modify = no;
+
+string email_expand
+ default = "host: %h CPU: %i context switches: %v/sec"
+ display = no
+ modify = no;
+
+
+# Configuration info specific to non-PCP tools follows...
+#
+
+# for SGI Embedded Support Partner integration:
+string esp_type
+ default = "0x200056"
+ display = no
+ modify = no;
+
+# for EnlightenDSM integration:
+string enln_test
+ default = per_cpu.context_switch
+ display = no
+ modify = no;
+string enln_units
+ default = ctxsw/s[%i]
+ display = no
+ modify = no;
+
+#
+# --- DO NOT MODIFY THIS FILE --- see pmieconf(4)
diff --git a/src/pmieconf/percpu/localdefs b/src/pmieconf/percpu/localdefs
new file mode 100644
index 0000000..7bb0c69
--- /dev/null
+++ b/src/pmieconf/percpu/localdefs
@@ -0,0 +1,45 @@
+ALL_RULES = syscall some_util many_util context_switch system
+
+LOCAL_RULES = $(ALL_RULES)
+
+# Metrics missing from Linux
+#
+# rule: context_switch
+# kernel.percpu.pswitch -12357 Unknown metric name
+#
+# rule: syscall
+# kernel.percpu.syscall -12357 Unknown metric name
+#
+ifeq ($(TARGET_OS), linux)
+LOCAL_RULES = some_util many_util system
+endif
+
+# Metrics missing from Mac OS X
+#
+# rule: syscall
+# kernel.percpu.syscall -12357 Unknown metric name
+#
+# rule: some_util
+# kernel.percpu.cpu.intr -12357 Unknown metric name
+#
+# rule: many_util
+# kernel.percpu.cpu.intr -12357 Unknown metric name
+#
+# rule: context_switch
+# kernel.percpu.pswitch -12357 Unknown metric name
+#
+ifeq ($(TARGET_OS), darwin)
+LOCAL_RULES = system
+endif
+
+# Metrics missing from Solaris
+#
+# rule: many_util
+# kernel.percpu.cpu.intr -12357 Unknown metric name
+#
+# rule: some_util
+# kernel.percpu.cpu.intr -12357 Unknown metric name
+#
+ifeq ($(TARGET_OS), solaris)
+LOCAL_RULES = syscall context_switch system
+endif
diff --git a/src/pmieconf/percpu/many_util b/src/pmieconf/percpu/many_util
new file mode 100644
index 0000000..9fe2f08
--- /dev/null
+++ b/src/pmieconf/percpu/many_util
@@ -0,0 +1,85 @@
+#pmieconf-rules 1
+# --- DO NOT MODIFY THIS FILE --- see pmieconf(4)
+#
+
+rule per_cpu.many_util
+ summary = "$rule$"
+ enumerate = hosts
+ predicate =
+"some_host (
+ $pct$ %_inst (
+ 100 * ( kernel.percpu.cpu.user $hosts$ +
+ kernel.percpu.cpu.sys $hosts$ +
+ kernel.percpu.cpu.intr $hosts$ )
+ > $threshold$
+ )
+ && hinv.ncpu $hosts$ > $min_cpu_count$
+)"
+ enabled = yes
+ version = 1
+ help =
+"The processor utilization for at least pct percent of the CPUs
+exceeded threshold percent during the last sample interval. Only
+applies to multi-processor systems having more than min_cpu_count
+processors - for single-processor systems refer to the cpu.util
+rule, for multi-processor systems with less than min_cpu_count
+processors refer to the per_cpu.some_util rule.";
+
+string rule
+ default = "High number of saturated processors"
+ modify = no
+ display = no;
+
+percent threshold
+ default = 95
+ help =
+"Threshold percentage for CPU saturation, in the range 0 (idle)
+to 100 (completely busy)";
+
+percent pct
+ default = 80
+ help =
+"Percentage of the processors which must be utilized greater
+than threshold percent, in the range 0 (no processors utilized)
+to 100 (all processors).";
+
+unsigned min_cpu_count
+ default = 4
+ help =
+"Lower limit on number of processors for this rule - this rule will
+apply to configurations of greater than min_cpu_count CPUs.
+For smaller processor counts, the per_cpu.some_util rule may be more
+appropriate.";
+
+string action_expand
+ default = "\\\\>$pct$%cpus@%h"
+ display = no
+ modify = no;
+
+string email_expand
+ default = "host: %h more than $pct$% of the processors are saturated"
+ display = no
+ modify = no;
+
+
+# Configuration info specific to non-PCP tools follows...
+#
+
+# for SGI Embedded Support Partner integration:
+string esp_type
+ default = "0x20005F"
+ display = no
+ modify = no;
+
+# for EnlightenDSM integration:
+string enln_test
+ default = per_cpu.many_util
+ display = no
+ modify = no;
+string enln_units
+ default = "busy_CPUs"
+ display = no
+ modify = no;
+
+#
+# --- DO NOT MODIFY THIS FILE --- see pmieconf(4)
diff --git a/src/pmieconf/percpu/some_util b/src/pmieconf/percpu/some_util
new file mode 100644
index 0000000..a065226
--- /dev/null
+++ b/src/pmieconf/percpu/some_util
@@ -0,0 +1,83 @@
+#pmieconf-rules 1
+# --- DO NOT MODIFY THIS FILE --- see pmieconf(4)
+#
+
+rule per_cpu.some_util
+ summary = "$rule$"
+ enumerate = hosts
+ predicate =
+"some_host (
+ some_inst (
+ ( 100 * ( kernel.percpu.cpu.user $hosts$ +
+ kernel.percpu.cpu.sys $hosts$ +
+ kernel.percpu.cpu.intr $hosts$ ) )
+ > $threshold$
+ )
+ && hinv.ncpu $hosts$ > 1
+ && hinv.ncpu $hosts$ <= $max_cpu_count$
+)"
+ enabled = yes
+ version = 1
+ help =
+"The processor utilization for at least one CPU exceeded threshold
+percent during the last sample interval. Only applies to
+multi-processor systems with less than max_cpu_count processors -
+for single-processor systems refer to the cpu.util rule, and for
+multi-processor systems with more than max_cpu_count processors
+refer to the cpu.many_util rule.
+For Origin 200 and Origin 2000 systems, use the command
+ $ pminfo -f hinv.map.cpu
+to discover the abbreviated PCP names of the installed CPUs and
+their corresponding full names in the /hw file system.";
+
+string rule
+ default = "High per CPU processor utilization"
+ modify = no
+ display = no;
+
+percent threshold
+ default = 95
+ help =
+"Threshold percentage for CPU saturation, in the range 0 (idle)
+to 100 (completely busy)";
+
+unsigned max_cpu_count
+ default = 4
+ help =
+"Upper limit on number of processors for this rule - this rule will
+apply to configurations of between two and max_cpu_count CPUs.
+For larger processor counts, the per_cpu.many_util rule may be more
+appropriate.";
+
+string action_expand
+ default = %v%util[%i]@%h
+ display = no
+ modify = no;
+
+string email_expand
+ default = "host: %h CPU: %i utilization: %v%"
+ display = no
+ modify = no;
+
+
+# Configuration info specific to non-PCP tools follows...
+#
+
+# for SGI Embedded Support Partner integration:
+string esp_type
+ default = "0x200059"
+ display = no
+ modify = no;
+
+# for EnlightenDSM integration:
+string enln_test
+ default = per_cpu.some_util
+ display = no
+ modify = no;
+string enln_units
+ default = %util[%i]
+ display = no
+ modify = no;
+
+#
+# --- DO NOT MODIFY THIS FILE --- see pmieconf(4)
diff --git a/src/pmieconf/percpu/syscall b/src/pmieconf/percpu/syscall
new file mode 100644
index 0000000..fbfbeee
--- /dev/null
+++ b/src/pmieconf/percpu/syscall
@@ -0,0 +1,80 @@
+#pmieconf-rules 1
+# --- DO NOT MODIFY THIS FILE --- see pmieconf(4)
+#
+
+rule per_cpu.syscall
+ summary = "$rule$"
+ enumerate = hosts
+ predicate =
+"some_host (
+ some_inst (
+ kernel.percpu.syscall $hosts$ > $threshold$ count/sec
+ )
+ && hinv.ncpu $hosts$ > 1
+)"
+ enabled = yes
+ version = 1
+ help =
+"The number of system calls per second for at least one CPU
+exceeded threshold over the past sample interval.
+
+This rule only applies to multi-processor systems, for
+single-processor systems refer to the cpu.syscall rule.
+
+For Origin 200 and Origin 2000 systems, use the command
+ $ pminfo -f hinv.map.cpu
+to discover the abbreviated PCP names of the installed CPUs and
+their corresponding full names in the /hw file system.";
+
+string rule
+ default = "High per CPU system call rate"
+ modify = no
+ display = no;
+
+double threshold
+ default = 12000
+ help =
+"The threshold of system calls per second per CPU. The appropriate
+value here is a function of the processor type and the workload, but
+here are some indicative figures of sustained system call rates for a
+single process:
+ getpid() - 380000 syscalls/sec
+ lseek() to start of file - 280000 syscalls/sec
+ gettimeofday() - 200000 syscalls/sec
+ read() at end of file - 83000 syscalls/sec
+ file creat() and close() - 65000 syscalls/sec
+ socket(), connect() and close() - 7000 syscalls/sec
+(generated using an otherwise idle system with 180MHz R10000 processors).";
+
+string action_expand
+ default = %vscall/s[%i]@%h
+ display = no
+ modify = no;
+
+string email_expand
+ default = "host: %h CPU: %i syscalls/sec: %v"
+ display = no
+ modify = no;
+
+
+# Configuration info specific to non-PCP tools follows...
+#
+
+# for SGI Embedded Support Partner integration:
+string esp_type
+ default = "0x200057"
+ display = no
+ modify = no;
+
+# for EnlightenDSM integration:
+string enln_test
+ default = per_cpu.syscall
+ display = no
+ modify = no;
+string enln_units
+ default = scall/s[%i]
+ display = no
+ modify = no;
+
+#
+# --- DO NOT MODIFY THIS FILE --- see pmieconf(4)
diff --git a/src/pmieconf/percpu/system b/src/pmieconf/percpu/system
new file mode 100644
index 0000000..223692c
--- /dev/null
+++ b/src/pmieconf/percpu/system
@@ -0,0 +1,84 @@
+#pmieconf-rules 1
+# --- DO NOT MODIFY THIS FILE --- see pmieconf(4)
+#
+
+rule per_cpu.system
+ summary = "$rule$"
+ enumerate = hosts
+ # need first conjunct to get %v in actions...
+ predicate =
+"some_host (
+ some_inst (
+ // first term is always true, but provides %v for actions ...
+ ( 100 * kernel.percpu.cpu.sys $hosts$ ) > 0
+ && 100 * ( kernel.percpu.cpu.user $hosts$ +
+ kernel.percpu.cpu.sys $hosts$ ) > $busy$
+ && 100 * kernel.percpu.cpu.sys $hosts$ /
+ ( kernel.percpu.cpu.user $hosts$ + kernel.percpu.cpu.sys $hosts$ )
+ > $threshold$
+ )
+ && hinv.ncpu $hosts$ > 1
+)"
+ enabled = yes
+ version = 1
+ help =
+"Over the last sample interval, at least one CPU was active for
+busy percent or more, and the ratio of system time to busy time
+exceeded threshold percent. Only applies to multi-processor
+systems, for single-processor systems refer to the cpu.system
+rule.
+For Origin 200 and Origin 2000 systems, use the command
+ $ pminfo -f hinv.map.cpu
+to discover the abbreviated PCP names of the installed CPUs and
+their corresponding full names in the /hw file system.";
+
+string rule
+ default = "Some CPU 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 = %v%sys[%i]@%h
+ display = no
+ modify = no;
+
+string email_expand
+ default = "host: %h CPU: %i system mode: %v%"
+ display = no
+ modify = no;
+
+
+# Configuration info specific to non-PCP tools follows...
+#
+
+# for SGI Embedded Support Partner integration:
+string esp_type
+ default = "0x200058"
+ display = no
+ modify = no;
+
+# for EnlightenDSM integration:
+string enln_test
+ default = per_cpu.system
+ display = no
+ modify = no;
+string enln_units
+ default = %sys[%i]
+ display = no
+ modify = no;
+
+#
+# --- DO NOT MODIFY THIS FILE --- see pmieconf(4)