On Mon, 20 May 2019 at 16:18, Wanpeng Li <kernellwp@xxxxxxxxx> wrote: > > Advance lapic timer tries to hidden the hypervisor overhead between the > host emulated timer fires and the guest awares the timer is fired. However, > it just hidden the time between apic_timer_fn/handle_preemption_timer -> > wait_lapic_expire, instead of the real position of vmentry which is > mentioned in the orignial commit d0659d946be0 ("KVM: x86: add option to > advance tscdeadline hrtimer expiration"). There is 700+ cpu cycles between > the end of wait_lapic_expire and before world switch on my haswell desktop. > > This patchset tries to narrow the last gap(wait_lapic_expire -> world switch), > it takes the real overhead time between apic_timer_fn/handle_preemption_timer > and before world switch into consideration when adaptively tuning timer > advancement. The patchset can reduce 40% latency (~1600+ cycles to ~1000+ > cycles on a haswell desktop) for kvm-unit-tests/tscdeadline_latency when > testing busy waits. Testing on a Skylake Server, w/ nohz=off, idle=poll in the guest. Reduces average cyclictest latency from 3us to 2us. Regards, Wanpeng Li