• Zhai, Edwin's avatar
    KVM: VMX: Add support for Pause-Loop Exiting · 4b8d54f9
    Zhai, Edwin authored
    New NHM processors will support Pause-Loop Exiting by adding 2 VM-execution
    control fields:
    PLE_Gap    - upper bound on the amount of time between two successive
                 executions of PAUSE in a loop.
    PLE_Window - upper bound on the amount of time a guest is allowed to execute in
                 a PAUSE loop
    
    If the time, between this execution of PAUSE and previous one, exceeds the
    PLE_Gap, processor consider this PAUSE belongs to a new loop.
    Otherwise, processor determins the the total execution time of this loop(since
    1st PAUSE in this loop), and triggers a VM exit if total time exceeds the
    PLE_Window.
    * Refer SDM volume 3b section 21.6.13 & 22.1.3.
    
    Pause-Loop Exiting can be used to detect Lock-Holder Preemption, where one VP
    is sched-out after hold a spinlock, then other VPs for same lock are sched-in
    to waste the CPU time.
    
    Our tests indicate that most spinlocks are held for less than 212 cycles.
    Performance tests show that with 2X LP over-commitment we can get +2% perf
    improvement for kernel build(Even more perf gain with more LPs).
    Signed-off-by: default avatarZhai Edwin <edwin.zhai@intel.com>
    Signed-off-by: default avatarMarcelo Tosatti <mtosatti@redhat.com>
    4b8d54f9
vmx.c 105 KB