On Wed, Mar 30, 2011 at 12:50:53PM +0200, Avi Kivity wrote:
> On 03/30/2011 12:47 PM, Gleb Natapov wrote:
> >On Wed, Mar 30, 2011 at 12:38:53PM +0200, Avi Kivity wrote:
> >> On 03/29/2011 02:08 PM, Gleb Natapov wrote:
> >> >Currently we sync registers back and forth before/after exiting
> >> >to userspace for IO, but during IO device model shouldn't need to
> >> >read/write the registers, so we can as well skip those sync points. The
> >> >only exaception is broken vmware backdor interface. The new code sync
> >> >registers content during IO only if registers are read from/written to
> >> >by userspace in the middle of the IO operation and this almost never
> >> >happens in practise.
> >>
> >> While this is a nice idea, how much does it save in practice? It
> >> does introduce more complexity.
> >>
> >
> >I haven't measured, but can try to do so. It eliminates two copies of
> >all registers on each MMIO/PIO read. I expect this to be measurable in
> >workloads that do many such reads.
> >
>
> I don't, especially if these are mmios to userspace. Perhaps it's
> better to remove the copy on kernel mmio, since it's much faster, if
> the result is simpler (there can be no KVM_SET_REGS in that
> context).
>
The patch saves copying of 256 bytes on each MMIO/PIO read. It may not
save a lot comparing to time it takes to do one MMIO to userspace, but
do 1 million of those and you saved a lot of CPU cycles. I do not think
we should abandon the optimization so easily. Unfortunately I can't run
perf on 2.6.38 kernel right now. It gives me strange errors and when it
doesn't it makes kernel OOPS.
--
Gleb.
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html