[PATCH-tip v2 0/3] locking/rwsem: Minor twists to improve rwsem performance

From: Waiman Long
Date: Mon Mar 06 2017 - 14:06:19 EST


v1->v2:
- Replace trylock with a more light-weight raw_spin_is_locked()
call to reduce overhead.
- Run fio test in addition to rwsem microbenchmark.

This patch set introduces minor changes to the rwsem code path to
provide minor performance improvement especially with short critical
sections.

Patch 1 checks wait_list without lock when spinners are present.

Patch 2 moves down the rwsem_down_read_failed() function after the
optimistic spinning section so that functions in that section can
be used.

Patch 3 undoes active read lock ASAP when either the spinners are
present or the wait_lock isn't free.

Waiman Long (3):
locking/rwsem: Check wait_list without lock if spinner present
locking/rwsem: relocate rwsem_down_read_failed()
locking/rwsem: Stop active read lock ASAP

kernel/locking/rwsem-xadd.c | 129 ++++++++++++++++++++++++++------------------
1 file changed, 76 insertions(+), 53 deletions(-)

--
1.8.3.1