From: Zachary Amsden <zach@vmware.com>
To: Avi Kivity <avi@qumranet.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: Tue, 21 Aug 2007 22:40:40 -0700 [thread overview]
Message-ID: <46CBCC58.3010700@vmware.com> (raw)
In-Reply-To: <46CBCADF.2070400@qumranet.com>
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.
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.
Zach
next prev parent reply other threads:[~2007-08-22 5:40 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 [this message]
2007-08-22 8:37 ` Avi Kivity
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=46CBCC58.3010700@vmware.com \
--to=zach@vmware.com \
--cc=akpm@osdl.org \
--cc=avi@qumranet.com \
--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 \
/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.