KVM: PPC: Book3S HV nestedv2: Cancel pending DEC exception
authorVaibhav Jain <vaibhav@linux.ibm.com>
Mon, 15 Apr 2024 03:57:29 +0000 (09:27 +0530)
committerMichael Ellerman <mpe@ellerman.id.au>
Tue, 7 May 2024 15:27:59 +0000 (01:27 +1000)
commit7be6ce7043b4cf293c8826a48fd9f56931cef2cf
tree4a5a883781684d2f818956a9ca5ceec2f309c751
parent39cd87c4eb2b893354f3b850f916353f2658ae6f
KVM: PPC: Book3S HV nestedv2: Cancel pending DEC exception

This reverts commit 180c6b072bf3 ("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 180c6b072bf3 ("KVM: PPC: Book3S HV nestedv2: Do not cancel pending decrementer exception")
[2] https://github.com/kdlucas/byte-unixbench/

Fixes: 180c6b072bf3 ("KVM: PPC: Book3S HV nestedv2: Do not cancel pending decrementer exception")
Signed-off-by: Vaibhav Jain <vaibhav@linux.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://msgid.link/20240415035731.103097-1-vaibhav@linux.ibm.com
arch/powerpc/kvm/book3s_hv.c