Re: [PATCH V2 0/6][RFC] futex: FUTEX_LOCK with optional adaptivespinning
From: Chris Wright
Date: Mon Apr 05 2010 - 19:31:33 EST
* Darren Hart (dvhltc@xxxxxxxxxx) wrote:
> Avi Kivity wrote:
>>>> An interesting (but perhaps difficult to achieve) optimization
>>>> would be to spin in userspace.
>>> I couldn't think of a lightweight way to determine when the owner has
>>> been scheduled out in userspace. Kernel assistance is required. You
>>> could do this on the schedule() side of things, but I figured I'd get
>>> some strong pushback if I tried to add a hook into descheduling that
>>> flipped a bit in the futex value stating the owner was about to
>>> deschedule(). Still, that might be something to explore.
>> In the futex value it's hopeless (since a thread can hold many locks),
> It can, but there is a futex value per lock. If the task_struct had a
> list of held futex locks (as it does for pi futex locks) the
> deschedule() path could walk that and mark the FUTEX_OWNER_SLEEPING bit.
You also have a notification scheme (preempt_notifiers will fire on
schedule out). However, you'd have to register the notifiers from a
non-current context (i.e. on slow path acquire reaching out to lock owner
and registering notifier on lock owner's behalf, which would kind of
defeat the point AFAICT).
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/