|
[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
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |