All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2] Enable haltpoll for arm64
@ 2023-11-20 14:01 ` Mihai Carabas
  0 siblings, 0 replies; 46+ messages in thread
From: Mihai Carabas @ 2023-11-20 14:01 UTC (permalink / raw)
  To: linux-arm-kernel
  Cc: kvm, linux-pm, linux-kernel, catalin.marinas, will, tglx, mingo,
	bp, x86, hpa, pbonzini, wanpengli, vkuznets, rafael,
	daniel.lezcano, akpm, pmladek, peterz, dianders, npiggin,
	rick.p.edgecombe, joao.m.martins, juerg.haefliger, mic,
	mihai.carabas, arnd, ankur.a.arora

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


^ permalink raw reply	[flat|nested] 46+ messages in thread

end of thread, other threads:[~2024-02-05 19:34 UTC | newest]

Thread overview: 46+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-11-20 14:01 [PATCH v2] Enable haltpoll for arm64 Mihai Carabas
2023-11-20 14:01 ` Mihai Carabas
2023-11-20 14:01 ` [PATCH 1/7] x86: Move ARCH_HAS_CPU_RELAX to arch Mihai Carabas
2023-11-20 14:01   ` Mihai Carabas
2023-11-27 14:44   ` Petr Mladek
2023-11-27 14:44     ` Petr Mladek
2023-11-28 14:09     ` Mihai Carabas
2023-11-28 14:09       ` Mihai Carabas
2023-11-20 14:01 ` [PATCH 2/7] x86/kvm: Move haltpoll_want() to be arch defined Mihai Carabas
2023-11-20 14:01   ` Mihai Carabas
2023-11-29 20:55   ` Rafael J. Wysocki
2023-11-29 20:55     ` Rafael J. Wysocki
2023-11-20 14:01 ` [PATCH 3/7] governors/haltpoll: Drop kvm_para_available() check Mihai Carabas
2023-11-20 14:01   ` Mihai Carabas
2023-11-20 14:01 ` [PATCH 4/7] arm64: Select ARCH_HAS_CPU_RELAX Mihai Carabas
2023-11-20 14:01   ` Mihai Carabas
2023-11-20 14:01 ` [PATCH 5/7] arm64: Define TIF_POLLING_NRFLAG Mihai Carabas
2023-11-20 14:01   ` Mihai Carabas
2023-11-20 14:01 ` [PATCH 6/7] cpuidle-haltpoll: ARM64 support Mihai Carabas
2023-11-20 14:01   ` Mihai Carabas
2023-11-20 14:01 ` [PATCH 7/7] cpuidle/poll_state: replace cpu_relax with smp_cond_load_relaxed Mihai Carabas
2023-11-20 14:01   ` Mihai Carabas
2023-11-22 20:51   ` Christoph Lameter
2023-11-22 20:51     ` Christoph Lameter
2023-11-22 21:33     ` Mihai Carabas
2023-11-22 21:33       ` Mihai Carabas
2023-11-27 20:17       ` Christoph Lameter (Ampere)
2023-11-27 20:17         ` Christoph Lameter (Ampere)
2023-12-01  6:59         ` Ankur Arora
2023-12-01  6:59           ` Ankur Arora
2023-12-11 11:46   ` Will Deacon
2023-12-11 11:46     ` Will Deacon
2024-01-28 21:22     ` Mihai Carabas
2024-01-28 21:22       ` Mihai Carabas
2024-01-29 18:15       ` Will Deacon
2024-01-29 18:15         ` Will Deacon
2024-02-05 12:28         ` Mihai Carabas
2024-02-05 12:28           ` Mihai Carabas
2024-02-05 19:33           ` Ankur Arora
2024-02-05 19:33             ` Ankur Arora
2024-01-17 21:19 ` [PATCH v2] Enable haltpoll for arm64 Christoph Lameter (Ampere)
2024-01-17 21:19   ` Christoph Lameter (Ampere)
2024-01-25 14:39 ` Mihai Carabas
2024-01-25 14:39   ` Mihai Carabas
2024-01-25 15:16   ` Rafael J. Wysocki
2024-01-25 15:16     ` Rafael J. Wysocki

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.