• W
    KVM: dynamic halt-polling · aca6ff29
    Wanpeng Li 提交于
    There is a downside of always-poll since poll is still happened for idle
    vCPUs which can waste cpu usage. This patchset add the ability to adjust
    halt_poll_ns dynamically, to grow halt_poll_ns when shot halt is detected,
    and to shrink halt_poll_ns when long halt is detected.
    
    There are two new kernel parameters for changing the halt_poll_ns:
    halt_poll_ns_grow and halt_poll_ns_shrink.
    
                            no-poll      always-poll    dynamic-poll
    -----------------------------------------------------------------------
    Idle (nohz) vCPU %c0     0.15%        0.3%            0.2%
    Idle (250HZ) vCPU %c0    1.1%         4.6%~14%        1.2%
    TCP_RR latency           34us         27us            26.7us
    
    "Idle (X) vCPU %c0" is the percent of time the physical cpu spent in
    c0 over 60 seconds (each vCPU is pinned to a pCPU). (nohz) means the
    guest was tickless. (250HZ) means the guest was ticking at 250HZ.
    
    The big win is with ticking operating systems. Running the linux guest
    with nohz=off (and HZ=250), we save 3.4%~12.8% CPUs/second and get close
    to no-polling overhead levels by using the dynamic-poll. The savings
    should be even higher for higher frequency ticks.
    Suggested-by: NDavid Matlack <dmatlack@google.com>
    Signed-off-by: NWanpeng Li <wanpeng.li@hotmail.com>
    [Simplify the patch. - Paolo]
    Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
    aca6ff29
kvm_main.c 82.5 KB