diff options
author | fche <fche> | 2007-01-02 04:33:41 +0000 |
---|---|---|
committer | fche <fche> | 2007-01-02 04:33:41 +0000 |
commit | 7ad9d4f58308c4d8f35f2212ce82212301dfeeff (patch) | |
tree | d5eaf2ca091067ea5f95ef4fad47e5921f02a265 /examples/futexes.stp | |
parent | 6f313a734d26b13cb77de68638dc1b9913891c07 (diff) | |
download | systemtap-steved-7ad9d4f58308c4d8f35f2212ce82212301dfeeff.tar.gz systemtap-steved-7ad9d4f58308c4d8f35f2212ce82212301dfeeff.tar.xz systemtap-steved-7ad9d4f58308c4d8f35f2212ce82212301dfeeff.zip |
2007-01-01 Frank Ch. Eigler <fche@redhat.com>
* configure.ac: Bump version to 0.5.12 for release.
* configure: Regenerated.
* NEWS, AUTHORS: Populate & repopulate.
* examples/*: Added several .stp/.txt files from the wiki.
Diffstat (limited to 'examples/futexes.stp')
-rw-r--r-- | examples/futexes.stp | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/examples/futexes.stp b/examples/futexes.stp new file mode 100644 index 00000000..608ce0de --- /dev/null +++ b/examples/futexes.stp @@ -0,0 +1,36 @@ +#! stap + +# This script tries to identify contended user-space locks by hooking +# into the futex system call. + +global thread_thislock # short +global thread_blocktime # +global FUTEX_WAIT = 0, FUTEX_WAKE = 1 + +global lock_waits # long-lived stats on (tid,lock) blockage elapsed time +global process_names # long-lived pid-to-execname mapping + +probe syscall.futex { + if (op != FUTEX_WAIT) next # we don't care about originators of WAKE events + t = tid () + process_names[pid()] = execname() + thread_thislock[t] = $uaddr + thread_blocktime[t] = gettimeofday_us() +} + +probe syscall.futex.return { + t = tid() + ts = thread_blocktime[t] + if (ts) { + elapsed = gettimeofday_us() - ts + lock_waits[pid(), thread_thislock[t]] <<< elapsed + delete thread_blocktime[t] + delete thread_thislock[t] + } +} + +probe end { + foreach ([pid+, lock] in lock_waits) + printf ("%s[%d] lock %p contended %d times, %d avg us\n", + process_names[pid], pid, lock, @count(lock_waits[pid,lock]), @avg(lock_waits[pid,lock])) +} |