KVM: X86: Reduce the overhead when lapic_timer_advance is disabled
authorWanpeng Li <kernellwp@gmail.com>
Fri, 1 Dec 2017 08:15:10 +0000 (00:15 -0800)
committerPaolo Bonzini <pbonzini@redhat.com>
Thu, 14 Dec 2017 08:26:48 +0000 (09:26 +0100)
commit9c48d517ce6da398b8cff0603b75b366759023c4
treef6f20df33a0e12b3ce2275f4a18cde639472350c
parent74c55931c71352317ae0f5736ee9e4ca07ba4238
KVM: X86: Reduce the overhead when lapic_timer_advance is disabled

When I run ebizzy in a 32 vCPUs guest on a 32 pCPUs Xeon box, I can observe
~8000 kvm_wait_lapic_expire CurAvg/s through kvm_stat tool even if the advance
tscdeadline hrtimer expiration is disabled. Each call to wait_lapic_expire()
will consume ~70 cycles when a timer fires since apic_timer_expire() will
set expired_tscdeadline and then wait_lapic_expire() will do some caculation
before bailing out. So total ~175us per second is lost on this 3.2Ghz machine.
This patch reduces the overhead by skipping the function wait_lapic_expire()
when lapic_timer_advance is disabled.

Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Radim Krčmář <rkrcmar@redhat.com>
Signed-off-by: Wanpeng Li <wanpeng.li@hotmail.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/kvm/x86.c