Messages in this thread | | | Date | Tue, 29 Mar 2016 18:42:33 +0200 | From | Peter Zijlstra <> | Subject | Re: [PATCH v3 2/3] locking/mutex: Enable optimistic spinning of woken task in wait queue |
| |
On Tue, Mar 29, 2016 at 05:39:35PM +0200, Peter Zijlstra wrote: > On Tue, Mar 22, 2016 at 01:46:43PM -0400, Waiman Long wrote: > > Ding Tianhong reported a live-lock situation where a constant stream > > of incoming optimistic spinners blocked a task in the wait list from > > getting the mutex. > > > > This patch attempts to fix this live-lock condition by enabling the > > woken task in the wait queue to enter into an optimistic spinning > > loop itself in parallel with the regular spinners in the OSQ. This > > should prevent the live-lock condition from happening. > > I would very much like a few words on how fairness is preserved. > > Because while the waiter remains on the wait_list while it spins, and > therefore unlock()s will only wake it, and we'll only contend with the > one waiter, the fact that we have two spinners is not fair or starvation > proof at all.
Alternatively, we can say this is good enough until proven deficient, but then we should still very much document this.
| |