Messages in this thread |  | | | Date | Wed, 07 Apr 2010 16:15:05 -0700 | | From | Darren Hart <> | | Subject | Re: [PATCH 5/6] futex: handle timeout inside adaptive lock spin |
| |
Gregory Haskins wrote: >>>> On 4/7/2010 at 01:31 PM, in message <4BBCC174.7020409@us.ibm.com>, Darren Hart > <dvhltc@us.ibm.com> wrote: >> Thomas Gleixner wrote: >>> On Mon, 5 Apr 2010, Darren Hart wrote: >>> >>>> Signed-off-by: Darren Hart <dvhltc@us.ibm.com> > >>>> + if (timeout) { >>>> + now = ktime_get(); >>> Hmm. Calling that in every iteration might hurt especially on non >>> TSC systems, but well... >> I haven't come across a better alternative since arming the timer before >> setting TASK_INTERRUPTIBLE isn't appropriate. > > Hey Darren, > > I remember we tried something similar in early versions of the > adaptive locks and this was definitely bad. :( > > It ended up putting so much contention on the xtime_lock (IIRC) that > it resulted in adaptive locks hurting overall performance verses not > using adaptive at all. Alternative mechanisms employed a hybrid where > the inner loops used a pseudo calibrated counter loop, and the outer > loop checks periodically against a real clock. It all plays into "you > are burning CPU cycles anyway, so might as well put them to use" > theory. Hacky, yes, but it did relieve the pressure on the time > subsystem locks and freed up a _lot_ of performance. Without this, > the concept of timeouts+adaptive was unworkable. I think Steven > ultimately rejected the timeout related patches outright when he > merged adaptive to -rt, but I think Sven pulled them into SLERT if you > would like a potential code reference to a working solution. >
Hi Greg,
Thanks for the info! I haven't tested with timeouts yet as I'm still struggling to get decent performance out of just plain old adaptive right now. I'll keep that in mind when I get to that, and yeah, if the plan is to burn CPU cycles, might as well do something constructive :-)
I do feel the timeouts are a necessary feature. Interruptibility may be as well, but I'm going to ignore it for the time being...
-- Darren
|  |