From: Avi Kivity <avi@qumranet.com>
To: Zachary Amsden <zach@vmware.com>
Cc: Andrew Morton <akpm@osdl.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Virtualization Mailing List <virtualization@lists.osdl.org>,
Rusty Russell <rusty@rustcorp.com.au>,
Chris Wright <chrisw@sous-sol.org>,
Jeremy Fitzhardinge <jeremy@goop.org>
Subject: Re: [PATCH] Add I/O hypercalls for i386 paravirt
Date: Wed, 22 Aug 2007 11:37:49 +0300 [thread overview]
Message-ID: <46CBF5DD.6040300@qumranet.com> (raw)
In-Reply-To: <46CBCC58.3010700@vmware.com>
Zachary Amsden wrote:
> Avi Kivity wrote:
>> Zachary Amsden wrote:
>>
>>> In general, I/O in a virtual guest is subject to performance
>>> problems. The I/O can not be completed physically, but must be
>>> virtualized. This means trapping and decoding port I/O instructions
>>> from the guest OS. Not only is the trap for a #GP heavyweight, both
>>> in the processor and the hypervisor (which usually has a complex #GP
>>> path), but this forces the hypervisor to decode the individual
>>> instruction which has faulted. Worse, even with hardware assist such
>>> as VT, the exit reason alone is not sufficient to determine the true
>>> nature of the faulting instruction, requiring a complex and costly
>>> instruction decode and simulation.
>>>
>>> This patch provides hypercalls for the i386 port I/O instructions,
>>> which vastly helps guests which use native-style drivers. For certain
>>> VMI workloads, this provides a performance boost of up to 30%. We
>>> expect KVM and lguest to be able to achieve similar gains on I/O
>>> intensive workloads.
>>>
>>>
>>
>>
>> Won't these workloads be better off using paravirtualized drivers?
>> i.e., do the native drivers with paravirt I/O instructions get anywhere
>> near the performance of paravirt drivers?
>>
>
> Yes, in general, this is true (better off with paravirt drivers).
> However, we have "paravirt" drivers which run in both
> fully-paravirtualized and fully traditionally virtualized
> environments. As a result, they use native port I/O operations to
> interact with virtual hardware.
Suffering from terminology overdose here: "fully traditionally
virtualized, fully-paravirtuallized, para-fullyvirtualized".
Since this is only for newer kernels, won't updating the driver to use a
hypercall be more efficient? Or is this for existing out-of-tree drivers?
>
> Since not all hypervisors have paravirtualized driver infrastructures
> and guest O/S support yet, these hypercalls can be advantages to a
> wide range of scenarios. Using I/O hypercalls as such gives exactly
> the same performance as paravirt drivers for us, by eliminating the
> costly decode path, and the simplicity of using the same driver code
> makes this a huge win in code complexity.
Ah, seems the answer to the last question is yes.
--
error compiling committee.c: too many arguments to function
next prev parent reply other threads:[~2007-08-22 8:37 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-08-22 5:23 [PATCH] Add I/O hypercalls for i386 paravirt Zachary Amsden
2007-08-22 5:23 ` Zachary Amsden
2007-08-22 5:34 ` Avi Kivity
2007-08-22 5:40 ` Zachary Amsden
2007-08-22 8:37 ` Avi Kivity [this message]
2007-08-22 16:16 ` Zachary Amsden
2007-08-22 6:25 ` Rusty Russell
2007-08-22 10:35 ` Andi Kleen
2007-08-22 9:51 ` Avi Kivity
2007-08-22 11:08 ` Andi Kleen
2007-08-22 10:23 ` Avi Kivity
2007-08-22 11:23 ` Andi Kleen
2007-08-22 12:09 ` Avi Kivity
2007-08-22 13:15 ` Andi Kleen
2007-08-22 12:32 ` Avi Kivity
2007-08-22 16:11 ` Jeff Garzik
2007-08-27 17:54 ` Benjamin Herrenschmidt
2007-08-28 6:51 ` Zachary Amsden
2007-08-28 11:18 ` Benjamin Herrenschmidt
2007-08-22 6:00 ` H. Peter Anvin
2007-08-22 6:03 ` Zachary Amsden
2007-08-24 12:20 ` Pavel Machek
2007-08-22 10:22 ` Andi Kleen
2007-08-22 16:48 ` Zachary Amsden
2007-08-22 17:59 ` Andi Kleen
2007-08-22 17:07 ` Zachary Amsden
2007-08-22 19:46 ` Andi Kleen
2007-08-22 20:43 ` Zachary Amsden
2007-08-22 22:04 ` Andi Kleen
2007-08-22 21:25 ` Alan Cox
2007-08-22 21:25 ` Alan Cox
2007-08-22 21:41 ` Zachary Amsden
2007-08-23 5:34 ` Rusty Russell
2007-08-22 21:45 ` Zachary Amsden
2007-08-22 17:34 ` Alan Cox
2007-08-22 17:34 ` Alan Cox
2007-08-22 21:54 ` Jeremy Fitzhardinge
2007-08-22 22:15 ` James Courtier-Dutton
2007-08-22 22:15 ` James Courtier-Dutton
2007-08-22 22:20 ` Chris Wright
2007-08-22 22:29 ` James Courtier-Dutton
2007-08-22 22:29 ` James Courtier-Dutton
2007-08-22 22:34 ` Chris Wright
2007-08-22 23:14 ` Jeremy Fitzhardinge
2007-08-23 0:47 ` Andi Kleen
2007-08-23 0:38 ` Jeremy Fitzhardinge
2007-08-23 2:34 ` Andi Kleen
2007-08-27 17:54 ` Benjamin Herrenschmidt
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=46CBF5DD.6040300@qumranet.com \
--to=avi@qumranet.com \
--cc=akpm@osdl.org \
--cc=chrisw@sous-sol.org \
--cc=jeremy@goop.org \
--cc=linux-kernel@vger.kernel.org \
--cc=rusty@rustcorp.com.au \
--cc=virtualization@lists.osdl.org \
--cc=zach@vmware.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.