git: kernel - Optimize struct uidinfo

Matthew Dillon dillon at crater.dragonflybsd.org
Mon Oct 16 11:30:38 PDT 2017


commit 233a815dcfe9f7d1ecc7c9186718b9389fc821f2
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date:   Sun Oct 15 11:25:21 2017 -0700

    kernel - Optimize struct uidinfo
    
    * Refactor struct uidinfo.  Use atomic ops for ui_posixlocks
      and ui_proccnt.  They were already being used for ui_openfiles
      and ui_ref.
    
    * Refactor ui_ref a bit to improve the drop code.  Use a cute
      trick for the transition.  When we transition to 0 we allow
      ui_ref to actually go to 0, and then do an independent lookup
      of the uid with the hash table spinlock to conditionally free
      it if it remains 0.
    
      This allows us to completely avoid using atomic_cmpset_int(),
      which can be seriously inefficient due to races in SMP
      environments.
    
    Suggested-by: mjg__

Summary of changes:
 sys/kern/kern_lockf.c    |  13 ++---
 sys/kern/kern_resource.c | 129 +++++++++++++++++++----------------------------
 sys/sys/resourcevar.h    |   2 +-
 3 files changed, 56 insertions(+), 88 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/233a815dcfe9f7d1ecc7c9186718b9389fc821f2


-- 
DragonFly BSD source repository



More information about the Commits mailing list