]> sourceware.org Git - systemtap.git/commitdiff
examples: add pf4.{stp,meta}
authorFrank Ch. Eigler <fche@redhat.com>
Fri, 24 May 2013 02:02:27 +0000 (22:02 -0400)
committerFrank Ch. Eigler <fche@redhat.com>
Fri, 24 May 2013 02:02:27 +0000 (22:02 -0400)
testsuite/systemtap.examples/profiling/pf4.meta [new file with mode: 0644]
testsuite/systemtap.examples/profiling/pf4.stp [new file with mode: 0755]

diff --git a/testsuite/systemtap.examples/profiling/pf4.meta b/testsuite/systemtap.examples/profiling/pf4.meta
new file mode 100644 (file)
index 0000000..147316a
--- /dev/null
@@ -0,0 +1,7 @@
+title: Profile Kernel/User Backtraces
+name: pf4.stp
+keywords: profiling
+exit: user-controlled
+description: The pf4.stp script sets up time-based sampling. Every five seconds it prints out a sorted list with the top twenty kernel and/or user stack backtraces (on a per-cpu basis).  Use any of --ldd, --all-modules, -d MODULE, -d /PATH/TO/EXEC to add more symbolic info.
+test_check: stap -p4 pf4.stp
+test_installcheck: stap pf4.stp -c "sleep 6" --all-modules --ldd
diff --git a/testsuite/systemtap.examples/profiling/pf4.stp b/testsuite/systemtap.examples/profiling/pf4.stp
new file mode 100755 (executable)
index 0000000..2b411d5
--- /dev/null
@@ -0,0 +1,30 @@
+#! /usr/bin/env stap
+
+global profile%[20000], pcount
+
+probe timer.profile
+      # or perf.type(0).config(0).sample(NNNN) for apprx. every NNNN tsc ticks
+{
+  # add filtering as required:
+  # if (execname() != "program") next
+  # if (uid() != 4345) next
+  # if (! user_mode()) next
+  if (target() && pid() != target()) next  # be sensitive to -x PID or -c CMD
+
+  # NB: we count total hits also, because the report only shows top few
+  pcount <<< 1
+
+  bt = user_mode() ? sprint_ubacktrace() : sprint_backtrace()
+  profile[cpu(),bt] <<< 1
+}
+
+probe end,error,timer.ms(5000) {
+  printf ("\n--- %d samples recorded:\n", @count(pcount))
+
+  foreach ([c,b] in profile- limit 20) {
+    printf ("%d hits on cpu %d\n%s\n\n", @count(profile[c,b]), c, b)
+  }
+
+  delete profile
+  delete pcount
+}
This page took 0.02801 seconds and 5 git commands to generate.