• P
    kvm: x86: avoid atomic operations on APICv vmentry · ad361091
    Paolo Bonzini 提交于
    On some benchmarks (e.g. netperf with ioeventfd disabled), APICv
    posted interrupts turn out to be slower than interrupt injection via
    KVM_REQ_EVENT.
    
    This patch optimizes a bit the IRR update, avoiding expensive atomic
    operations in the common case where PI.ON=0 at vmentry or the PIR vector
    is mostly zero.  This saves at least 20 cycles (1%) per vmexit, as
    measured by kvm-unit-tests' inl_from_qemu test (20 runs):
    
                  | enable_apicv=1  |  enable_apicv=0
                  | mean     stdev  |  mean     stdev
        ----------|-----------------|------------------
        before    | 5826     32.65  |  5765     47.09
        after     | 5809     43.42  |  5777     77.02
    
    Of course, any change in the right column is just placebo effect. :)
    The savings are bigger if interrupts are frequent.
    Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
    ad361091
vmx.c 318.6 KB