Re: [RFC][PATCH 3/3] locking/mutex: Add lock handoff to avoid starvation

From: Peter Zijlstra
Date: Tue Aug 23 2016 - 16:49:37 EST


On Tue, Aug 23, 2016 at 03:47:53PM -0400, Waiman Long wrote:
> On 08/23/2016 08:46 AM, Peter Zijlstra wrote:
> >N
> >@@ -573,8 +600,14 @@ __mutex_lock_common(struct mutex *lock,
> > schedule_preempt_disabled();
> > spin_lock_mutex(&lock->wait_lock, flags);
> >
> >+ if (__mutex_owner(lock) == current)
> >+ break;
> >+
> > if (__mutex_trylock(lock))
> > break;
> >+
> >+ if (__mutex_waiter_is_first(lock,&waiter))
> >+ __mutex_set_flag(lock, MUTEX_FLAG_HANDOFF);
> > }
> > __set_task_state(task, TASK_RUNNING);
> >
> >
>
> You may want to think about doing some spinning while the owner is active
> instead of going back to sleep again here.

For sure; I just didn't bother pulling in your patches. I didn't want to
sink in more time in case people really hated on 1/3 ;-)