]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
- Re-implement lock profiling in such a way that it no longer breaks
authorjeff <jeff@FreeBSD.org>
Sat, 15 Dec 2007 23:13:31 +0000 (23:13 +0000)
committerjeff <jeff@FreeBSD.org>
Sat, 15 Dec 2007 23:13:31 +0000 (23:13 +0000)
commit12adc443d67286deeee69e764d979c963403497d
tree5aa1ecb0fadd118191701a2b1c611fcee7216753
parent96bf4f52953dddc12e3490919ba932dcfb5bc76d
 - Re-implement lock profiling in such a way that it no longer breaks
   the ABI when enabled.  There is no longer an embedded lock_profile_object
   in each lock.  Instead a list of lock_profile_objects is kept per-thread
   for each lock it may own.  The cnt_hold statistic is now always 0 to
   facilitate this.
 - Support shared locking by tracking individual lock instances and
   statistics in the per-thread per-instance lock_profile_object.
 - Make the lock profiling hash table a per-cpu singly linked list with a
   per-cpu static lock_prof allocator.  This removes the need for an array
   of spinlocks and reduces cache contention between cores.
 - Use a seperate hash for spinlocks and other locks so that only a
   critical_enter() is required and not a spinlock_enter() to modify the
   per-cpu tables.
 - Count time spent spinning in the lock statistics.
 - Remove the LOCK_PROFILE_SHARED option as it is always supported now.
 - Specifically drop and release the scheduler locks in both schedulers
   since we track owners now.

In collaboration with: Kip Macy
Sponsored by: Nokia
12 files changed:
sys/conf/options
sys/kern/kern_mutex.c
sys/kern/kern_rwlock.c
sys/kern/kern_sx.c
sys/kern/kern_thread.c
sys/kern/sched_4bsd.c
sys/kern/sched_ule.c
sys/kern/subr_lock.c
sys/sys/_lock.h
sys/sys/lock_profile.h
sys/sys/proc.h
sys/sys/sx.h