[PATCH v2 0/6] x86/kernel/hyper-v: xmm fast hypercall

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

 



This patch series implements xmm fast hypercall for hyper-v as guest
and kvm support as VMM.
With this patch, HVCALL_FLUSH_VIRTUAL_ADDRESS_SPACE without
gva list, HVCALL_FLUSH_VIRTUAL_ADDRESS_SPACE_EX(vcpu > 64) and
HVCALL_SEND_IPI_EX(vcpu > 64) can use xmm fast hypercall.

benchmark result:
At the moment, my test machine have only pcpu=4, ipi benchmark doesn't
make any behaviour change. So for now I measured the time of
hyperv_flush_tlb_others() by ktap with 'hardinfo -r -f text'.
the average of 5 runs are as follows.
(When large machine with pcpu > 64 is avaialble, ipi_benchmark result is
interesting. But not yet now.)

hyperv_flush_tlb_others() time by hardinfo -r -f text:

with path:       9931 ns
without patch:  11111 ns


With patch of 4bd06060762b, __send_ipi_mask() now uses fast hypercall
when possible. so in the case of vcpu=4. So I used kernel before the parch
to measure the effect of xmm fast hypercall with ipi_benchmark.
The following is the average of 100 runs.

ipi_benchmark: average of 100 runs without 4bd06060762b

with patch:
Dry-run                 0        495181
Self-IPI         11352737      21549999
Normal IPI      499400218     575433727
Broadcast IPI           0    1700692010
Broadcast lock          0    1663001374

without patch:
Dry-run                 0        607657
Self-IPI         10915950      21217644
Normal IPI      621712609     735015570
Broadcast IPI           0    2173803373
Broadcast lock          0    2150451543

Isaku Yamahata (6):
  x86/kernel/hyper-v: xmm fast hypercall as guest
  x86/hyperv: use hv_do_hypercall for __send_ipi_mask_ex()
  x86/hyperv: use hv_do_hypercall for flush_virtual_address_space_ex
  hyperv: use hv_do_hypercall instead of hv_do_fast_hypercall
  x86/kvm/hyperv: implement xmm fast hypercall
  local: hyperv: test ex hypercall

 arch/x86/hyperv/hv_apic.c           |  16 +++-
 arch/x86/hyperv/mmu.c               |  24 +++--
 arch/x86/hyperv/nested.c            |   2 +-
 arch/x86/include/asm/hyperv-tlfs.h  |   3 +
 arch/x86/include/asm/mshyperv.h     | 180 ++++++++++++++++++++++++++++++++++--
 arch/x86/kvm/hyperv.c               | 101 ++++++++++++++++----
 drivers/hv/connection.c             |   3 +-
 drivers/hv/hv.c                     |   3 +-
 drivers/pci/controller/pci-hyperv.c |   7 +-
 9 files changed, 291 insertions(+), 48 deletions(-)

-- 
2.14.1




[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux