[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20251118080656.2012805-1-maobibo@loongson.cn>
Date: Tue, 18 Nov 2025 16:06:53 +0800
From: Bibo Mao <maobibo@...ngson.cn>
To: Paolo Bonzini <pbonzini@...hat.com>,
Huacai Chen <chenhuacai@...nel.org>
Cc: kvm@...r.kernel.org,
loongarch@...ts.linux.dev,
linux-kernel@...r.kernel.org
Subject: [PATCH 0/3] LoongArch: KVM: Add paravirt preempt hint support
vCPU preempt hint is useful with sched and lock on some platforms, here
new feature KVM_FEATURE_PREEMPT_HINT is added and VMM can selectively
enable it.
Test case kcbench is used to compile Linux kernel code, the test result
shows that it is useful on 3D6000 Dual-way machine with 64 cores and 128
hyperthreads, however no improvemet on 3C5000 Dual-way machine with 32
cores. With perf top command when running test case, the main difference
between over-commited VM and host is osq_lock(), it can avoid
unnecessary busy-loop waiting and enter sleep state quickly if lock-hold
vCPU is preempted.
Here is test result with kcbench, time unit is second to compile kernel
with defconfig, performance is better with smaller value.
3D6000 Dual-way 64 Core 128 Threads
One VM with 128 vCPUs, no overcommit, NUMA
Orginal With-patch Improvement
VM 91.72 92.4 < -1%
Host 89.7 89.75 < -0.1%
Two VMs overcommit with 128 vCPUs, UMA
Orginal With-patch Improvement
VM1 306.9 197.5 36%
VM2 303.7 197.8 35%
Host 89.7 89.75 < -0.1%
Two VMs overcommit with 128 vCPUs, NUMA
Orginal With-patch Improvement
VM1 317.1 159 50%
VM2 317.5 158 50%
Host 89.7 89.75 < -0.1%
3C5000 Dual-way 32 Core
One VM with 32 vCPUs, NUMA
Orginal With-patch Improvement
VM 208 207 < 0.5%
Host 184 185 < -0.5%
Two VMs overcommit with 32 vCPUs, UMA
Orginal With-patch Improvement
VM1 439 444 -1%
VM2 437 438 < -0.2%
Host 184 185 < -0.5%
Two VMs overcommit with 32 vCPUs, NUMA
Orginal With-patch Improvement
VM1 422 425 < -1%
VM2 418 415 < -1%
Host 184 185 < -0.5%
Bibo Mao (3):
LoongArch: KVM: Add preempt hint feature in hypervisor side
LoongArch: Add paravirt support with vcpu_is_preempted()
LoongArch: Add paravirt preempt hint print prompt
arch/loongarch/include/asm/kvm_host.h | 2 +
arch/loongarch/include/asm/kvm_para.h | 5 +-
arch/loongarch/include/asm/smp.h | 1 +
arch/loongarch/include/asm/spinlock.h | 5 ++
arch/loongarch/include/uapi/asm/kvm.h | 1 +
arch/loongarch/include/uapi/asm/kvm_para.h | 1 +
arch/loongarch/kernel/paravirt.c | 24 +++++++++-
arch/loongarch/kernel/smp.c | 6 +++
arch/loongarch/kvm/vcpu.c | 54 +++++++++++++++++++++-
arch/loongarch/kvm/vm.c | 5 +-
10 files changed, 100 insertions(+), 4 deletions(-)
base-commit: 6a23ae0a96a600d1d12557add110e0bb6e32730c
--
2.39.3
Powered by blists - more mailing lists