linux/Documentation/locking
Thomas Hellstrom 08295b3b5b locking: Implement an algorithm choice for Wound-Wait mutexes
The current Wound-Wait mutex algorithm is actually not Wound-Wait but
Wait-Die. Implement also Wound-Wait as a per-ww-class choice. Wound-Wait
is, contrary to Wait-Die a preemptive algorithm and is known to generate
fewer backoffs. Testing reveals that this is true if the
number of simultaneous contending transactions is small.
As the number of simultaneous contending threads increases, Wait-Wound
becomes inferior to Wait-Die in terms of elapsed time.
Possibly due to the larger number of held locks of sleeping transactions.

Update documentation and callers.

Timings using git://people.freedesktop.org/~thomash/ww_mutex_test
tag patch-18-06-15

Each thread runs 100000 batches of lock / unlock 800 ww mutexes randomly
chosen out of 100000. Four core Intel x86_64:

Algorithm    #threads       Rollbacks  time
Wound-Wait   4              ~100       ~17s.
Wait-Die     4              ~150000    ~19s.
Wound-Wait   16             ~360000    ~109s.
Wait-Die     16             ~450000    ~82s.

Cc: Ingo Molnar <mingo@redhat.com>
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: Gustavo Padovan <gustavo@padovan.org>
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: Sean Paul <seanpaul@chromium.org>
Cc: David Airlie <airlied@linux.ie>
Cc: Davidlohr Bueso <dave@stgolabs.net>
Cc: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
Cc: Josh Triplett <josh@joshtriplett.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Kate Stewart <kstewart@linuxfoundation.org>
Cc: Philippe Ombredanne <pombredanne@nexb.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: linux-doc@vger.kernel.org
Cc: linux-media@vger.kernel.org
Cc: linaro-mm-sig@lists.linaro.org
Co-authored-by: Peter Zijlstra <peterz@infradead.org>
Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Acked-by: Ingo Molnar <mingo@kernel.org>
2018-07-03 09:44:36 +02:00
..
00-INDEX Update of Documentation/00-INDEX 2014-12-29 15:27:54 -07:00
lockdep-design.txt Documentation/locking/lockdep: Add section about available annotations 2018-02-14 12:01:22 +01:00
lockstat.txt locking/Documentation/lockstat: Fix typo - lokcing -> locking 2015-09-18 09:27:28 +02:00
locktorture.txt torture: Eliminate torture_runnable and perf_runnable 2017-12-11 09:18:29 -08:00
mutex-design.txt Documentation/locking/mutex-design: Update to reflect latest changes 2018-02-11 12:28:58 +01:00
rt-mutex-design.txt Documentation: fix locking rt-mutex doc refs 2017-10-19 12:56:44 -06:00
rt-mutex.txt rtmutex: update rt-mutex 2017-08-24 13:38:14 -06:00
spinlocks.txt locking/Documentation: Move locking related docs into Documentation/locking/ 2014-08-13 10:32:03 +02:00
ww-mutex-design.txt locking: Implement an algorithm choice for Wound-Wait mutexes 2018-07-03 09:44:36 +02:00