[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v2 0/4] Expose HW APIC virtualization support to HVM guests



Boris Ostrovsky wrote on 2014-03-11:
> 
> Version 2:
> * Added ability to specify hypervisor CPUID leaves in config file (this 
> requires
>   new sysctl)
> * Use 2 bits to indicate what is supported --- one for APIC memory access and
> the
>   other for x2APIC. Still not sure whether virtual interrupt delivery should 
> be
>   exposed as well.
> 
> 
> HVM guests running on HW that supports HW APIC virtualization features
> (APIC-register virtualization, virtual interrupt delivery, etc) may
> want to use APIC instead of hvm_pirqs. Since we are not guaranteed to
> have these features on VMX (for example, there is a boot option to
> turn it off) and there is no such support on SVM we need to make the
> guest aware that its APIC accesses may not be so bad.
> 
> CPUID seems to be a good way to provide this info to the guest.
> 
> Having a guest switch to APIC shows fairly good impact on number of
> VMEXITs. For example, with a pass-through NIC, netperf sees almost
> half as many. Here are results for 'xentrace -e 0x00083fff -c 2 -D -T 2'
> 
> (The guest here essentially turned off XENFEAT_hvm_pirqs but we may
> want to use APIC for MSI interrupts only and leave pirqs for gsi).
> 
> 
> [root@ovs105 virt]#  cat orig  |xentrace_format
> ~/xen/tools/xentrace/formats | awk  '{print $5}' | sort  | uniq -c
>      94 cpu_change
>   13944 HLT
>   26341 INJ_VIRQ
>   12054 INTR
>   30784 INTR_WINDOW
>   10126 TRAP
>  124783 VMENTRY
>  124782 VMEXIT
>   59217 VMMCALL
>      35 wrap_buffer
> 
> [root@ovs105 virt]#  cat apicv  |xentrace_format
> ~/xen/tools/xentrace/formats | awk  '{print $5}' | sort  | uniq -c
>      49 cpu_change 16157 HLT 31 INJ_VIRQ 10652 INTR 38 INTR_WINDOW 10 NPF
>   10286 TRAP
>   71269 VMENTRY
>   71269 VMEXIT
>   34129 VMMCALL
>      15 wrap_buffer
> The difference is even larger when the guest is busy.
> 
> These results are in line with what has been reported for KVM. For
> example
> http://events.linuxfoundation.org/sites/events/files/cojp13_natapov.pdf
> http://www.linuxplumbersconf.org/2012/wp-content/uploads/2012/09/2012-lp
> c-virt-intel-vt-feat-nakajima.pdf
> 
> I am also not sure whether (cpu_has_vmx_apic_reg_virt &
> cpu_has_vmx_virtualize_x2apic_mode) is sufficient to declare full HW
> APIC support to a guest. The tests show ~95K VMEXITs when virtual

The former is enough. Hardware has APICv must have the virtualize x2apic too.

> interrupt delivery and posted interrupts are turned off so there
> appears to still be some benefit. I suppose we can use another CPUID
> bit for these two (although I am not particularly eager to do this).

The three features are coexisting. I think you can use one bit to show them.

> 
> Boris Ostrovsky (4):
>   xen/libxc: Allow changes to hypervisor CPUID leaf from config file
>   x86/hvm: Revert 80ecb40362365ba77e68fc609de8bd3b7208ae19
>   x86/hvm: Add HVM-specific hypervisor CPUID leaf
>   x86/hvm: Indicate avaliability of HW support of APIC virtualization
>     to HVM guests
>  tools/libxc/xc_cpuid_x86.c          |   23 ++++++++++++++++++++++-
>  tools/libxc/xc_misc.c               |   18 ++++++++++++++++++
>  tools/libxc/xenctrl.h               |    2 ++
>  xen/arch/x86/domain.c               |   19 ++++++++++++++++---
>  xen/arch/x86/hvm/hvm.c              |   16 ++++++++++++++++
>  xen/arch/x86/hvm/vmx/vmx.c          |   12 ++++++++++++
>  xen/arch/x86/sysctl.c               |   17 +++++++++++++++++
>  xen/arch/x86/traps.c                |   18 +++++++++---------
>  xen/include/asm-x86/domain.h        |    7 +++++++
>  xen/include/asm-x86/hvm/hvm.h       |    7 +++++++
>  xen/include/public/arch-x86/cpuid.h |   10 ++++++++++
>  xen/include/public/sysctl.h         |   18 ++++++++++++++++++
>  12 files changed, 154 insertions(+), 13 deletions(-)


Best regards,
Yang



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.