cvs commit: src/sys/kern kern_thread.c subr_witness.c src/sys/sys lock.h

Attilio Rao attilio at FreeBSD.org
Wed Aug 13 18:25:00 UTC 2008


attilio     2008-08-13 18:24:22 UTC

  FreeBSD src repository

  Modified files:
    sys/kern             kern_thread.c subr_witness.c 
    sys/sys              lock.h 
  Log:
  SVN rev 181695 on 2008-08-13 18:24:22Z by attilio
  
  Introduce some WITNESS improvements:
  - Speedup the lock orderings lookup modifying the witness graph from a
    linked tree to a matrix. A table lookup caches the lock orderings in
    order to make a O(1) access for them. Any witness object has an unique
    index withing this lookup cache table.
  - Reduce the lock contention on w_mtx acquiring it only when the LOR
    actually happens and not in a sane case. In order to do this don't totally
    flush lock lists (per-CPU spinlocks list and per-thread sleeplocks list)
    but check for ll_count anytime we need to have to verify allocations sanity.
  - Introduce the function witness_thread_exit() in the witness namespace which
    should verify a thread doesn't hold any witness occurrence why exiting.
  - Rename the sysctl debug.witness.graphs into debug.witness.fullgraph and
    add debug.witness.badstacks which prints out stacks for LOR revealed.
    This is implemented using the stack(9) support, which makes WITNESS to be
    dependent by the STACK option or by the DDB (including STACK) option.
  - Fix style(9) for src/sys/kern/subr_witness.c
  
  The hash table approach has been developed by Ilya Maykov on the behalf of
  Isilon Systems which kindly released the patch.
  Jeff Roberson, ported the patch to -CURRENT and fixed w_mtx contention, on the
  behalf of Nokia.
  
  Submitted by:   Ilya Maykov <ivmaykov at gmail dot com> (Isilon Systems), jeff
  Sponsored by:   Nokia
  
  Revision  Changes     Path
  1.276     +5 -0       src/sys/kern/kern_thread.c
  1.251     +1061 -491  src/sys/kern/subr_witness.c
  1.74      +1 -0       src/sys/sys/lock.h


More information about the cvs-all mailing list