# futex contention # (c) 2010, Arnaldo Carvalho de Melo # 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, 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 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 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) 2.6.21.y Hosts the 0x221E linux distro kernel.Ubuntu
summaryrefslogtreecommitdiff
path: root/fs/gfs2/dir.h
AgeCommit message (Expand)Author
2019-09-04gfs2: Delete an unnecessary check before brelse()Markus Elfring
2019-06-05treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 398Thomas Gleixner
2014-10-01GFS2: Make rename not save dirent locationBob Peterson
2014-01-06GFS2: Remember directory insert pointSteven Whitehouse
2014-01-06GFS2: Add directory addition info structureSteven Whitehouse
2013-07-02Merge git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-3.0-nmwLinus Torvalds
2013-06-29[readdir] convert gfs2Al Viro
2013-06-11GFS2: Only do one directory search on createSteven Whitehouse
2011-11-08GFS2: Add readahead to sequential directory traversalBob Peterson
2011-07-15GFS2: Cache dir hash table in a contiguous bufferSteven Whitehouse
2011-05-09GFS2: When adding a new dir entry, inc link count if it is a subdirSteven Whitehouse
2011-05-09GFS2: Make gfs2_dir_del update link count when requiredSteven Whitehouse
2010-09-20GFS2: Make . and .. qstrs constantSteven Whitehouse
2009-01-05GFS2: Fix bug in gfs2_lock_fs_check_clean()Steven Whitehouse
2007-07-09[GFS2] Clean up inode number handlingSteven Whitehouse