-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
yaml --- r: 218686 b: refs/heads/master c: 00204c3 h: refs/heads/master v: v3
- Loading branch information
Arnaldo Carvalho de Melo
committed
Oct 26, 2010
1 parent
1d61a02
commit 6821c22
Showing
5 changed files
with
75 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,2 @@ | ||
--- | ||
refs/heads/master: 22d0594b31046793dfb58b7ce866d7cb0a9862e5 | ||
refs/heads/master: 00204c3396469f407bac56e1475ea16e4a279b13 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
#!/bin/bash | ||
perf record -a -e syscalls:sys_enter_futex -e syscalls:sys_exit_futex $@ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
#!/bin/bash | ||
# description: futext contention measurement | ||
|
||
perf trace $@ -s "$PERF_EXEC_PATH"/scripts/python/futex-contention.py |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
# futex contention | ||
# (c) 2010, Arnaldo Carvalho de Melo <acme@redhat.com> | ||
# Licensed under the terms of the GNU GPL License version 2 | ||
# | ||
# Translation of: | ||
# | ||
# http://sourceware.org/systemtap/wiki/WSFutexContention | ||
# | ||
# to perf python scripting. | ||
# | ||
# Measures futex contention | ||
|
||
import os, sys | ||
sys.path.append(os.environ['PERF_EXEC_PATH'] + '/scripts/python/Perf-Trace-Util/lib/Perf/Trace') | ||
from Util import * | ||
|
||
process_names = {} | ||
thread_thislock = {} | ||
thread_blocktime = {} | ||
|
||
lock_waits = {} # long-lived stats on (tid,lock) blockage elapsed time | ||
process_names = {} # long-lived pid-to-execname mapping | ||
|
||
def syscalls__sys_enter_futex(event, ctxt, cpu, s, ns, tid, comm, | ||
nr, uaddr, op, val, utime, uaddr2, val3): | ||
cmd = op & FUTEX_CMD_MASK | ||
if cmd != FUTEX_WAIT: | ||
return # we don't care about originators of WAKE events | ||
|
||
process_names[tid] = comm | ||
thread_thislock[tid] = uaddr | ||
thread_blocktime[tid] = nsecs(s, ns) | ||
|
||
def syscalls__sys_exit_futex(event, ctxt, cpu, s, ns, tid, comm, | ||
nr, ret): | ||
if thread_blocktime.has_key(tid): | ||
elapsed = nsecs(s, ns) - thread_blocktime[tid] | ||
add_stats(lock_waits, (tid, thread_thislock[tid]), elapsed) | ||
del thread_blocktime[tid] | ||
del thread_thislock[tid] | ||
|
||
def trace_begin(): | ||
print "Press control+C to stop and show the summary" | ||
|
||
def trace_end(): | ||
for (tid, lock) in lock_waits: | ||
min, max, avg, count = lock_waits[tid, lock] | ||
print "%s[%d] lock %x contended %d times, %d avg ns" % \ | ||
(process_names[tid], tid, lock, count, avg) | ||
|