[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <1700488898-12431-1-git-send-email-mihai.carabas@oracle.com>
Date: Mon, 20 Nov 2023 16:01:31 +0200
From: Mihai Carabas <mihai.carabas@...cle.com>
To: linux-arm-kernel@...ts.infradead.org
Cc: kvm@...r.kernel.org, linux-pm@...r.kernel.org,
linux-kernel@...r.kernel.org, catalin.marinas@....com,
will@...nel.org, tglx@...utronix.de, mingo@...hat.com,
bp@...en8.de, x86@...nel.org, hpa@...or.com, pbonzini@...hat.com,
wanpengli@...cent.com, vkuznets@...hat.com, rafael@...nel.org,
daniel.lezcano@...aro.org, akpm@...ux-foundation.org,
pmladek@...e.com, peterz@...radead.org, dianders@...omium.org,
npiggin@...il.com, rick.p.edgecombe@...el.com,
joao.m.martins@...cle.com, juerg.haefliger@...onical.com,
mic@...ikod.net, mihai.carabas@...cle.com, arnd@...db.de,
ankur.a.arora@...cle.com
Subject: [PATCH v2] Enable haltpoll for arm64
This patchset enables the usage of haltpoll governer on arm64. This is
specifically interesting for KVM guests by reducing the IPC latencies.
Here are some benchmarks without/with haltpoll for a KVM guest:
a) without haltpoll:
perf bench sched pipe
# Running 'sched/pipe' benchmark:
# Executed 1000000 pipe operations between two processes
Total time: 8.138 [sec]
8.138094 usecs/op
122878 ops/sec
b) with haltpoll:
perf bench sched pipe
# Running 'sched/pipe' benchmark:
# Executed 1000000 pipe operations between two processes
Total time: 5.003 [sec]
5.003085 usecs/op
199876 ops/sec
v2 changes from v1:
- added patch 7 where we change cpu_relax with smp_cond_load_relaxed per PeterZ
(this improves by 50% at least the CPU cycles consumed in the tests above:
10,716,881,137 now vs 14,503,014,257 before)
- removed the ifdef from patch 1 per RafaelW
Joao Martins (6):
x86: Move ARCH_HAS_CPU_RELAX to arch
x86/kvm: Move haltpoll_want() to be arch defined
governors/haltpoll: Drop kvm_para_available() check
arm64: Select ARCH_HAS_CPU_RELAX
arm64: Define TIF_POLLING_NRFLAG
cpuidle-haltpoll: ARM64 support
Mihai Carabas (1):
cpuidle/poll_state: replace cpu_relax with smp_cond_load_relaxed
arch/Kconfig | 3 +++
arch/arm64/Kconfig | 1 +
arch/arm64/include/asm/thread_info.h | 6 ++++++
arch/x86/Kconfig | 1 +
arch/x86/include/asm/cpuidle_haltpoll.h | 1 +
arch/x86/kernel/kvm.c | 10 ++++++++++
drivers/cpuidle/Kconfig | 4 ++--
drivers/cpuidle/cpuidle-haltpoll.c | 8 ++------
drivers/cpuidle/governors/haltpoll.c | 5 +----
drivers/cpuidle/poll_state.c | 14 +++++++++-----
include/linux/cpuidle_haltpoll.h | 5 +++++
11 files changed, 41 insertions(+), 17 deletions(-)
--
1.8.3.1
Powered by blists - more mailing lists