From: Gregory Haskins <ghaskins@novell.com>
To: paulmck@linux.vnet.ibm.com
Cc: Marcelo Tosatti <mtosatti@redhat.com>,
Avi Kivity <avi@redhat.com>, Chris Wright <chrisw@sous-sol.org>,
Gregory Haskins <gregory.haskins@gmail.com>,
linux-kernel@vger.kernel.org, kvm@vger.kernel.org,
Anthony Liguori <anthony@codemonkey.ws>
Subject: Re: [RFC PATCH 0/3] generic hypercall support
Date: Fri, 08 May 2009 15:55:09 -0400 [thread overview]
Message-ID: <4A048E1D.3060101@novell.com> (raw)
In-Reply-To: <20090508164845.GI6788@linux.vnet.ibm.com>
[-- Attachment #1: Type: text/plain, Size: 4007 bytes --]
Paul E. McKenney wrote:
> On Fri, May 08, 2009 at 08:43:40AM -0400, Gregory Haskins wrote:
>
>> Marcelo Tosatti wrote:
>>
>>> On Fri, May 08, 2009 at 10:59:00AM +0300, Avi Kivity wrote:
>>>
>>>
>>>> Marcelo Tosatti wrote:
>>>>
>>>>
>>>>> I think comparison is not entirely fair. You're using
>>>>> KVM_HC_VAPIC_POLL_IRQ ("null" hypercall) and the compiler optimizes that
>>>>> (on Intel) to only one register read:
>>>>>
>>>>> nr = kvm_register_read(vcpu, VCPU_REGS_RAX);
>>>>>
>>>>> Whereas in a real hypercall for (say) PIO you would need the address,
>>>>> size, direction and data.
>>>>>
>>>>>
>>>>>
>>>> Well, that's probably one of the reasons pio is slower, as the cpu has
>>>> to set these up, and the kernel has to read them.
>>>>
>>>>
>>>>
>>>>> Also for PIO/MMIO you're adding this unoptimized lookup to the
>>>>> measurement:
>>>>>
>>>>> pio_dev = vcpu_find_pio_dev(vcpu, port, size, !in);
>>>>> if (pio_dev) {
>>>>> kernel_pio(pio_dev, vcpu, vcpu->arch.pio_data);
>>>>> complete_pio(vcpu); return 1;
>>>>> }
>>>>>
>>>>>
>>>>>
>>>> Since there are only one or two elements in the list, I don't see how it
>>>> could be optimized.
>>>>
>>>>
>>> speaker_ioport, pit_ioport, pic_ioport and plus nulldev ioport. nulldev
>>> is probably the last in the io_bus list.
>>>
>>> Not sure if this one matters very much. Point is you should measure the
>>> exit time only, not the pio path vs hypercall path in kvm.
>>>
>>>
>> The problem is the exit time in of itself isnt all that interesting to
>> me. What I am interested in measuring is how long it takes KVM to
>> process the request and realize that I want to execute function "X".
>> Ultimately that is what matters in terms of execution latency and is
>> thus the more interesting data. I think the exit time is possibly an
>> interesting 5th data point, but its more of a side-bar IMO. In any
>> case, I suspect that both exits will be approximately the same at the
>> VT/SVM level.
>>
>> OTOH: If there is a patch out there to improve KVMs code (say
>> specifically the PIO handling logic), that is fair-game here and we
>> should benchmark it. For instance, if you have ideas on ways to improve
>> the find_pio_dev performance, etc.... One item may be to replace the
>> kvm->lock on the bus scan with an RCU or something.... (though PIOs are
>> very frequent and the constant re-entry to an an RCU read-side CS may
>> effectively cause a perpetual grace-period and may be too prohibitive).
>> CC'ing pmck.
>>
>
> Hello, Greg!
>
> Not a problem. ;-)
>
> A grace period only needs to wait on RCU read-side critical sections that
> started before the grace period started. As soon as those pre-existing
> RCU read-side critical get done, the grace period can end, regardless
> of how many RCU read-side critical sections might have started after
> the grace period started.
>
> If you find a situation where huge numbers of RCU read-side critical
> sections do indefinitely delay a grace period, then that is a bug in
> RCU that I need to fix.
>
> Of course, if you have a single RCU read-side critical section that
> runs for a very long time, that -will- delay a grace period. As long
> as you don't do it too often, this is not a problem, though if running
> a single RCU read-side critical section for more than a few milliseconds
> is probably not a good thing. Not as bad as holding a heavily contended
> spinlock for a few milliseconds, but still not a good thing.
>
Hey Paul,
This makes sense, and it clears up a misconception I had about RCU.
So thanks for that.
Based on what Paul said, I think we can get some amount of gains in the
PIO and PIOoHC stats from converting to RCU. I will do this next.
-Greg
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 266 bytes --]
next prev parent reply other threads:[~2009-05-08 19:55 UTC|newest]
Thread overview: 115+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-05-05 13:24 [RFC PATCH 0/3] generic hypercall support Gregory Haskins
2009-05-05 13:24 ` [RFC PATCH 1/3] add " Gregory Haskins
2009-05-05 17:03 ` Hollis Blanchard
2009-05-06 13:52 ` Anthony Liguori
2009-05-06 15:16 ` Gregory Haskins
2009-05-06 16:52 ` Arnd Bergmann
2009-05-05 13:24 ` [RFC PATCH 2/3] x86: " Gregory Haskins
2009-05-05 13:24 ` [RFC PATCH 3/3] kvm: add pv_cpu_ops.hypercall support to the guest Gregory Haskins
2009-05-05 13:36 ` [RFC PATCH 0/3] generic hypercall support Avi Kivity
2009-05-05 13:40 ` Gregory Haskins
2009-05-05 14:00 ` Avi Kivity
2009-05-05 14:14 ` Gregory Haskins
2009-05-05 14:21 ` Gregory Haskins
2009-05-05 15:02 ` Avi Kivity
2009-05-05 23:17 ` Chris Wright
2009-05-06 3:51 ` Gregory Haskins
2009-05-06 7:22 ` Chris Wright
2009-05-06 13:17 ` Gregory Haskins
2009-05-06 16:07 ` Chris Wright
2009-05-07 17:03 ` Gregory Haskins
2009-05-07 18:05 ` Avi Kivity
2009-05-07 18:08 ` Gregory Haskins
2009-05-07 18:12 ` Avi Kivity
2009-05-07 18:16 ` Gregory Haskins
2009-05-07 18:24 ` Avi Kivity
2009-05-07 18:37 ` Gregory Haskins
2009-05-07 19:00 ` Avi Kivity
2009-05-07 19:05 ` Gregory Haskins
2009-05-07 19:43 ` Avi Kivity
2009-05-07 20:07 ` Gregory Haskins
2009-05-07 20:15 ` Avi Kivity
2009-05-07 20:26 ` Gregory Haskins
2009-05-08 8:35 ` Avi Kivity
2009-05-08 11:29 ` Gregory Haskins
2009-05-07 19:07 ` Chris Wright
2009-05-07 19:12 ` Gregory Haskins
2009-05-07 19:21 ` Chris Wright
2009-05-07 19:26 ` Avi Kivity
2009-05-07 19:44 ` Avi Kivity
2009-05-07 19:29 ` Gregory Haskins
2009-05-07 20:25 ` Chris Wright
2009-05-07 20:34 ` Gregory Haskins
2009-05-07 20:54 ` Arnd Bergmann
2009-05-07 21:13 ` Gregory Haskins
2009-05-07 21:57 ` Chris Wright
2009-05-07 22:11 ` Arnd Bergmann
2009-05-08 22:33 ` Benjamin Herrenschmidt
2009-05-11 13:01 ` Arnd Bergmann
2009-05-11 13:04 ` Gregory Haskins
2009-05-07 20:00 ` Arnd Bergmann
2009-05-07 20:31 ` Gregory Haskins
2009-05-07 20:42 ` Arnd Bergmann
2009-05-07 20:47 ` Arnd Bergmann
2009-05-07 20:50 ` Chris Wright
2009-05-07 23:35 ` Marcelo Tosatti
2009-05-07 23:43 ` Marcelo Tosatti
2009-05-08 3:17 ` Gregory Haskins
2009-05-08 7:55 ` Avi Kivity
[not found] ` <20090508103253.GC3011@amt.cnet>
2009-05-08 11:37 ` Avi Kivity
2009-05-08 14:35 ` Marcelo Tosatti
2009-05-08 14:45 ` Gregory Haskins
2009-05-08 15:51 ` Marcelo Tosatti
2009-05-08 19:56 ` David S. Ahern
2009-05-08 20:01 ` Gregory Haskins
2009-05-08 23:23 ` David S. Ahern
2009-05-09 8:45 ` Avi Kivity
2009-05-09 11:27 ` Gregory Haskins
2009-05-10 4:27 ` David S. Ahern
2009-05-10 5:24 ` Avi Kivity
2009-05-10 4:24 ` David S. Ahern
2009-05-08 3:13 ` Gregory Haskins
2009-05-08 7:59 ` Avi Kivity
2009-05-08 11:09 ` Gregory Haskins
[not found] ` <20090508104228.GD3011@amt.cnet>
2009-05-08 12:43 ` Gregory Haskins
2009-05-08 15:33 ` Marcelo Tosatti
2009-05-08 19:02 ` Avi Kivity
2009-05-08 16:48 ` Paul E. McKenney
2009-05-08 19:55 ` Gregory Haskins [this message]
2009-05-08 14:15 ` Gregory Haskins
2009-05-08 14:53 ` Anthony Liguori
2009-05-08 18:50 ` Avi Kivity
2009-05-08 19:02 ` Anthony Liguori
2009-05-08 19:06 ` Avi Kivity
2009-05-11 16:37 ` Jeremy Fitzhardinge
2009-05-07 12:29 ` Avi Kivity
2009-05-08 14:59 ` Anthony Liguori
2009-05-09 12:01 ` Gregory Haskins
2009-05-10 18:38 ` Anthony Liguori
2009-05-11 13:14 ` Gregory Haskins
2009-05-11 16:35 ` Hollis Blanchard
2009-05-11 17:06 ` Avi Kivity
2009-05-11 17:29 ` Gregory Haskins
2009-05-11 17:53 ` Avi Kivity
2009-05-11 17:51 ` Anthony Liguori
2009-05-11 18:02 ` Avi Kivity
2009-05-11 18:18 ` Anthony Liguori
2009-05-11 17:31 ` Anthony Liguori
2009-05-13 10:53 ` Gregory Haskins
2009-05-13 14:45 ` Gregory Haskins
2009-05-11 16:44 ` Hollis Blanchard
2009-05-11 17:54 ` Anthony Liguori
2009-05-11 19:24 ` PowerPC page faults Hollis Blanchard
2009-05-11 22:17 ` Anthony Liguori
2009-05-12 5:46 ` Liu Yu-B13201
2009-05-12 14:50 ` Hollis Blanchard
2009-05-06 13:56 ` [RFC PATCH 0/3] generic hypercall support Anthony Liguori
2009-05-06 16:03 ` Gregory Haskins
2009-05-08 8:17 ` Avi Kivity
2009-05-08 15:20 ` Gregory Haskins
2009-05-08 17:00 ` Avi Kivity
2009-05-08 18:55 ` Gregory Haskins
2009-05-08 19:05 ` Anthony Liguori
2009-05-08 19:12 ` Avi Kivity
2009-05-08 19:59 ` Gregory Haskins
2009-05-10 9:59 ` 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=4A048E1D.3060101@novell.com \
--to=ghaskins@novell.com \
--cc=anthony@codemonkey.ws \
--cc=avi@redhat.com \
--cc=chrisw@sous-sol.org \
--cc=gregory.haskins@gmail.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mtosatti@redhat.com \
--cc=paulmck@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 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.