Messages in this thread | | | From | Waiman Long <> | Subject | [PATCH 0/2] locking/mutex: Enable optimistic spinning of lock waiter | Date | Tue, 9 Feb 2016 14:47:40 -0500 |
| |
This patchset is a variant of PeterZ's "locking/mutex: Avoid spinner vs waiter starvation" patch. The major difference is that the waiter-spinner won't enter into the OSQ used by the spinners. Instead, it will spin directly on the lock in parallel with the queue head of the OSQ. So there will be a bit more cacheline contention on the lock cacheline, but that shouldn't cause noticeable impact on system performance.
This patchset tries to address 2 issues with Peter's patch:
1) Ding Tianhong still find that hanging task could happen in some cases. 2) Jason Low found that there was performance regression for some AIM7 workloads.
By making the waiter-spinner to spin directly on the mutex, it will increase the chance for the waiter-spinner to get the lock instead of waiting in the OSQ for its turn.
My own test on a 4-socket E7-4820 v3 system showed a regression of about 4% in the high_systime workload with Peter's patch which this new patch effectively eliminates.
Waiman Long (2): locking/mutex: Add waiter parameter to mutex_optimistic_spin() locking/mutex: Enable optimistic spinning of woken task in wait queue
kernel/locking/mutex.c | 68 ++++++++++++++++++++++++++++++++++------------- 1 files changed, 49 insertions(+), 19 deletions(-)
| |