-
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.
Merge branch 'perf/core' of git://git.kernel.org/pub/scm/linux/kernel…
…/git/acme/linux-2.6 into perf/urgent
- Loading branch information
Showing
10 changed files
with
93 additions
and
10 deletions.
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
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
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) | ||
|
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
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