On Tue, Oct 29, 2024 at 11:47 AM Marc Zyngier maz@kernel.org wrote:
On Tue, 29 Oct 2024 17:06:09 +0000, Raghavendra Rao Ananta rananta@google.com wrote:
On Tue, Oct 29, 2024 at 9:27 AM Marc Zyngier maz@kernel.org wrote:
On Mon, 28 Oct 2024 23:45:33 +0000, Raghavendra Rao Ananta rananta@google.com wrote:
Did you have a chance to check whether this had any negative impact on actual workloads? Since the entry/exit code is a bit of a hot spot, I'd like to make sure we're not penalising the common case (I only wrote this patch while waiting in an airport, and didn't test it at all).
I ran the kvm selftests, kvm-unit-tests and booted a linux guest to test the change and noticed no failures. Any specific test you want to try out?
My question is not about failures (I didn't expect any), but specifically about *performance*, and whether checking the flag without a static key can lead to any performance drop on the hot path.
Can you please run an exit-heavy workload (such as hackbench, for example), and report any significant delta you could measure?
Oh, I see. I ran hackbench and micro-bench from kvm-unit-tests (which also causes a lot of entry/exits), on Ampere Altra with kernel at v6.12-rc1, and see no significant difference in perf.
hackbench: ========= Ran on a guest with 64 vCPUs and backed by 8G of memory. The results are an average of 3 runs:
Task groups | Baseline | Patch | Approx. entry/exits ----------------|------------|--------- |------------------------ 100 | 0.154 | 0.164 | 150k 250 | 0.456 | 0.458 | 500k 500 | 0.851 | 0.826 | 920k (Total tasks for each row == task groups * 40)
kvm-unit-tests micro-bench ======================
The test causes ~530k entry/exits.
Baseline:
name total ns avg ns -------------------------------------------------------------------------------------------- hvc 20095360.0 306.0 mmio_read_user 110350040.0 1683.0 mmio_read_vgic 29572840.0 451.0 eoi 964080.0 14.0 ipi 126236640.0 1926.0 lpi 142848920.0 2179.0 timer_10ms 231040.0 902.0
Patch:
name total ns avg ns -------------------------------------------------------------------------------------------- hvc 20067680.0 306.0 mmio_read_user 109513800.0 1671.0 mmio_read_vgic 29190080.0 445.0 eoi 963400.0 14.0 ipi 116481640.0 1777.0 lpi 136556000.0 2083.0 timer_10ms 234120.0 914.0
Thank you. Raghavendra