• Wanpeng Li's avatar
    KVM: VMX: Optimize tscdeadline timer latency · c5ce8235
    Wanpeng Li authored
    'Commit d0659d94 ("KVM: x86: add option to advance tscdeadline
    hrtimer expiration")' advances the tscdeadline (the timer is emulated
    by hrtimer) expiration in order that the latency which is incurred
    by hypervisor (apic_timer_fn -> vmentry) can be avoided. This patch
    adds the advance tscdeadline expiration support to which the tscdeadline
    timer is emulated by VMX preemption timer to reduce the hypervisor
    lantency (handle_preemption_timer -> vmentry). The guest can also
    set an expiration that is very small (for example in Linux if an
    hrtimer feeds a expiration in the past); in that case we set delta_tsc
    to 0, leading to an immediately vmexit when delta_tsc is not bigger than
    advance ns.
    
    This patch can reduce ~63% latency (~4450 cycles to ~1660 cycles on
    a haswell desktop) for kvm-unit-tests/tscdeadline_latency when testing
    busy waits.
    
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Radim Krčmář <rkrcmar@redhat.com>
    Signed-off-by: default avatarWanpeng Li <wanpengli@tencent.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    c5ce8235
vmx.c 369 KB