From: Ingo Molnar <mingo@kernel.org>
To: Peter Zijlstra <peterz@infradead.org>
Cc: Jason Low <jason.low2@hp.com>,
linux-kernel@vger.kernel.org, Waiman Long <waiman.long@hp.com>,
paulmck@linux.vnet.ibm.com, torvalds@linux-foundation.org,
tglx@linutronix.de, riel@redhat.com, akpm@linux-foundation.org,
davidlohr@hp.com, hpa@zytor.com, andi@firstfloor.org,
aswin@hp.com, scott.norton@hp.com, chegu_vinod@hp.com
Subject: Re: [PATCH 5/8] locking, mutex: Cancelable MCS lock for adaptive spinning
Date: Tue, 11 Feb 2014 10:38:06 +0100 [thread overview]
Message-ID: <20140211093805.GA28048@gmail.com> (raw)
In-Reply-To: <20140211091805.GK27965@twins.programming.kicks-ass.net>
* Peter Zijlstra <peterz@infradead.org> wrote:
> On Mon, Feb 10, 2014 at 02:04:22PM -0800, Jason Low wrote:
> > On Mon, 2014-02-10 at 22:32 +0100, Peter Zijlstra wrote:
> > > Is adding that really much faster than the relatively straight path
> > > oqs_wait_next() would walk to bit the same exit?
> > >
> > > The only reason I pulled out the above cmpxchg() is because its the
> > > uncontended fast path, which seems like a special enough case.
> >
> > So it would avoid 2 extra checks (*lock == node) and (node->next) in the
> > oqs_wait_next() path, which aren't necessary when node->next != NULL.
> >
> > And I think node->next != NULL can be considered a special enough case
> > after the cmpxchg() fails because in the contended case, we're expecting
> > the node->next to be pointing at something. The only times node->next is
> > NULL after cmpxchg() fails are during a very small race window with the
> > osq_lock(), and when the next node is unqueuing due to need_resched,
> > which is also a very small window.
>
> True all; now if only we had a useful benchmark so we could test if
> it makes a difference or not :-)
Having useful 'perf bench lock' sub-test(s) that mimic the AIM7
workload (and other workloads that excercise locking) would address
that concern to a large degree.
Thanks,
Ingo
next prev parent reply other threads:[~2014-02-11 9:38 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-02-10 19:58 [PATCH 0/8] locking/core patches Peter Zijlstra
2014-02-10 19:58 ` [PATCH 1/8] locking: Move mcs_spinlock.h into kernel/locking/ Peter Zijlstra
2014-02-10 19:58 ` [PATCH 2/8] mutex: In mutex_can_spin_on_owner(), return false if task need_resched() Peter Zijlstra
2014-02-10 21:02 ` Peter Zijlstra
2014-02-10 19:58 ` [PATCH 3/8] mutex: Modify the way optimistic spinners are queued Peter Zijlstra
2014-02-11 1:33 ` Jason Low
2014-02-11 7:20 ` Peter Zijlstra
2014-02-10 19:58 ` [PATCH 4/8] mutex: Unlock the mutex without the wait_lock Peter Zijlstra
2014-02-10 19:58 ` [PATCH 5/8] locking, mutex: Cancelable MCS lock for adaptive spinning Peter Zijlstra
2014-02-10 21:15 ` Jason Low
2014-02-10 21:32 ` Peter Zijlstra
2014-02-10 22:04 ` Jason Low
2014-02-11 9:18 ` Peter Zijlstra
2014-02-11 9:38 ` Ingo Molnar [this message]
2014-02-25 19:56 ` Jason Low
2014-02-26 9:22 ` Peter Zijlstra
2014-02-26 17:45 ` Jason Low
2014-02-10 19:58 ` [PATCH 6/8] mutex: Extra reschedule point Peter Zijlstra
2014-02-10 22:59 ` Andrew Morton
2014-02-10 19:58 ` [PATCH 7/8] locking: Introduce qrwlock Peter Zijlstra
2014-02-11 18:17 ` Waiman Long
2014-02-11 20:12 ` Waiman Long
2014-02-13 16:35 ` Peter Zijlstra
2014-02-13 17:26 ` Peter Zijlstra
2014-02-14 19:01 ` Waiman Long
2014-02-14 18:48 ` Waiman Long
2014-02-10 19:58 ` [PATCH 8/8] x86,locking: Enable qrwlock Peter Zijlstra
2014-02-10 23:02 ` [PATCH 0/8] locking/core patches Andrew Morton
2014-02-11 7:17 ` Peter Zijlstra
2014-02-11 8:03 ` Andrew Morton
2014-02-11 8:45 ` Ingo Molnar
2014-02-11 8:57 ` Peter Zijlstra
2014-02-11 21:37 ` Waiman Long
2014-02-25 19:26 ` Jason Low
2014-02-26 21:40 ` Paul E. McKenney
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=20140211093805.GA28048@gmail.com \
--to=mingo@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=andi@firstfloor.org \
--cc=aswin@hp.com \
--cc=chegu_vinod@hp.com \
--cc=davidlohr@hp.com \
--cc=hpa@zytor.com \
--cc=jason.low2@hp.com \
--cc=linux-kernel@vger.kernel.org \
--cc=paulmck@linux.vnet.ibm.com \
--cc=peterz@infradead.org \
--cc=riel@redhat.com \
--cc=scott.norton@hp.com \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.org \
--cc=waiman.long@hp.com \
/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.