All of lore.kernel.org
 help / color / mirror / Atom feed
From: Darren Hart <dvhltc@us.ibm.com>
To: rostedt@goodmis.org
Cc: "lkml," <linux-kernel@vger.kernel.org>,
	Peter Zijlstra <peterz@infradead.org>,
	Gregory Haskins <ghaskins@novell.com>,
	Sven-Thorsten Dietrich <sdietrich@novell.com>,
	Peter Morreale <pmorreale@novell.com>,
	Thomas Gleixner <tglx@linutronix.de>, Ingo Molnar <mingo@elte.hu>,
	Eric Dumazet <eric.dumazet@gmail.com>,
	Chris Mason <chris.mason@oracle.com>
Subject: Re: RFC: Ideal Adaptive Spinning Conditions
Date: Wed, 31 Mar 2010 19:13:20 -0700	[thread overview]
Message-ID: <4BB40140.20109@us.ibm.com> (raw)
In-Reply-To: <1270078689.19685.8040.camel@gandalf.stny.rr.com>

Steven Rostedt wrote:
> On Wed, 2010-03-31 at 16:21 -0700, Darren Hart wrote:
> 
>> o What type of lock hold times do we expect to benefit?
> 
> 0 (that's a zero) :-p
> 
> I haven't seen your patches but you are not doing a heuristic approach,
> are you? That is, do not "spin" hoping the lock will suddenly become
> free. I was against that for -rt and I would be against that for futex
> too.

I'm not sure what you're getting at here. Adaptive spinning is indeed 
hoping the lock will become free while you are spinning and checking 
it's owner...

> 
>> o How much contention is a good match for adaptive spinning?
>>    - this is related to the number of threads to run in the test
>> o How many spinners should be allowed?
>>
>> I can share the kernel patches if people are interested, but they are 
>> really early, and I'm not sure they are of much value until I better 
>> understand the conditions where this is expected to be useful.
> 
> Again, I don't know how you implemented your adaptive spinners, but the
> trick to it in -rt was that it would only spin while the owner of the
> lock was actually running. If it was not running, it would sleep. No
> point waiting for a sleeping task to release its lock.

It does exactly this.

> Is this what you did? Because, IIRC, this only benefited spinlocks
> converted to mutexes. It did not help with semaphores, because
> semaphores could be held for a long time. Thus, it was good for short
> held locks, but hurt performance on long held locks.

Trouble is, I'm still seeing performance penalties even on the shortest 
critical section possible (lock();unlock();)

> If userspace is going to do this, I guess the blocked task would need to
> go into kernel, and spin there (with preempt enabled) if the task is
> still active and holding the lock.

It is currently under preempt_disable() just like mutexes. I asked Peter 
why it was done that way for mutexes, but didn't really get an answer. 
He did point out that since we check need_resched() at every iteration 
that we won't run longer than our timeslice anyway, so it shouldn't be a 
  problem.

> Then the application would need to determine which to use. An adaptive
> spinner for short held locks, and a normal futex for long held locks.

Yes, this was intended to be an optional thing (and certainly not the 
default).


-- 
Darren Hart
IBM Linux Technology Center
Real-Time Linux Team

  parent reply	other threads:[~2010-04-01  2:13 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-03-31 23:21 RFC: Ideal Adaptive Spinning Conditions Darren Hart
2010-03-31 23:35 ` Roland Dreier
2010-04-01  2:03   ` Darren Hart
2010-04-01 17:02     ` Chris Wright
2010-03-31 23:38 ` Steven Rostedt
2010-04-01  0:17   ` Peter W. Morreale
2010-04-01  2:25     ` Darren Hart
2010-04-03 18:00       ` john cooper
2010-04-05 14:06         ` Darren Hart
2010-04-03 17:51     ` john cooper
2010-04-01  2:13   ` Darren Hart [this message]
2010-04-01  2:25     ` Steven Rostedt
2010-04-01  5:15       ` Darren Hart
2010-04-01 12:46         ` Gregory Haskins
2010-04-04  1:50       ` Rik van Riel
2010-04-04 15:06         ` Peter W. Morreale
2010-04-05 14:10         ` Darren Hart
2010-04-01  2:10 ` Darren Hart
2010-04-01 14:04   ` Chris Mason
2010-04-01 14:20 ` Avi Kivity
2010-04-01 15:54   ` Darren Hart
2010-04-01 16:10     ` Avi Kivity
2010-04-01 17:10       ` Darren Hart
2010-04-01 17:15         ` Avi Kivity

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4BB40140.20109@us.ibm.com \
    --to=dvhltc@us.ibm.com \
    --cc=chris.mason@oracle.com \
    --cc=eric.dumazet@gmail.com \
    --cc=ghaskins@novell.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=peterz@infradead.org \
    --cc=pmorreale@novell.com \
    --cc=rostedt@goodmis.org \
    --cc=sdietrich@novell.com \
    --cc=tglx@linutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.