virtualization.lists.linux-foundation.org archive mirror
 help / color / mirror / Atom feed
From: Raghavendra K T <raghavendra.kt@linux.vnet.ibm.com>
To: Jeremy Fitzhardinge <jeremy@goop.org>, Avi Kivity <avi@redhat.com>
Cc: Greg Kroah-Hartman <gregkh@suse.de>,
	linux-doc@vger.kernel.org, Peter Zijlstra <peterz@infradead.org>,
	Jan Kiszka <jan.kiszka@siemens.com>,
	Virtualization <virtualization@lists.linux-foundation.org>,
	Paul Mackerras <paulus@samba.org>,
	Raghavendra <raghavendra.kt@linux.vnet.ibm.com>,
	"H. Peter Anvin" <hpa@zytor.com>,
	Stefano Stabellini <stefano.stabellini@eu.citrix.com>,
	Xen <xen-devel@lists.xensource.com>,
	Dave Jiang <dave.jiang@intel.com>, KVM <kvm@vger.kernel.org>,
	Rob Landley <rlandley@parallels.com>, X86 <x86@kernel.org>,
	Ingo Molnar <mingo@redhat.com>, Rik van Riel <riel@redhat.com>,
	Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>,
	Srivatsa Vaddagiri <vatsa@linux.vnet.ibm.com>,
	Sasha Levin <levinsasha928@gmail.com>,
	Sedat Dilek <sedat.dilek@gmail.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	LKML <linux-kernel@vger.kernel.org>,
	Dave Hansen <dave@linux.vnet.ibm.com>
Subject: Re: [PATCH RFC V4 0/5] kvm : Paravirt-spinlock support for KVM guests
Date: Wed, 18 Jan 2012 16:18:11 +0530	[thread overview]
Message-ID: <4F16A36B.4050409@linux.vnet.ibm.com> (raw)
In-Reply-To: <4F14B9C7.9090709@goop.org>

On 01/17/2012 05:29 AM, Jeremy Fitzhardinge wrote:
> On 01/16/2012 07:55 PM, Avi Kivity wrote:
>> On 01/16/2012 08:40 AM, Jeremy Fitzhardinge wrote:
>>>> That means we're spinning for n cycles, then notify the spinlock holder that we'd like to get kicked and go sleeping. While I'm pretty sure that it improves the situation, it doesn't solve all of the issues we have.
>>>>
>>>> Imagine we have an idle host. All vcpus can freely run and everyone can fetch the lock as fast as on real machines. We don't need to / want to go to sleep here. Locks that take too long are bugs that need to be solved on real hw just as well, so all we do is possibly incur overhead.
>>> I'm not quite sure what your concern is.  The lock is under contention, so there's nothing to do except spin; all this patch adds is a variable decrement/test to the spin loop, but that's not going to waste any more CPU than the non-counting case.  And once it falls into the blocking path, its a win because the VCPU isn't burning CPU any more.
>> The wakeup path is slower though.  The previous lock holder has to
>> hypercall, and the new lock holder has to be scheduled, and transition
>> from halted state to running (a vmentry).  So it's only a clear win if
>> we can do something with the cpu other than go into the idle loop.
>
> Not burning power is a win too.
>
> Actually what you want is something like "if you preempt a VCPU while
> its spinning in a lock, then push it into the slowpath and don't
> reschedule it without a kick".  But I think that interface would have a
> lot of fiddly corners.
>

Yes wakeup path is little slower but better than burning cpu. no?

Suppose we have  16 vcpu,
vcpu 1- lockholder (preempted).
vcpu 2-8 - in slowpath.

If scheduler schedules vcpu-1 that is most favourable for lock progress,
But if vcpu-9 - vcpu-16 OR something else scheduled, then  also it's a 
win right (we are doing some useful work), but yes lock progress is
again little slower though.

The optimization areas of interests are perhaps:
(1) suppose vcpu-1 is running and is about to release lock and next
vcpu in queue just goes to halt(). so this makes us to tune 
SPIN_THRESHOLD rightly and have a mechanism to determine if lock-holder 
is running and do continue spin. Identifying whether lock-holder is 
running would be easier task and can be next step of optimization.

(2) Much talked, identifying lockholder-preemption (vcpu) and do
yield_to().

But I am not sure how complicated is yield_to() implementation once we 
have identified the exact preempted vcpu (lock-holder).

>      J
>
>

  reply	other threads:[~2012-01-18 10:48 UTC|newest]

Thread overview: 69+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-01-14 18:25 [PATCH RFC V4 0/5] kvm : Paravirt-spinlock support for KVM guests Raghavendra K T
2012-01-14 18:25 ` [PATCH RFC V4 1/5] debugfs: Add support to print u32 array in debugfs Raghavendra K T
2012-01-14 18:25 ` [PATCH RFC V4 2/5] kvm hypervisor : Add a hypercall to KVM hypervisor to support pv-ticketlocks Raghavendra K T
2012-01-16  3:24   ` Alexander Graf
2012-01-16  8:43     ` Raghavendra K T
2012-01-16  9:03   ` Avi Kivity
2012-01-16  9:55     ` Raghavendra K T
2012-01-14 18:26 ` [PATCH RFC V4 3/5] kvm guest : Added configuration support to enable debug information for KVM Guests Raghavendra K T
2012-01-14 18:26 ` [PATCH RFC V4 4/5] kvm : pv-ticketlocks support for linux guests running on KVM hypervisor Raghavendra K T
2012-01-16  3:12   ` Alexander Graf
2012-01-16  7:25     ` Raghavendra K T
2012-01-16  9:05   ` Avi Kivity
2012-01-16 14:13     ` Raghavendra K T
2012-01-16 14:47       ` Avi Kivity
2012-01-16 23:49         ` Jeremy Fitzhardinge
2012-01-17 11:02   ` Marcelo Tosatti
2012-01-17 11:33     ` Srivatsa Vaddagiri
2012-01-18  1:34       ` Jeremy Fitzhardinge
2012-01-18 13:54         ` Srivatsa Vaddagiri
2012-01-18 21:52           ` Jeremy Fitzhardinge
2012-01-24 14:08             ` Avi Kivity
2012-01-24 18:51               ` Raghavendra K T
2012-01-17 18:57     ` Raghavendra K T
2012-01-24 19:01       ` Raghavendra K T
2012-01-14 18:27 ` [PATCH RFC V4 5/5] Documentation/kvm : Add documentation on Hypercalls and features used for PV spinlock Raghavendra K T
     [not found] ` <20120114182710.8604.22277.sendpatchset@oc5400248562.ibm.com>
2012-01-16  3:23   ` Alexander Graf
2012-01-16  3:51     ` Srivatsa Vaddagiri
2012-01-16  4:00       ` Alexander Graf
2012-01-16  8:47         ` Avi Kivity
2012-01-16  8:44     ` Raghavendra K T
2012-01-16 10:26       ` Alexander Graf
2012-01-16  9:00   ` Avi Kivity
2012-01-16  9:40     ` Srivatsa Vaddagiri
2012-01-16 10:14       ` Avi Kivity
2012-01-16 14:11         ` Srivatsa Vaddagiri
2012-01-17  9:14           ` Gleb Natapov
2012-01-17 12:26             ` Srivatsa Vaddagiri
2012-01-17 12:51               ` Gleb Natapov
2012-01-17 13:11                 ` Srivatsa Vaddagiri
2012-01-17 13:20                   ` Gleb Natapov
2012-01-17 14:28                     ` Srivatsa Vaddagiri
2012-01-17 15:32                       ` Gleb Natapov
2012-01-17 15:53                         ` Marcelo Tosatti
2012-01-20 15:09                           ` Srivatsa Vaddagiri
2012-01-17 13:13                 ` Raghavendra K T
2012-01-16  3:57 ` [PATCH RFC V4 0/5] kvm : Paravirt-spinlock support for KVM guests Alexander Graf
2012-01-16  6:40   ` Jeremy Fitzhardinge
2012-01-16  8:55     ` Avi Kivity
2012-01-16 23:59       ` Jeremy Fitzhardinge
2012-01-18 10:48         ` Raghavendra K T [this message]
2012-01-16 10:24     ` Alexander Graf
2012-01-17  0:30       ` Jeremy Fitzhardinge
2012-01-18 10:23         ` Raghavendra K T
2012-01-16 13:43   ` Raghavendra K T
2012-01-16 13:49     ` Avi Kivity
2012-01-16 18:48       ` Raghavendra K T
2012-01-16 14:20   ` Srivatsa Vaddagiri
2012-01-16 14:23     ` Alexander Graf
2012-01-16 18:38       ` Raghavendra K T
2012-01-16 18:42         ` Alexander Graf
2012-01-17 17:27           ` Raghavendra K T
2012-01-17 17:39             ` Alexander Graf
2012-01-17 18:36               ` Raghavendra K T
2012-01-17 21:57                 ` Dave Hansen
2012-01-18  2:27                   ` Raghavendra K T
2012-01-25  8:55                 ` Raghavendra K T
2012-01-25 16:35                   ` Konrad Rzeszutek Wilk
2012-01-25 17:45                     ` Raghavendra K T
2012-01-25 19:05                       ` Konrad Rzeszutek Wilk

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=4F16A36B.4050409@linux.vnet.ibm.com \
    --to=raghavendra.kt@linux.vnet.ibm.com \
    --cc=avi@redhat.com \
    --cc=dave.jiang@intel.com \
    --cc=dave@linux.vnet.ibm.com \
    --cc=gregkh@suse.de \
    --cc=hpa@zytor.com \
    --cc=jan.kiszka@siemens.com \
    --cc=jeremy@goop.org \
    --cc=konrad.wilk@oracle.com \
    --cc=kvm@vger.kernel.org \
    --cc=levinsasha928@gmail.com \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=paulus@samba.org \
    --cc=peterz@infradead.org \
    --cc=riel@redhat.com \
    --cc=rlandley@parallels.com \
    --cc=sedat.dilek@gmail.com \
    --cc=stefano.stabellini@eu.citrix.com \
    --cc=tglx@linutronix.de \
    --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 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).