diff options
| author | Jani Nikula <jani.nikula@intel.com> | 2020-11-05 11:25:17 +0300 | 
|---|---|---|
| committer | Jani Nikula <jani.nikula@intel.com> | 2020-11-05 11:25:17 +0300 | 
| commit | 5f8f965287494d55e8ba3551e3727a5e9d0eb702 (patch) | |
| tree | 22a814cce4bf9de25a2af9af704da77787ac1e14 /tools/perf/scripts/python/futex-contention.py | |
| parent | ba8a5cb234ba3bf0a585fd38e5f36d7e7ce33661 (diff) | |
| parent | e047c7be173caab95f3876ab30c03ebcf654c300 (diff) | |
| download | linux-5f8f965287494d55e8ba3551e3727a5e9d0eb702.tar.xz | |
Merge drm/drm-next into drm-intel-next-queued
Catch up with v5.10-rc2 and drm-misc-next.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Diffstat (limited to 'tools/perf/scripts/python/futex-contention.py')
| -rw-r--r-- | tools/perf/scripts/python/futex-contention.py | 51 | 
1 files changed, 28 insertions, 23 deletions
diff --git a/tools/perf/scripts/python/futex-contention.py b/tools/perf/scripts/python/futex-contention.py index 0c4841acf75d..7e884d46f920 100644 --- a/tools/perf/scripts/python/futex-contention.py +++ b/tools/perf/scripts/python/futex-contention.py @@ -12,41 +12,46 @@  from __future__ import print_function -import os, sys -sys.path.append(os.environ['PERF_EXEC_PATH'] + '/scripts/python/Perf-Trace-Util/lib/Perf/Trace') +import os +import 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 +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, callchain, -			      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 +                              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) -	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, callchain, -			     nr, ret): -	if tid in thread_blocktime: -		elapsed = nsecs(s, ns) - thread_blocktime[tid] -		add_stats(lock_waits, (tid, thread_thislock[tid]), elapsed) -		del thread_blocktime[tid] -		del thread_thislock[tid] +                             nr, ret): +    if tid in thread_blocktime: +        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") +    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)) +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 [max: %d ns, min %d ns]" % +              (process_names[tid], tid, lock, count, avg, max, min))  | 
