2023-11-20 15:18:25

by Mihai Carabas

[permalink] [raw]
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


2024-01-25 14:47:28

by Mihai Carabas

[permalink] [raw]
Subject: Re: [PATCH v2] Enable haltpoll for arm64

Hello,

How can we move this patchset forward?

Thank you,
Mihai

La 20.11.2023 16:01, Mihai Carabas a scris:
> 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(-)
>


2024-01-25 15:17:25

by Rafael J. Wysocki

[permalink] [raw]
Subject: Re: [PATCH v2] Enable haltpoll for arm64

Hi,

On Thu, Jan 25, 2024 at 3:40 PM Mihai Carabas <mihai.carabas@oraclecom> wrote:
>
> Hello,
>
> How can we move this patchset forward?

There have been some comments and a tag has been given.

Update the series (to address the comments and add the tag where
applicable) and resend.

Thanks!