From: Pavel Machek <pavel@ucw.cz>
To: Zachary Amsden <zach@vmware.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>, 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>, Avi Kivity <avi@qumranet.com>,
Jeremy Fitzhardinge <jeremy@goop.org>
Subject: Re: [PATCH] Add I/O hypercalls for i386 paravirt
Date: Fri, 24 Aug 2007 12:20:25 +0000 [thread overview]
Message-ID: <20070824122025.GA3886@ucw.cz> (raw)
In-Reply-To: <46CBD1A5.8070702@vmware.com>
Hi!
> >>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.
> >>
> >>
> >
> >What about cost on hardware?
> >
>
> On modern hardware, port I/O is about the most expensive
> thing you can do. The extra function call cost is
> totally masked by the stall. We have measured with port
> I/O converted like this on real hardware, and have seen
> zero measurable impact on macro-benchmarks.
> Micro-benchmarks that generate massively repeated port
> I/O might show some effect on ancient hardware, but I
> can't even imagine a workload which does such a thing,
> other than a polling port I/O loop perhaps - which would
> not be performance critical in any case I can reasonably
> imagine.
SCSI controller in ISA slot? IDE without DMA enabled?
Yes, those are performance-critical. The second case seems common with
compactflash cards.
Pavel
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
next prev parent reply other threads:[~2007-08-24 12:20 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
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 [this message]
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=20070824122025.GA3886@ucw.cz \
--to=pavel@ucw.cz \
--cc=akpm@osdl.org \
--cc=avi@qumranet.com \
--cc=chrisw@sous-sol.org \
--cc=hpa@zytor.com \
--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.