This is the mail archive of the
systemtap@sourceware.org
mailing list for the systemtap project.
[PATCH] fix aggregate stats in mutex-contention example
- From: Peter Feiner <peter at gridcentric dot ca>
- To: systemtap at sourceware dot org
- Cc: Peter Feiner <peter at gridcentric dot ca>
- Date: Wed, 22 May 2013 15:04:27 -0500
- Subject: [PATCH] fix aggregate stats in mutex-contention example
Stats that were supposed to be collected per FUTEX_WAIT call site were being
collected per mutex init stack. So, in the "aggregate stats" section of the
report, you'd see a bunch of stacks with pthread_mutex_init at the top ... which
was very confusing because a futex isn't contended when it's created :-)
---
.../process/mutex-contention.stp | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)
diff --git a/testsuite/systemtap.examples/process/mutex-contention.stp b/testsuite/systemtap.examples/process/mutex-contention.stp
index 4bd0486..eec4b4c 100755
--- a/testsuite/systemtap.examples/process/mutex-contention.stp
+++ b/testsuite/systemtap.examples/process/mutex-contention.stp
@@ -65,26 +65,22 @@ probe syscall.futex.return {
if (keep_stats) {
mutex_contention[$uaddr] <<< elapsed
stack = sprint_ubacktrace()
+ mutex_cont_stack[stack] <<< elapsed
mutex_last_cont_stack[$uaddr] = stack
if ($uaddr in mutex_init_stack) {
if (verbose) {
printf("contention time %d on mutex %p initialized at\n%s\n", elapsed, $uaddr, mutex_init_stack[$uaddr])
}
- stack = mutex_init_stack[$uaddr]
- mutex_cont_stack[stack] <<< elapsed
} else if ($uaddr in mutex_uninit) {
if (verbose) {
printf("contention time %d on popup mutex %p at\n%s\n", elapsed, $uaddr, stack)
}
- stack = mutex_uninit[$uaddr]
- mutex_cont_stack[stack] <<< elapsed
} else {
if (verbose) {
printf("contention time %d on popup mutex %p at\n%s\n", elapsed, $uaddr, stack)
}
mutex_uninit[$uaddr] = stack
mutex_names[$uaddr] = usymdata ($uaddr)
- mutex_cont_stack[stack] <<< elapsed
}
} else {
printf("contention %p elapsed %d at\n%s\n", $uaddr, elapsed, sprint_ubacktrace())
--
1.7.9.5