• N
    locking/ww_mutex: Optimize ww-mutexes by yielding to other waiters from optimistic spin · c516df97
    Nicolai Hähnle 提交于
    Lock stealing is less beneficial for w/w mutexes since we may just end up
    backing off if we stole from a thread with an earlier acquire stamp that
    already holds another w/w mutex that we also need. So don't spin
    optimistically unless we are sure that there is no other waiter that might
    cause us to back off.
    
    Median timings taken of a contention-heavy GPU workload:
    
    Before:
    
      real    0m52.946s
      user    0m7.272s
      sys     1m55.964s
    
    After:
    
      real    0m53.086s
      user    0m7.360s
      sys     1m46.204s
    
    This particular workload still spends 20%-25% of CPU in mutex_spin_on_owner
    according to perf, but my attempts to further reduce this spinning based on
    various heuristics all lead to an increase in measured wall time despite
    the decrease in sys time.
    Signed-off-by: NNicolai Hähnle <Nicolai.Haehnle@amd.com>
    Signed-off-by: NPeter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: Daniel Vetter <daniel@ffwll.ch>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Maarten Lankhorst <dev@mblankhorst.nl>
    Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: dri-devel@lists.freedesktop.org
    Link: http://lkml.kernel.org/r/1482346000-9927-11-git-send-email-nhaehnle@gmail.comSigned-off-by: NIngo Molnar <mingo@kernel.org>
    c516df97
mutex.c 30.5 KB