Re: [RFT] mmu optimizations branch

Ingo Molnar
2007-01-03T10:02:35Z

* Avi Kivity <avi-atKUWr5tajBWk0Htik3J/w@public.gmane.org> wrote:

> >actually, the VM entry+exit cost on this CPU is around 3-4
> >microseconds, so it's still 2 VM exits per context switch.
> >
> >I debugged this a bit, and what happens is that when Linux does a
> >task-switch it does a cr3 load /and/ a write (look at __flush_tlb())
> >- and both are causing a vm exit!
> >
> >I have started paravirtualizing the Linux kernel for KVM. I have
> >eliminated the cr3 load from the Linux kernel via paravirtualization
> >and that way lat_ctx shows a ~5-6 usecs context-switch cost. That's
> >pretty good i think, compared to the 2-3 usecs of native. I'll send
> >patches for this tomorrow.
>
> Does this really call for parvirtualization? Caching the old cr3 value
> will work for native as well.

it's already cached (and my changes use that cached value), but it (used
to be) faster/smaller to just move from cr3 than to dereference down to
the cached pgd pointer, because we used to inline those instructions
heavily. But i agree that in the current kernel it's probably worth
doing this for native too - i'll cook up a patch for upstream.

Ingo