• Vaibhav Jain's avatar
    KVM: PPC: Book3S HV nestedv2: Cancel pending DEC exception · 7be6ce70
    Vaibhav Jain authored
    This reverts commit 180c6b07 ("KVM: PPC: Book3S HV nestedv2: Do not
    cancel pending decrementer exception") [1] which prevented canceling a
    pending HDEC exception for nestedv2 KVM guests. It was done to avoid
    overhead of a H_GUEST_GET_STATE hcall to read the 'DEC expiry TB' register
    which was higher compared to handling extra decrementer exceptions.
    
    However recent benchmarks indicate that overhead of not handling 'DECR'
    expiry for Nested KVM Guest(L2) is higher and results in much larger exits
    to Pseries Host(L1) as indicated by the Unixbench-arithoh bench[2]
    
    Metric	    	      | Current upstream    | Revert [1]  | Difference %
    ========================================================================
    arithoh-count (10)    |	3244831634	    | 3403089673  | +04.88%
    kvm_hv:kvm_guest_exit |	513558		    | 152441	  | -70.32%
    probe:kvmppc_gsb_recv |	28060		    | 28110	  | +00.18%
    
    N=1
    
    As indicated by the data above that reverting [1] results in substantial
    reduction in number of L2->L1 exits with only slight increase in number of
    H_GUEST_GET_STATE hcalls to read the value of 'DEC expiry TB'. This results
    in an overall ~4% improvement of arithoh[2] throughput.
    
    [1] commit 180c6b07 ("KVM: PPC: Book3S HV nestedv2: Do not cancel pending decrementer exception")
    [2] https://github.com/kdlucas/byte-unixbench/
    
    Fixes: 180c6b07 ("KVM: PPC: Book3S HV nestedv2: Do not cancel pending decrementer exception")
    Signed-off-by: default avatarVaibhav Jain <vaibhav@linux.ibm.com>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    Link: https://msgid.link/20240415035731.103097-1-vaibhav@linux.ibm.com
    7be6ce70
book3s_hv.c 168 KB