summaryrefslogtreecommitdiffstats
path: root/testsuite/systemtap.examples/interrupt
diff options
context:
space:
mode:
authorWilliam Cohen <wcohen@redhat.com>2009-01-30 12:33:14 -0500
committerWilliam Cohen <wcohen@redhat.com>2009-01-30 12:33:14 -0500
commit1cc8a4c78bff79ea8b60e916e5cd01571b469b03 (patch)
tree4e32eca7acddc28d2e5aa0de5a1bc559a2550c95 /testsuite/systemtap.examples/interrupt
parent9fbda39bf7687ceeee28813f30f6e3ec5c72fc5d (diff)
downloadsystemtap-steved-1cc8a4c78bff79ea8b60e916e5cd01571b469b03.tar.gz
systemtap-steved-1cc8a4c78bff79ea8b60e916e5cd01571b469b03.tar.xz
systemtap-steved-1cc8a4c78bff79ea8b60e916e5cd01571b469b03.zip
Move the scf.stp example from systemtap.samples to systemtap.examples.
Diffstat (limited to 'testsuite/systemtap.examples/interrupt')
-rw-r--r--testsuite/systemtap.examples/interrupt/scf.meta13
-rw-r--r--testsuite/systemtap.examples/interrupt/scf.stp21
2 files changed, 34 insertions, 0 deletions
diff --git a/testsuite/systemtap.examples/interrupt/scf.meta b/testsuite/systemtap.examples/interrupt/scf.meta
new file mode 100644
index 00000000..1d6ec3d8
--- /dev/null
+++ b/testsuite/systemtap.examples/interrupt/scf.meta
@@ -0,0 +1,13 @@
+title: Tally Backtraces for Inter-Processor Interrupt (IPI)
+name: scf.stp
+version: 1.0
+author: William Cohen
+keywords: interrupt backtrace
+subsystem: kernel
+status: production
+exit: user-controlled
+output: sorted-list
+scope: system-wide
+description: The Linux kernel function smp_call_function causes expensive inter-processor interrupts (IPIs). The scf.stp script tallies the processes and backtraces causing the interprocessor interrupts to identify the cause of the expensive IPI. On exit the script prints the tallies in descending frequency.
+test_check: stap -p4 scf.stp
+test_installcheck: stap scf.stp -c "sleep 1"
diff --git a/testsuite/systemtap.examples/interrupt/scf.stp b/testsuite/systemtap.examples/interrupt/scf.stp
new file mode 100644
index 00000000..f84c2494
--- /dev/null
+++ b/testsuite/systemtap.examples/interrupt/scf.stp
@@ -0,0 +1,21 @@
+#! /usr/bin/env stap
+# scf.stp
+# A reimplementation of user script:smp_call_function example given at OLS 2005
+# in the current language.
+
+global traces
+
+probe begin { print("Starting probe, type control-c to stop.\n") }
+
+probe kernel.function("smp_call_function")
+{
+ traces[pid(), pexecname(), backtrace()] ++
+}
+
+probe end {
+ foreach ([pid, name, stack] in traces-) { # sort by frequency encountered
+ printf ("traces[%d,%s,\n", pid, name)
+ print_stack (stack)
+ printf ("] = %d\n", traces[pid, name, stack]);
+ }
+}