This is the mail archive of the systemtap@sourceware.org mailing list for the systemtap project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]