• Wanpeng Li's avatar
    KVM: LAPIC: Tune lapic_timer_advance_ns automatically · 3b8a5df6
    Wanpeng Li authored
    In cloud environment, lapic_timer_advance_ns is needed to be tuned for every CPU
    generations, and every host kernel versions(the kvm-unit-tests/tscdeadline_latency.flat
    is 5700 cycles for upstream kernel and 9600 cycles for our 3.10 product kernel,
    both preemption_timer=N, Skylake server).
    
    This patch adds the capability to automatically tune lapic_timer_advance_ns
    step by step, the initial value is 1000ns as 'commit d0659d94 ("KVM: x86:
    add option to advance tscdeadline hrtimer expiration")' recommended, it will be
    reduced when it is too early, and increased when it is too late. The guest_tsc
    and tsc_deadline are hard to equal, so we assume we are done when the delta
    is within a small scope e.g. 100 cycles. This patch reduces latency
    (kvm-unit-tests/tscdeadline_latency, busy waits, preemption_timer enabled)
    from ~2600 cyles to ~1200 cyles on our Skylake server.
    
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Radim Krčmář <rkrcmar@redhat.com>
    Cc: Liran Alon <liran.alon@oracle.com>
    Signed-off-by: default avatarWanpeng Li <wanpengli@tencent.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    3b8a5df6
lapic.c 68.2 KB