freebsd-nq/sys
Robert Watson 8dc10be885 Add some basic support for measuring sleep mutex contention to the
mutex profiling code.  As with existing mutex profiling, measurement
is done with respect to mtx_lock() instances in the code, as opposed
to specific mutexes.  In particular, measure two things:

(1) Lock contention.  How often did this mtx_lock() call get made and
    have to sleep (or almost sleep) waiting for the lock.  This helps
    identify the "victims" of contention.

(2) Hold contention.  How often, while the lock was held by a thread
    as a result of this mtx_lock(), did another thread try to acquire
    the same mutex.  This helps identify the causes of contention.

I'm currently exploring adding measurement of "time waited for the
lock", but the current implementation has proven useful to me so far
so I figured I'd commit it so others could try it out.  Note that this
increases the size of mutexes when MUTEX_PROFILING is enabled, so you
might find you need to further bump UMA_BOOT_PAGES.  Fixes welcome.

The once over:	des, others
2004-01-25 01:59:27 +00:00
..
alpha - Remove local changes that leaked into my last commit. 2004-01-24 21:45:25 +00:00
amd64 - Recruit some new ULE users by making it the default scheduler in GENERIC. 2004-01-24 21:38:52 +00:00
arm Add sysentvec->sv_fixlimits() hook so that we can catch cases on 64 bit 2003-09-25 01:10:26 +00:00
boot If a transfer to or from a floppy disk crosses a 64k boundary, we have to 2004-01-21 23:22:29 +00:00
cam Fix type in comment, 's/writtent/written/' 2004-01-18 00:17:14 +00:00
coda - Implement selwakeuppri() which allows raising the priority of a 2003-11-09 09:17:26 +00:00
compat Add structures and definitions for task offload (TCP/IP checksum, 2004-01-21 21:09:09 +00:00
conf - ULE is not exactly experimental anymore. Change some comments and enable 2004-01-24 21:32:53 +00:00
contrib This commit was generated by cvs2svn to compensate for changes in r124528, 2004-01-14 18:54:22 +00:00
crypto avoid module name conflict with opencrypto/rijndael.c. 2003-11-12 04:22:37 +00:00
ddb Reworked rev.1.14. Use the ELF symbol type again to summarily reject 2003-09-28 06:02:33 +00:00
dev Correct KASSERT() in ndis_destroy(): ndis_mtx is a pointer now. 2004-01-25 00:13:07 +00:00
fs Fix style(9) of my previous commit. 2004-01-21 18:03:54 +00:00
geom Make sure to keep track of canceled events. 2004-01-23 21:09:38 +00:00
gnu Copy workaround from FFS: open device for write access even if 2004-01-24 08:43:06 +00:00
i4b Based on an excellent suggestion from tanimura@ define I4BPRI and use it 2003-11-10 14:20:34 +00:00
i386 - Recruit some new ULE users by making it the default scheduler in GENERIC. 2004-01-24 21:38:52 +00:00
ia64 - Recruit some new ULE users by making it the default scheduler in GENERIC. 2004-01-24 21:38:52 +00:00
isa Significantly reduce the "jitter" that is typical for PS/2 mice 2003-12-11 11:28:11 +00:00
isofs/cd9660 Spell magic '16' number as IO_SEQSHIFT. 2004-01-19 20:03:43 +00:00
kern Add some basic support for measuring sleep mutex contention to the 2004-01-25 01:59:27 +00:00
libkern Translate from GNU C to ISO C. 2004-01-14 07:47:10 +00:00
modules Removed custom "load" and "unload" targets. 2004-01-19 14:00:26 +00:00
net Don't panic if there are more than 255 interfaces in the system. 2004-01-23 15:53:23 +00:00
net80211 Change WI_RID_SCAN_RES compatibility interface to return the result after 2004-01-19 05:25:43 +00:00
netatalk Eliminate a duplicate free when deleting an interface address. This 2003-11-28 04:19:41 +00:00
netatm Introduce a MAC label reference in 'struct inpcb', which caches 2003-11-18 00:39:07 +00:00
netgraph Allow the socket buffer sizes to be controlled via sysctl(8). 2004-01-23 14:35:44 +00:00
netinet Remove leftover FREE() from changes in rev 1.50. 2004-01-23 01:39:12 +00:00
netinet6 call ipsec_pcbconn()/ipsec_pcbdisconn() from in6_pcbconnect(). 2004-01-13 10:45:02 +00:00
netipsec Fix ipip_output() to always set *mp to NULL on failure, even if 'm' 2004-01-20 22:45:10 +00:00
netipx Introduce a MAC label reference in 'struct inpcb', which caches 2003-11-18 00:39:07 +00:00
netkey invalidate secpolicy pcb cache on key_timehandler. part of 2004-01-14 04:39:40 +00:00
netnatm Introduce a MAC label reference in 'struct inpcb', which caches 2003-11-18 00:39:07 +00:00
netncp The present defaults for the open and close for device drivers which 2003-09-27 12:01:01 +00:00
netsmb Add support for SMB request signing, which prevents "man in the middle" 2004-01-02 22:38:42 +00:00
nfs University of Michigan's Citi NFSv4 kernel client code. 2003-11-14 20:54:10 +00:00
nfs4client This patch fixes two little portability (to !GCC compilers) problems: 2003-12-11 11:30:26 +00:00
nfsclient Use function pointers to remove the depenancy cross dependancy on nfs4 2003-11-22 02:21:49 +00:00
nfsserver Fix some becuase -> because typos. 2003-12-17 16:12:01 +00:00
opencrypto style(9) pass and type fixups. 2003-12-16 14:13:47 +00:00
pc98 - Recruit some new ULE users by making it the default scheduler in GENERIC. 2004-01-24 21:38:52 +00:00
pccard - Implement selwakeuppri() which allows raising the priority of a 2003-11-09 09:17:26 +00:00
pci Fix multicast and promiscuous mode handling for Yukon devices. 2004-01-21 22:32:15 +00:00
posix4
powerpc - Recruit some new ULE users by making it the default scheduler in GENERIC. 2004-01-24 21:38:52 +00:00
rpc Don't panic because of RPC proto mismatches. Whitespace cleanup. 2004-01-17 21:25:05 +00:00
security Pay attention to mac_portacl_enabled. 2004-01-20 18:33:02 +00:00
sparc64 - Recruit some new ULE users by making it the default scheduler in GENERIC. 2004-01-24 21:38:52 +00:00
sys Add some basic support for measuring sleep mutex contention to the 2004-01-25 01:59:27 +00:00
tools Changes for new SMP-safe kobj method dispatch algorithm. 2003-10-16 13:29:26 +00:00
ufs Copy comment about caller check from ffs_read to ffs_extread, don't 2004-01-23 06:00:41 +00:00
vm 1. Statically initialize swap_pager_full and swap_pager_almost_full to the 2004-01-24 21:31:06 +00:00
Makefile Replaced outdated comment. 2004-01-17 03:28:27 +00:00