Re: Paravirt KVM capabilities

Avi Kivity
2007-01-10T11:03:09Z

Ingo Molnar wrote:
> * Avi Kivity <avi-atKUWr5tajBWk0Htik3J/w@public.gmane.org> wrote:
>
>
>> If you have a CONFIG_PARAVIRT guest, I believe it will always be
>> faster to run it without hardware assisted virtualization:
>>
>> - you cannot eliminate vmexits due to host interrupts
>> - a hypercall will (probably) keep being more expensive than a syscall;
>> it simply has a lot more work to do
>> - cr3 switches for CONFIG_PARAVIRT syscalls (which are necessary on
>> x86_64) will probably become very cheap with tagged tlbs
>>
>
> but irq overhead is nothing in importance compared to basic syscall
> overhead. KVM/HVM already runs guest kernel syscalls at native speed.
> KVM/LL (or Xen) has to switch cr3s to enter guest kernel context, and
> has to switch it back to get back to guest user context. It might be
> pretty fast with tagged TLBs, but not zero-cost.
>

For i386 Xen does not switch cr3 IIRC. Perhaps even not for x86_64 if
it can use the segment limits which AMD re-added (I think it does?)

I think for i386 Xen does not go through the hypervisor at all: it hacks
int 0x80 to trap directly to ring 1. So there's still the overhead of
using int rather than sysenter, but not much more. I don't know how the
(many syscalls) x (smaller overhead) vs (fewer interrupts) x (greater
overhead) stack up.

--
error compiling committee.c: too many arguments to function