Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1500288 > unrolled thread

[PATCH RFC V3 0/6] KVM: LAPIC: Add APIC Timer periodic/oneshot mode VMX preemption timer support

Started byWanpeng Li <kernellwp@gmail.com>
First post2016-10-13 16:10 +0200
Last post2016-10-14 14:20 +0200
Articles 4 — 2 participants

Back to article view | Back to linux.kernel


Contents

  [PATCH RFC V3 0/6] KVM: LAPIC: Add APIC Timer periodic/oneshot mode VMX preemption timer support Wanpeng Li <kernellwp@gmail.com> - 2016-10-13 16:10 +0200
    Re: [PATCH RFC V3 0/6] KVM: LAPIC: Add APIC Timer periodic/oneshot  mode VMX preemption timer support Wanpeng Li <kernellwp@gmail.com> - 2016-10-14 12:10 +0200
      Re: [PATCH RFC V3 0/6] KVM: LAPIC: Add APIC Timer periodic/oneshot  mode VMX preemption timer support Paolo Bonzini <pbonzini@redhat.com> - 2016-10-14 13:20 +0200
        Re: [PATCH RFC V3 0/6] KVM: LAPIC: Add APIC Timer periodic/oneshot  mode VMX preemption timer support Paolo Bonzini <pbonzini@redhat.com> - 2016-10-14 14:20 +0200

#1500288 — [PATCH RFC V3 0/6] KVM: LAPIC: Add APIC Timer periodic/oneshot mode VMX preemption timer support

FromWanpeng Li <kernellwp@gmail.com>
Date2016-10-13 16:10 +0200
Subject[PATCH RFC V3 0/6] KVM: LAPIC: Add APIC Timer periodic/oneshot mode VMX preemption timer support
Message-ID<srMwF-2X1-5@gated-at.bofh.it>
Most windows guests which I have on hand currently still utilize APIC Timer 
periodic/oneshot mode instead of APIC Timer tsc-deadline mode:
- windows 2008 server r2
- windows 2012 server r2
- windows 7
- windows 10 

This patchset adds the APIC Timer periodic/oneshot mode VMX preemption 
timer support.

I test the patchset by modifying kvm-unit-test/apic.flat to test 10w times 
APIC timer operations (from guest writes LVTT to timer fire and return to 
guest).

The patchset reduces ~300+ clock cycles for each APIC timer oneshot mode 
operation virtualization. However, the performance of periodic mode is 
still bad, so this version is still a RFC. Your comments to improve the 
patchset is a great appreciated.

v2 -> v3:
 * remove kvm_lapic_hv_timer_in_use() check in apic_get_tmcc, replace
   the hritmer_get_remaining() by target_expiration - now
 * rename expired_period to target_expiration
 * introduce set_target_expiration() helper
 * move the checking of minimal period to set_target_expiration()
 * cleanup kvm_get_lapic_target_deadline_tsc()

v1 -> v2:
 * remember the timeout when setting up the timer to get a correct TMCCT
 * move apic->lapic_timer.period/tscdeadline caculations to start_apic_timer()

Wanpeng Li (6):
  KVM: LAPIC: extract start_sw_period() to handle periodic/oneshot mode
  KVM: LAPIC: guarantee the timer is in tsc-deadline mode when rdmsr MSR_IA32_TSCDEADLINE
  KVM: LAPIC: introduce set_target_expiration to set target expiration time
  KVM: LAPIC: introduce kvm_get_lapic_target_expiration_tsc() to get APIC Timer target deadline tsc
  KVM: LAPIC: rename start/cancel_hv_tscdeadline to start/cancel_hv_timer
  KVM: LAPIC: Add APIC Timer periodic/oneshot mode VMX preemption timer support

 arch/x86/kvm/lapic.c | 173 +++++++++++++++++++++++++++++++--------------------
 arch/x86/kvm/lapic.h |   2 +
 arch/x86/kvm/x86.c   |   2 +-
 3 files changed, 109 insertions(+), 68 deletions(-)

-- 
1.9.1

[toc] | [next] | [standalone]


#1500820 — Re: [PATCH RFC V3 0/6] KVM: LAPIC: Add APIC Timer periodic/oneshot mode VMX preemption timer support

FromWanpeng Li <kernellwp@gmail.com>
Date2016-10-14 12:10 +0200
SubjectRe: [PATCH RFC V3 0/6] KVM: LAPIC: Add APIC Timer periodic/oneshot mode VMX preemption timer support
Message-ID<ss7B7-8l7-17@gated-at.bofh.it>
In reply to#1500288
2016-10-13 19:34 GMT+08:00 Wanpeng Li <kernellwp@gmail.com>:
[...]
>
> The patchset reduces ~300+ clock cycles for each APIC timer oneshot mode
> operation virtualization. However, the performance of periodic mode is
> still bad, so this version is still a RFC. Your comments to improve the
> patchset is a great appreciated.

I observed that the clock cycles between the start of
kvm_lapic_expired_hv_timer() (periodic mode emulated through restart a
preemption timer after the last preemption timer vmexit) to
kvm_inject_apic_timer_irqs() is almost half of the clock cycles
between the start of apic_timer_fn() (periodic mode emulated through
hrtimer) to kvm_inject_apic_timers_irqs(), so the overhead of
preemption timer is lower in this path. Maybe something is still not
correct in other places which results in performance of periodic mode
emulated by VMX preemption timer is still not good. Any help is a
great appreciated. :)

Radim, Paolo, ping :)

Regards,
Wanpeng Li

[toc] | [prev] | [next] | [standalone]


#1500834 — Re: [PATCH RFC V3 0/6] KVM: LAPIC: Add APIC Timer periodic/oneshot mode VMX preemption timer support

FromPaolo Bonzini <pbonzini@redhat.com>
Date2016-10-14 13:20 +0200
SubjectRe: [PATCH RFC V3 0/6] KVM: LAPIC: Add APIC Timer periodic/oneshot mode VMX preemption timer support
Message-ID<ss8GS-zD-5@gated-at.bofh.it>
In reply to#1500820

On 14/10/2016 12:05, Wanpeng Li wrote:
> 2016-10-13 19:34 GMT+08:00 Wanpeng Li <kernellwp@gmail.com>:
> [...]
>>
>> The patchset reduces ~300+ clock cycles for each APIC timer oneshot mode
>> operation virtualization. However, the performance of periodic mode is
>> still bad, so this version is still a RFC. Your comments to improve the
>> patchset is a great appreciated.
> 
> I observed that the clock cycles between the start of
> kvm_lapic_expired_hv_timer() (periodic mode emulated through restart a
> preemption timer after the last preemption timer vmexit) to
> kvm_inject_apic_timer_irqs() is almost half of the clock cycles
> between the start of apic_timer_fn() (periodic mode emulated through
> hrtimer) to kvm_inject_apic_timers_irqs(), so the overhead of
> preemption timer is lower in this path. Maybe something is still not
> correct in other places which results in performance of periodic mode
> emulated by VMX preemption timer is still not good. Any help is a
> great appreciated. :)
> 
> Radim, Paolo, ping :)

Just post the patches and we'll see. :)  Another useful thing to do is
to prepare testcases similar to tscdeadline_latency, but using the
periodic and oneshot modes.

Paolo

[toc] | [prev] | [next] | [standalone]


#1500879 — Re: [PATCH RFC V3 0/6] KVM: LAPIC: Add APIC Timer periodic/oneshot mode VMX preemption timer support

FromPaolo Bonzini <pbonzini@redhat.com>
Date2016-10-14 14:20 +0200
SubjectRe: [PATCH RFC V3 0/6] KVM: LAPIC: Add APIC Timer periodic/oneshot mode VMX preemption timer support
Message-ID<ss9CW-197-11@gated-at.bofh.it>
In reply to#1500834

On 14/10/2016 14:06, Wanpeng Li wrote:
>     thing to do is
>     to prepare testcases similar to tscdeadline_latency, but using the
>     periodic and oneshot modes.
> 
> 
>  I have already post a kvm-unit-test/ apic.flat patch which can test
> periodic mode latency. :)

That one runs for a very short time, it's different from
tscdeadline_latency.

Paolo

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web