From: Avi Kivity <avi@redhat.com>
To: Darren Hart <dvhltc@us.ibm.com>
Cc: "lkml, " <linux-kernel@vger.kernel.org>,
Steven Rostedt <rostedt@goodmis.org>,
Peter Zijlstra <peterz@infradead.org>,
Gregory Haskins <ghaskins@novell.com>,
Sven-Thorsten Dietrich <sdietrich@novell.com>,
Peter Morreale <pmorreale@novell.com>,
Chris Wright <chrisw@sous-sol.org>,
Thomas Gleixner <tglx@linutronix.de>, Ingo Molnar <mingo@elte.hu>,
Eric Dumazet <eric.dumazet@gmail.com>
Subject: Re: RFC: Ideal Adaptive Spinning Conditions
Date: Thu, 01 Apr 2010 17:20:43 +0300 [thread overview]
Message-ID: <4BB4ABBB.4000909@redhat.com> (raw)
In-Reply-To: <4BB3D90C.3030108@us.ibm.com>
On 04/01/2010 02:21 AM, Darren Hart wrote:
> I'm looking at some adaptive spinning with futexes as a way to help
> reduce the dependence on sched_yield() to implement userspace
> spinlocks. Chris, I included you in the CC after reading your comments
> regarding sched_yield() at kernel summit and I thought you might be
> interested.
>
> I have an experimental patchset that implements FUTEX_LOCK and
> FUTEX_LOCK_ADAPTIVE in the kernel and use something akin to
> mutex_spin_on_owner() for the first waiter to spin. What I'm finding
> is that adaptive spinning actually hurts my particular test case, so I
> was hoping to poll people for context regarding the existing adaptive
> spinning implementations in the kernel as to where we see benefit.
> Under which conditions does adaptive spinning help?
>
> I presume locks with a short average hold time stand to gain the most
> as the longer the lock is held the more likely the spinner will expire
> its timeslice or that the scheduling gain becomes noise in the
> acquisition time. My test case simple calls "lock();unlock()" for a
> fixed number of iterations and reports the iterations per second at
> the end of the run. It can run with an arbitrary number of threads as
> well. I typically run with 256 threads for 10M iterations.
>
> futex_lock: Result: 635 Kiter/s
> futex_lock_adaptive: Result: 542 Kiter/s
A lock(); unlock(); loop spends most of its time with the lock held or
contended. Can you something like this:
lock();
for (i = 0; i < 1000; ++i)
asm volatile ("" : : : "memory");
unlock();
for (i = 0; i < 10000; ++i)
asm volatile ("" : : : "memory");
This simulates a lock hold ratio of 10% with the lock hold time
exceeding the acquisition time. Will be interesting to lower both loop
bounds as well.
--
error compiling committee.c: too many arguments to function
next prev parent reply other threads:[~2010-04-01 16:31 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
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 [this message]
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=4BB4ABBB.4000909@redhat.com \
--to=avi@redhat.com \
--cc=chrisw@sous-sol.org \
--cc=dvhltc@us.ibm.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.