1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-12-22 11:17:19 +00:00
freebsd/sys/kern
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
..
bus_if.m
clock_if.m
device_if.m
genassym.sh
imgact_aout.c
imgact_elf32.c
imgact_elf64.c
imgact_elf.c Add an additional field to the elf brandinfo structure to support 2003-12-23 02:42:39 +00:00
imgact_gzip.c
imgact_shell.c
inflate.c
init_main.c KASSERT() that initproc->p_pid is 1. Very bad things happen if init's 2004-01-16 20:29:23 +00:00
init_sysent.c Regen - this should be essentially a NOP, except for rcsid changes. 2003-12-23 03:52:14 +00:00
kern_acct.c
kern_acl.c
kern_alq.c
kern_clock.c Catch a few places where NULL (pointer) was used where 0 (integer) was 2003-12-23 02:36:43 +00:00
kern_condvar.c
kern_conf.c
kern_context.c
kern_descrip.c Restore correct semantics for F_DUPFD fcntl. This should fix the errors 2004-01-17 00:59:04 +00:00
kern_environment.c
kern_event.c Don't TAILQ_INIT kq_head twice, once is enough. 2003-12-25 23:42:36 +00:00
kern_exec.c Fixed some style bugs (mainly, try to always use explicit comparisons with 2003-12-28 04:37:59 +00:00
kern_exit.c Reduce gratuitous includes: don't include jail.h if it's not needed. 2004-01-21 17:10:47 +00:00
kern_fork.c Reduce gratuitous includes: don't include jail.h if it's not needed. 2004-01-21 17:10:47 +00:00
kern_idle.c
kern_intr.c If a device attach routine fails during boot and calls bus_teardown_intr(), 2004-01-13 22:55:46 +00:00
kern_jail.c Defer the vrele() on a jail's root vnode reference from prison_free() 2004-01-23 20:44:26 +00:00
kern_kse.c Reduce gratuitous includes: don't include jail.h if it's not needed. 2004-01-21 17:10:47 +00:00
kern_kthread.c
kern_ktr.c
kern_ktrace.c Reduce gratuitous includes: don't include jail.h if it's not needed. 2004-01-21 17:10:47 +00:00
kern_linker.c
kern_lock.c Add pid to the info printed in lockmgr_printinfo. This makes VFS 2004-01-06 04:34:13 +00:00
kern_lockf.c
kern_mac.c Implement sockets support for __mac_get_fd() and __mac_set_fd() 2003-11-16 23:31:45 +00:00
kern_malloc.c
kern_mib.c
kern_module.c
kern_mtxpool.c
kern_mutex.c Add some basic support for measuring sleep mutex contention to the 2004-01-25 01:59:27 +00:00
kern_ntptime.c Deal with MOD_FREQUENCY before MOD_OFFSET because the latter is the 2004-01-24 21:48:43 +00:00
kern_physio.c Send B_PHYS out to pasture, it no longer serves any function. 2003-11-15 09:28:09 +00:00
kern_poll.c
kern_proc.c
kern_prot.c Don't grab Giant in crfree(), since prison_free() no longer requires it. 2004-01-23 21:07:52 +00:00
kern_resource.c
kern_sema.c
kern_shutdown.c Add linenumber and source filename to panic(9) output. 2004-01-19 21:27:11 +00:00
kern_sig.c When not creating a core dump due to resource limits specifying 2004-01-11 02:28:06 +00:00
kern_subr.c Add __restrict qualifiers to copyinfrom, copyinstrfrom, copystr, copyinstr, 2003-12-26 05:54:35 +00:00
kern_switch.c Although sometimes to the uninitiated, it may seem like goup, KSEGOUP 2003-12-12 21:25:56 +00:00
kern_sx.c
kern_synch.c
kern_syscalls.c
kern_sysctl.c
kern_tc.c Write 100 times for tomorrow: 2004-01-22 19:50:06 +00:00
kern_thr.c
kern_thread.c Reduce gratuitous includes: don't include jail.h if it's not needed. 2004-01-21 17:10:47 +00:00
kern_time.c
kern_timeout.c Make the DIAGNOSTIC code which complains about long {call|time}out(9) 2003-12-07 20:03:28 +00:00
kern_umtx.c
kern_uuid.c Fix generation of random multicast MAC address. 2004-01-22 13:34:11 +00:00
kern_xxx.c
ksched.c
link_elf_obj.c
link_elf.c
linker_if.m
Make.tags.inc
Makefile
makesyscalls.sh Remove the namespace column from the syscalls tables. We don't actually 2003-12-23 03:50:43 +00:00
md4c.c
md5c.c
p1003_1b.c
posix4_mib.c
sched_4bsd.c Create a separate kthread that executes sched_cpu() once a second. Because 2003-12-26 17:07:29 +00:00
sched_ule.c - Make our transfer decisions based on load and not transferable load. A 2003-12-20 22:35:20 +00:00
subr_acl_posix1e.c
subr_autoconf.c
subr_blist.c
subr_bus.c
subr_clist.c
subr_clock.c
subr_devstat.c
subr_disk.c
subr_eventhandler.c
subr_hints.c
subr_kobj.c
subr_log.c
subr_mbpool.c Pass MTX_DEF as the last argument to mtx_init() instead of 0. This 2003-12-07 21:53:41 +00:00
subr_mbuf.c Track current and peak sfbuf usage, export the values via sysctl. 2003-12-27 07:52:47 +00:00
subr_mchain.c
subr_module.c
subr_msgbuf.c
subr_param.c
subr_pcpu.c
subr_power.c Move the kernel power change printf under bootverbose since the 2004-01-02 18:24:13 +00:00
subr_prf.c Re-arrange and consolidate some random debugging stuff 2003-12-07 05:04:49 +00:00
subr_prof.c
subr_rman.c
subr_rtc.c
subr_sbuf.c
subr_scanf.c
subr_smp.c - Move smp_topology to subr_smp.c so that it is defined on all architectures. 2004-01-24 19:52:48 +00:00
subr_taskqueue.c Various style fixes. 2003-12-17 21:13:04 +00:00
subr_trap.c
subr_turnstile.c Adjust an assertion for the TDF_TSNOBLOCK race handling in 2003-12-09 21:14:31 +00:00
subr_witness.c Fix a major faux pas of mine. I was causing 2 very bad things to 2003-11-20 15:35:48 +00:00
sys_generic.c pread/pwrite: 2004-01-20 01:27:42 +00:00
sys_pipe.c New file descriptor allocation code, derived from similar code introduced 2004-01-15 10:15:04 +00:00
sys_process.c
sys_socket.c
syscalls.c Regen - this should be essentially a NOP, except for rcsid changes. 2003-12-23 03:52:14 +00:00
syscalls.master Put restrict back in, the compilation failure was my fault when I 2003-12-26 05:58:16 +00:00
sysv_ipc.c
sysv_msg.c
sysv_sem.c Reduce the overhead of semop() by using the kernel stack instead of 2003-12-19 13:07:17 +00:00
sysv_shm.c
tty_compat.c
tty_conf.c
tty_cons.c
tty_pty.c
tty_subr.c
tty_tty.c
tty.c Improve the expressiveness of ttyinfo (^T) when dealing with threads 2004-01-08 22:49:23 +00:00
uipc_accf.c
uipc_cow.c Handle sf_buf_alloc() returning null. This can happen if the 2004-01-17 21:16:51 +00:00
uipc_domain.c
uipc_jumbo.c
uipc_mbuf2.c m_tag fixups in preparation for heavier use: 2004-01-02 17:27:39 +00:00
uipc_mbuf.c Fix another 0 / NULL mixup. 2003-12-25 01:17:27 +00:00
uipc_proto.c
uipc_sem.c Reduce gratuitous includes: don't include jail.h if it's not needed. 2004-01-21 17:10:47 +00:00
uipc_sockbuf.c Introduce a MAC label reference in 'struct inpcb', which caches 2003-11-18 00:39:07 +00:00
uipc_socket2.c Introduce a MAC label reference in 'struct inpcb', which caches 2003-11-18 00:39:07 +00:00
uipc_socket.c Since "m" is not part of the "mp" chain, need to free() it. 2004-01-18 14:02:53 +00:00
uipc_syscalls.c One more instance of magic number used in place of IO_SEQSHIFT. 2004-01-19 20:45:43 +00:00
uipc_usrreq.c Restore correct semantics for F_DUPFD fcntl. This should fix the errors 2004-01-17 00:59:04 +00:00
vfs_acl.c
vfs_aio.c Send B_PHYS out to pasture, it no longer serves any function. 2003-11-15 09:28:09 +00:00
vfs_bio.c Remove a variable that has been initialized but otherwise unused since 2003-12-20 19:46:21 +00:00
vfs_cache.c
vfs_cluster.c Update the statfs structure with 64-bit fields to allow 2003-11-12 08:01:40 +00:00
vfs_default.c
vfs_export.c
vfs_extattr.c New file descriptor allocation code, derived from similar code introduced 2004-01-15 10:15:04 +00:00
vfs_init.c
vfs_lookup.c
vfs_mount.c In dounmount(), only call checkdirs() prior to VFS_UNMOUNT() in the 2003-11-30 23:30:09 +00:00
vfs_subr.c More style fixes. 2004-01-05 23:40:46 +00:00
vfs_syscalls.c New file descriptor allocation code, derived from similar code introduced 2004-01-15 10:15:04 +00:00
vfs_vnops.c v_vxproc was a bogus name for a thread (pointer). 2003-12-28 09:12:56 +00:00
vnode_if.src