From: Boqun Feng <boqun.feng@gmail.com>
To: Peter Zijlstra <peterz@infradead.org>
Cc: Pan Xinhui <xinhui.pan@linux.vnet.ibm.com>,
linux-kernel@vger.kernel.org, mingo@redhat.com,
dave@stgolabs.net, will.deacon@arm.com, Waiman.Long@hpe.com,
benh@kernel.crashing.org
Subject: Re: [PATCH] locking/osq: Drop the overload of osq lock
Date: Sun, 26 Jun 2016 00:45:27 +0800 [thread overview]
Message-ID: <20160625164527.GD2384@insomnia> (raw)
In-Reply-To: <20160625161540.GM30154@twins.programming.kicks-ass.net>
[-- Attachment #1: Type: text/plain, Size: 1419 bytes --]
On Sat, Jun 25, 2016 at 06:15:40PM +0200, Peter Zijlstra wrote:
> On Sat, Jun 25, 2016 at 11:21:30PM +0800, Boqun Feng wrote:
> > So on PPC, we have lppaca::yield_count to detect when an vcpu is
> > preempted, if the yield_count is even, the vcpu is running, otherwise it
> > is preempted(__spin_yield() is a user of this).
> >
> > Therefore it makes more sense we
> >
> > if (need_resched() || vcpu_is_preempted(old))
> >
> > here, and implement vcpu_is_preempted() on PPC as
> >
> > bool vcpu_is_preempted(int cpu)
> > {
> > return !!(be32_to_cpu(lppaca_of(cpu).yield_count) & 1)
> > }
> >
> > Thoughts?
>
> Would that not have issues where the owner cpu is kept running but the
> spinner (ie. _this_ vcpu) gets preempted? I would think that in that
> case we too want to stop spinning.
>
I don't think we want(or need) to stop the spinning of _this_ vcpu in
that case? Because it has already been preempted, when it gets back to
run, the owner may still be running and haven't set ->locked to 1 yet,
which means spinning on this vcpu is still worthwhile.
I think the proper logic here is that in the optimistic spin queue, if
any one found its predecessor's vcpu was preempted, it should stop
spinning, because it's very likely that it would not see ->locked
becoming 1 in a short time.
> Although, if all vcpus are scheduled equal, it might not matter on
> average.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 473 bytes --]
next prev parent reply other threads:[~2016-06-25 16:41 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-06-25 17:42 [PATCH] locking/osq: Drop the overload of osq lock Pan Xinhui
2016-06-25 14:24 ` Peter Zijlstra
2016-06-25 15:21 ` Boqun Feng
2016-06-25 16:09 ` Peter Zijlstra
2016-06-25 16:13 ` Peter Zijlstra
2016-06-25 17:27 ` panxinhui
2016-06-25 19:12 ` Peter Zijlstra
2016-06-26 4:59 ` panxinhui
2016-06-27 7:55 ` Peter Zijlstra
2016-06-27 10:19 ` xinhui
2016-06-25 16:28 ` Boqun Feng
2016-06-25 18:28 ` Peter Zijlstra
2016-06-25 16:15 ` Peter Zijlstra
2016-06-25 16:45 ` Boqun Feng [this message]
2016-06-25 17:27 ` panxinhui
2016-06-25 19:20 ` Peter Zijlstra
2016-06-25 19:29 ` Peter Zijlstra
2016-06-26 2:26 ` Boqun Feng
2016-06-26 5:21 ` panxinhui
2016-06-26 6:10 ` Boqun Feng
2016-06-26 6:58 ` panxinhui
2016-06-26 14:11 ` Boqun Feng
2016-06-26 15:54 ` panxinhui
2016-06-26 6:59 ` Boqun Feng
2016-06-26 7:08 ` panxinhui
2016-06-26 14:29 ` Boqun Feng
2016-06-26 15:11 ` panxinhui
2016-06-27 6:45 ` Boqun Feng
2016-06-27 7:36 ` xinhui
2016-06-27 8:09 ` Peter Zijlstra
2016-06-27 10:31 ` Boqun Feng
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=20160625164527.GD2384@insomnia \
--to=boqun.feng@gmail.com \
--cc=Waiman.Long@hpe.com \
--cc=benh@kernel.crashing.org \
--cc=dave@stgolabs.net \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=will.deacon@arm.com \
--cc=xinhui.pan@linux.vnet.ibm.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).