From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
To: Srivatsa Vaddagiri <vatsa@linux.vnet.ibm.com>,
Jeremy Fitzhardinge <jeremy@goop.org>
Cc: Xen Devel <xen-devel@lists.xensource.com>,
the arch/x86 maintainers <x86@kernel.org>,
KVM <kvm@vger.kernel.org>,
Stefano Stabellini <stefano.stabellini@eu.citrix.com>,
Peter Zijlstra <peterz@infradead.org>,
Raghavendra K T <raghavendra.kt@linux.vnet.ibm.com>,
LKML <linux-kernel@vger.kernel.org>,
Andi Kleen <andi@firstfloor.org>, Avi Kivity <avi@redhat.com>,
Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>,
"H. Peter Anvin" <hpa@zytor.com>,
Attilio Rao <attilio.rao@citrix.com>,
Thomas Gleixner <tglx@linutronix.de>,
Virtualization <virtualization@lists.linux-foundation.org>,
Linus Torvalds <torvalds@linux-foundation.org>,
Ingo Molnar <mingo@elte.hu>,
Stephan Diestelhorst <stephan.diestelhorst@amd.com>
Subject: Re: [PATCH RFC V6 0/11] Paravirtualized ticketlocks
Date: Mon, 16 Apr 2012 11:44:29 -0400 [thread overview]
Message-ID: <20120416154429.GB4654@phenom.dumpdata.com> (raw)
In-Reply-To: <20120331040745.GC14030@linux.vnet.ibm.com>
On Sat, Mar 31, 2012 at 09:37:45AM +0530, Srivatsa Vaddagiri wrote:
> * Thomas Gleixner <tglx@linutronix.de> [2012-03-31 00:07:58]:
>
> > I know that Peter is going to go berserk on me, but if we are running
> > a paravirt guest then it's simple to provide a mechanism which allows
> > the host (aka hypervisor) to check that in the guest just by looking
> > at some global state.
> >
> > So if a guest exits due to an external event it's easy to inspect the
> > state of that guest and avoid to schedule away when it was interrupted
> > in a spinlock held section. That guest/host shared state needs to be
> > modified to indicate the guest to invoke an exit when the last nested
> > lock has been released.
>
> I had attempted something like that long back:
>
> http://lkml.org/lkml/2010/6/3/4
>
> The issue is with ticketlocks though. VCPUs could go into a spin w/o
> a lock being held by anybody. Say VCPUs 1-99 try to grab a lock in
> that order (on a host with one cpu). VCPU1 wins (after VCPU0 releases it)
> and releases the lock. VCPU1 is next eligible to take the lock. If
> that is not scheduled early enough by host, then remaining vcpus would keep
> spinning (even though lock is technically not held by anybody) w/o making
> forward progress.
>
> In that situation, what we really need is for the guest to hint to host
> scheduler to schedule VCPU1 early (via yield_to or something similar).
>
> The current pv-spinlock patches however does not track which vcpu is
> spinning at what head of the ticketlock. I suppose we can consider
> that optimization in future and see how much benefit it provides (over
> plain yield/sleep the way its done now).
Right. I think Jeremy played around with this some time?
>
> Do you see any issues if we take in what we have today and address the
> finer-grained optimization as next step?
I think that is the proper course - these patches show
that on baremetal we don't incur performance regressions and in
virtualization case we benefit greatly. Since these are the basic
building blocks of a kernel - taking it slow and just adding
this set of patches for v3.5 is a good idea - and then building on top
of that for further refinement.
>
> - vatsa
WARNING: multiple messages have this Message-ID (diff)
From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
To: Srivatsa Vaddagiri <vatsa@linux.vnet.ibm.com>,
Jeremy Fitzhardinge <jeremy@goop.org>
Cc: Thomas Gleixner <tglx@linutronix.de>,
"H. Peter Anvin" <hpa@zytor.com>,
Raghavendra K T <raghavendra.kt@linux.vnet.ibm.com>,
Ingo Molnar <mingo@elte.hu>,
Linus Torvalds <torvalds@linux-foundation.org>,
Peter Zijlstra <peterz@infradead.org>,
the arch/x86 maintainers <x86@kernel.org>,
LKML <linux-kernel@vger.kernel.org>, Avi Kivity <avi@redhat.com>,
Marcelo Tosatti <mtosatti@redhat.com>, KVM <kvm@vger.kernel.org>,
Andi Kleen <andi@firstfloor.org>,
Xen Devel <xen-devel@lists.xensource.com>,
Virtualization <virtualization@lists.linux-foundation.org>,
Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>,
Stephan Diestelhorst <stephan.diestelhorst@amd.com>,
Stefano Stabellini <stefano.stabellini@eu.citrix.com>,
Attilio Rao <attilio.rao@citrix.com>
Subject: Re: [PATCH RFC V6 0/11] Paravirtualized ticketlocks
Date: Mon, 16 Apr 2012 11:44:29 -0400 [thread overview]
Message-ID: <20120416154429.GB4654@phenom.dumpdata.com> (raw)
In-Reply-To: <20120331040745.GC14030@linux.vnet.ibm.com>
On Sat, Mar 31, 2012 at 09:37:45AM +0530, Srivatsa Vaddagiri wrote:
> * Thomas Gleixner <tglx@linutronix.de> [2012-03-31 00:07:58]:
>
> > I know that Peter is going to go berserk on me, but if we are running
> > a paravirt guest then it's simple to provide a mechanism which allows
> > the host (aka hypervisor) to check that in the guest just by looking
> > at some global state.
> >
> > So if a guest exits due to an external event it's easy to inspect the
> > state of that guest and avoid to schedule away when it was interrupted
> > in a spinlock held section. That guest/host shared state needs to be
> > modified to indicate the guest to invoke an exit when the last nested
> > lock has been released.
>
> I had attempted something like that long back:
>
> http://lkml.org/lkml/2010/6/3/4
>
> The issue is with ticketlocks though. VCPUs could go into a spin w/o
> a lock being held by anybody. Say VCPUs 1-99 try to grab a lock in
> that order (on a host with one cpu). VCPU1 wins (after VCPU0 releases it)
> and releases the lock. VCPU1 is next eligible to take the lock. If
> that is not scheduled early enough by host, then remaining vcpus would keep
> spinning (even though lock is technically not held by anybody) w/o making
> forward progress.
>
> In that situation, what we really need is for the guest to hint to host
> scheduler to schedule VCPU1 early (via yield_to or something similar).
>
> The current pv-spinlock patches however does not track which vcpu is
> spinning at what head of the ticketlock. I suppose we can consider
> that optimization in future and see how much benefit it provides (over
> plain yield/sleep the way its done now).
Right. I think Jeremy played around with this some time?
>
> Do you see any issues if we take in what we have today and address the
> finer-grained optimization as next step?
I think that is the proper course - these patches show
that on baremetal we don't incur performance regressions and in
virtualization case we benefit greatly. Since these are the basic
building blocks of a kernel - taking it slow and just adding
this set of patches for v3.5 is a good idea - and then building on top
of that for further refinement.
>
> - vatsa
next prev parent reply other threads:[~2012-04-16 15:44 UTC|newest]
Thread overview: 113+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-03-21 10:20 [PATCH RFC V6 0/11] Paravirtualized ticketlocks Raghavendra K T
2012-03-21 10:20 ` Raghavendra K T
2012-03-21 10:20 ` [PATCH RFC V6 1/11] x86/spinlock: replace pv spinlocks with pv ticketlocks Raghavendra K T
2012-03-21 10:20 ` Raghavendra K T
2012-03-21 13:04 ` Attilio Rao
2012-03-21 13:04 ` Attilio Rao
2012-03-21 13:22 ` Stephan Diestelhorst
2012-03-21 13:49 ` Attilio Rao
2012-03-21 14:25 ` Stephan Diestelhorst
2012-03-21 14:25 ` Stephan Diestelhorst
2012-03-21 14:33 ` Attilio Rao
2012-03-21 14:33 ` Attilio Rao
2012-03-21 14:49 ` Raghavendra K T
2012-03-21 14:49 ` Raghavendra K T
2012-03-21 13:49 ` Attilio Rao
2012-03-21 13:22 ` Stephan Diestelhorst
2012-03-21 10:21 ` [PATCH RFC V6 2/11] x86/ticketlock: don't inline _spin_unlock when using paravirt spinlocks Raghavendra K T
2012-03-21 10:21 ` Raghavendra K T
2012-03-21 17:13 ` Linus Torvalds
2012-03-21 17:13 ` Linus Torvalds
2012-03-22 10:06 ` Raghavendra K T
2012-03-22 10:06 ` Raghavendra K T
2012-03-22 10:06 ` Raghavendra K T
2012-03-21 10:21 ` [PATCH RFC V6 3/11] x86/ticketlock: collapse a layer of functions Raghavendra K T
2012-03-21 10:21 ` Raghavendra K T
2012-03-21 10:21 ` [PATCH RFC V6 4/11] xen: defer spinlock setup until boot CPU setup Raghavendra K T
2012-03-21 10:21 ` Raghavendra K T
2012-03-21 10:21 ` [PATCH RFC V6 5/11] xen/pvticketlock: Xen implementation for PV ticket locks Raghavendra K T
2012-03-21 10:21 ` Raghavendra K T
2012-03-21 10:21 ` [PATCH RFC V6 6/11] xen/pvticketlocks: add xen_nopvspin parameter to disable xen pv ticketlocks Raghavendra K T
2012-03-21 10:21 ` Raghavendra K T
2012-03-21 10:21 ` [PATCH RFC V6 7/11] x86/pvticketlock: use callee-save for lock_spinning Raghavendra K T
2012-03-21 10:21 ` Raghavendra K T
2012-03-21 10:22 ` [PATCH RFC V6 8/11] x86/pvticketlock: when paravirtualizing ticket locks, increment by 2 Raghavendra K T
2012-03-21 10:22 ` Raghavendra K T
2012-03-21 10:22 ` Raghavendra K T
2012-03-21 10:22 ` [PATCH RFC V6 9/11] x86/ticketlock: add slowpath logic Raghavendra K T
2012-03-21 10:22 ` Raghavendra K T
2012-03-21 10:22 ` [PATCH RFC V6 10/11] xen/pvticketlock: allow interrupts to be enabled while blocking Raghavendra K T
2012-03-21 10:22 ` Raghavendra K T
2012-03-21 10:22 ` [PATCH RFC V6 11/11] xen: enable PV ticketlocks on HVM Xen Raghavendra K T
2012-03-21 10:22 ` Raghavendra K T
2012-03-26 14:25 ` [PATCH RFC V6 0/11] Paravirtualized ticketlocks Avi Kivity
2012-03-26 14:25 ` Avi Kivity
2012-03-27 7:37 ` Raghavendra K T
2012-03-27 7:37 ` Raghavendra K T
2012-03-28 16:09 ` Alan Meadows
2012-03-28 18:21 ` Raghavendra K T
2012-03-28 18:21 ` Raghavendra K T
2012-03-29 9:58 ` Avi Kivity
2012-03-29 9:58 ` Avi Kivity
2012-03-29 18:03 ` Raghavendra K T
2012-03-29 18:03 ` Raghavendra K T
2012-03-30 10:07 ` Raghavendra K T
2012-04-01 13:18 ` Avi Kivity
2012-04-01 13:18 ` Avi Kivity
2012-04-01 13:48 ` Raghavendra K T
2012-04-01 13:48 ` Raghavendra K T
2012-04-01 13:53 ` Avi Kivity
2012-04-01 13:53 ` Avi Kivity
2012-04-01 13:56 ` Raghavendra K T
2012-04-01 13:56 ` Raghavendra K T
2012-04-02 9:51 ` Raghavendra K T
2012-04-02 12:15 ` Raghavendra K T
2012-04-02 12:15 ` Raghavendra K T
2012-04-05 9:01 ` Avi Kivity
2012-04-05 9:01 ` Avi Kivity
2012-04-05 10:40 ` Raghavendra K T
2012-04-05 10:40 ` Raghavendra K T
2012-04-02 9:51 ` Raghavendra K T
2012-04-02 9:51 ` Raghavendra K T
2012-04-05 8:43 ` Raghavendra K T
2012-04-05 8:43 ` Raghavendra K T
2012-03-30 10:07 ` Raghavendra K T
2012-03-28 16:37 ` Alan Meadows
2012-03-30 20:26 ` H. Peter Anvin
2012-03-30 20:26 ` H. Peter Anvin
2012-03-30 22:07 ` Thomas Gleixner
2012-03-30 22:07 ` Thomas Gleixner
2012-03-30 22:18 ` Andi Kleen
2012-03-30 22:18 ` Andi Kleen
2012-03-30 23:04 ` Thomas Gleixner
2012-03-30 23:04 ` Thomas Gleixner
2012-03-31 0:08 ` Andi Kleen
2012-03-31 0:08 ` Andi Kleen
2012-03-31 8:11 ` Ingo Molnar
2012-03-31 8:11 ` Ingo Molnar
2012-03-31 4:07 ` Srivatsa Vaddagiri
2012-03-31 4:07 ` Srivatsa Vaddagiri
2012-03-31 4:09 ` Srivatsa Vaddagiri
2012-03-31 4:09 ` Srivatsa Vaddagiri
2012-04-16 15:44 ` Konrad Rzeszutek Wilk [this message]
2012-04-16 15:44 ` Konrad Rzeszutek Wilk
2012-04-16 16:36 ` [Xen-devel] " Ian Campbell
2012-04-16 16:36 ` Ian Campbell
2012-04-16 16:42 ` Jeremy Fitzhardinge
2012-04-16 16:42 ` Jeremy Fitzhardinge
2012-04-17 2:54 ` Srivatsa Vaddagiri
2012-04-17 2:54 ` Srivatsa Vaddagiri
2012-04-01 13:31 ` Avi Kivity
2012-04-01 13:31 ` Avi Kivity
2012-04-02 9:26 ` Thomas Gleixner
2012-04-02 9:26 ` Thomas Gleixner
2012-04-05 9:15 ` Avi Kivity
2012-04-05 9:15 ` Avi Kivity
2012-04-02 4:36 ` [Xen-devel] " Juergen Gross
2012-04-02 4:36 ` Juergen Gross
2012-04-02 9:42 ` Ian Campbell
2012-04-02 9:42 ` Ian Campbell
2012-04-11 1:29 ` Marcelo Tosatti
2012-04-11 1:29 ` Marcelo Tosatti
2012-03-31 0:51 ` Raghavendra K T
2012-03-31 0:51 ` Raghavendra K T
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=20120416154429.GB4654@phenom.dumpdata.com \
--to=konrad.wilk@oracle.com \
--cc=andi@firstfloor.org \
--cc=attilio.rao@citrix.com \
--cc=avi@redhat.com \
--cc=hpa@zytor.com \
--cc=jeremy.fitzhardinge@citrix.com \
--cc=jeremy@goop.org \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=peterz@infradead.org \
--cc=raghavendra.kt@linux.vnet.ibm.com \
--cc=stefano.stabellini@eu.citrix.com \
--cc=stephan.diestelhorst@amd.com \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.org \
--cc=vatsa@linux.vnet.ibm.com \
--cc=virtualization@lists.linux-foundation.org \
--cc=x86@kernel.org \
--cc=xen-devel@lists.xensource.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.