• Wanpeng Li's avatar
    KVM: Boost vCPU candidate in user mode which is delivering interrupt · 52acd22f
    Wanpeng Li authored
    Both lock holder vCPU and IPI receiver that has halted are condidate for
    boost. However, the PLE handler was originally designed to deal with the
    lock holder preemption problem. The Intel PLE occurs when the spinlock
    waiter is in kernel mode. This assumption doesn't hold for IPI receiver,
    they can be in either kernel or user mode. the vCPU candidate in user mode
    will not be boosted even if they should respond to IPIs. Some benchmarks
    like pbzip2, swaptions etc do the TLB shootdown in kernel mode and most
    of the time they are running in user mode. It can lead to a large number
    of continuous PLE events because the IPI sender causes PLE events
    repeatedly until the receiver is scheduled while the receiver is not
    candidate for a boost.
    
    This patch boosts the vCPU candidiate in user mode which is delivery
    interrupt. We can observe the speed of pbzip2 improves 10% in 96 vCPUs
    VM in over-subscribe scenario (The host machine is 2 socket, 48 cores,
    96 HTs Intel CLX box). There is no performance regression for other
    benchmarks like Unixbench spawn (most of the time contend read/write
    lock in kernel mode), ebizzy (most of the time contend read/write sem
    and TLB shoodtdown in kernel mode).
    Signed-off-by: default avatarWanpeng Li <wanpengli@tencent.com>
    Message-Id: <1618542490-14756-1-git-send-email-wanpengli@tencent.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    52acd22f
x86.c 308 KB