• Waiman Long's avatar
    locking/rwsem: Enable lock event counting · a8654596
    Waiman Long authored
    Add lock event counting calls so that we can track the number of lock
    events happening in the rwsem code.
    
    With CONFIG_LOCK_EVENT_COUNTS on and booting a 4-socket 112-thread x86-64
    system, the rwsem counts after system bootup were as follows:
    
      rwsem_opt_fail=261
      rwsem_opt_wlock=50636
      rwsem_rlock=445
      rwsem_rlock_fail=0
      rwsem_rlock_fast=22
      rwsem_rtrylock=810144
      rwsem_sleep_reader=441
      rwsem_sleep_writer=310
      rwsem_wake_reader=355
      rwsem_wake_writer=2335
      rwsem_wlock=261
      rwsem_wlock_fail=0
      rwsem_wtrylock=20583
    
    It can be seen that most of the lock acquisitions in the slowpath were
    write-locks in the optimistic spinning code path with no sleeping at
    all. For this system, over 97% of the locks are acquired via optimistic
    spinning. It illustrates the importance of optimistic spinning in
    improving the performance of rwsem.
    Signed-off-by: default avatarWaiman Long <longman@redhat.com>
    Acked-by: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
    Acked-by: default avatarDavidlohr Bueso <dbueso@suse.de>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Davidlohr Bueso <dave@stgolabs.net>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Tim Chen <tim.c.chen@linux.intel.com>
    Cc: Will Deacon <will.deacon@arm.com>
    Link: http://lkml.kernel.org/r/20190404174320.22416-11-longman@redhat.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    a8654596
Kconfig 27.2 KB