arch/arm64/Kconfig | 2 +- arch/arm64/Makefile | 2 +- arch/arm64/include/asm/assembler.h | 2 +- arch/arm64/include/asm/current.h | 6 +- arch/arm64/include/asm/ftrace.h | 4 +- arch/arm64/include/asm/insn.h | 1 + arch/arm64/include/asm/kvm_asm.h | 26 +++++ arch/arm64/include/asm/memory.h | 10 +- arch/arm64/include/asm/percpu.h | 10 +- arch/arm64/include/asm/perf_event.h | 2 +- arch/arm64/include/asm/sdei.h | 2 + arch/arm64/include/asm/stacktrace.h | 9 +- arch/arm64/include/asm/stacktrace/nvhe.h | 3 +- arch/arm64/include/uapi/asm/ptrace.h | 1 + arch/arm64/kernel/asm-offsets.c | 2 + arch/arm64/kernel/entry-common.c | 51 +++++++-- arch/arm64/kernel/entry.S | 108 +++++++++--------- arch/arm64/kernel/head.S | 8 +- arch/arm64/kernel/hyp-stub.S | 7 +- arch/arm64/kernel/process.c | 21 +--- arch/arm64/kernel/sdei.c | 6 +- arch/arm64/kernel/sleep.S | 3 +- arch/arm64/kernel/smp.c | 19 ++- arch/arm64/kernel/stacktrace.c | 2 +- arch/arm64/kernel/sys_compat.c | 7 -- arch/arm64/kernel/traps.c | 14 +-- arch/arm64/kvm/hyp/entry.S | 15 ++- arch/arm64/kvm/hyp/include/hyp/sysreg-sr.h | 2 - arch/arm64/kvm/hyp/nvhe/host.S | 2 +- arch/arm64/kvm/hyp/nvhe/stacktrace.c | 4 +- arch/arm64/kvm/stacktrace.c | 4 +- arch/arm64/mm/proc.S | 16 ++- arch/arm64/net/bpf_jit.h | 2 + arch/arm64/net/bpf_jit_comp.c | 4 +- scripts/gdb/linux/cpus.py | 2 +- .../selftests/bpf/progs/verifier_jit_inline.c | 2 +- 36 files changed, 230 insertions(+), 151 deletions(-)
Hi folks,
This is version two of the kernel stack juggling patches I previously
posted here:
https://lore.kernel.org/r/20260907164247.17223-1-will@kernel.org
Changes since v1 include:
* Fixed suspend/resume paths to handle the stack pointers properly
* Fixed restoration of ptrauth keys on resume
* Added tags
Cheers,
Will
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Ard Biesheuvel <ardb@kernel.org>
Cc: Ada Couprie Diaz <ada.coupriediaz@arm.com>
Cc: David Hildenbrand <david@kernel.org>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Vladimir Murzin <vladimir.murzin@arm.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Mostafa Saleh <smostafa@google.com>
Cc: Lorenzo Stoakes <ljs@kernel.org>
Cc: Oliver Upton <oupton@kernel.org>
Cc: Linus Walleij <linusw@kernel.org>
Cc: Marc Zyngier <maz@kernel.org>
--->8
Mostafa Saleh (1):
KVM: arm64: Protect TPIDRRO_EL0 across guest entry/exit
Will Deacon (20):
arm64: entry: Defer setting of TPIDRRO_EL0 until exit to userspace
arm64: entry: Only check for stack overflow on exceptions from EL1
arm64: stackprotector: Temporarily disable per-task stackprotector
arm64: bpf: Add support for generating reads of TPIDRRO_EL0
arm64: Store 'current' in TPIDRRO_EL0 instead of SP_EL0
selftests/bpf: arm64: Use TPIDRRO_EL0 instead of SP_EL0 for 'current'
scripts/gdb: arm64: Use TPIDRRO_EL0 instead of SP_EL0 for 'current'
arm64: stackprotector: Re-enable per-task stackprotector
arm64: percpu: Specialise set_my_cpu_offset() for the primary CPU
arm64: percpu: Annotate __kern_my_cpu_offset() as '__always_inline'
KVM: arm64: Preserve handler/thread bit of EL1 mode in
__finalise_el2()
arm64: sdei: Guard most of asm/sdei.h with CONFIG_ARM_SDE_INTERFACE
arm64: sdei: Support SDEI events from kernel handler and thread modes
arm64: entry: Point SP_EL0 at the overflow stack
arm64: entry: Implement EL1t exception handlers for overflow stack
arm64: entry: Use SPSel to switch to overflow stack
arm64: entry: Split up kernel_ventry macro into separate helper macros
arm64: entry: The great stack switcheroo
arm64: tracing: Advertise a mode of EL1t in synthetic kernel regs
arm64: Rename 'overflow_stack' and OVERFLOW_STACK_SIZE
arch/arm64/Kconfig | 2 +-
arch/arm64/Makefile | 2 +-
arch/arm64/include/asm/assembler.h | 2 +-
arch/arm64/include/asm/current.h | 6 +-
arch/arm64/include/asm/ftrace.h | 4 +-
arch/arm64/include/asm/insn.h | 1 +
arch/arm64/include/asm/kvm_asm.h | 26 +++++
arch/arm64/include/asm/memory.h | 10 +-
arch/arm64/include/asm/percpu.h | 10 +-
arch/arm64/include/asm/perf_event.h | 2 +-
arch/arm64/include/asm/sdei.h | 2 +
arch/arm64/include/asm/stacktrace.h | 9 +-
arch/arm64/include/asm/stacktrace/nvhe.h | 3 +-
arch/arm64/include/uapi/asm/ptrace.h | 1 +
arch/arm64/kernel/asm-offsets.c | 2 +
arch/arm64/kernel/entry-common.c | 51 +++++++--
arch/arm64/kernel/entry.S | 108 +++++++++---------
arch/arm64/kernel/head.S | 8 +-
arch/arm64/kernel/hyp-stub.S | 7 +-
arch/arm64/kernel/process.c | 21 +---
arch/arm64/kernel/sdei.c | 6 +-
arch/arm64/kernel/sleep.S | 3 +-
arch/arm64/kernel/smp.c | 19 ++-
arch/arm64/kernel/stacktrace.c | 2 +-
arch/arm64/kernel/sys_compat.c | 7 --
arch/arm64/kernel/traps.c | 14 +--
arch/arm64/kvm/hyp/entry.S | 15 ++-
arch/arm64/kvm/hyp/include/hyp/sysreg-sr.h | 2 -
arch/arm64/kvm/hyp/nvhe/host.S | 2 +-
arch/arm64/kvm/hyp/nvhe/stacktrace.c | 4 +-
arch/arm64/kvm/stacktrace.c | 4 +-
arch/arm64/mm/proc.S | 16 ++-
arch/arm64/net/bpf_jit.h | 2 +
arch/arm64/net/bpf_jit_comp.c | 4 +-
scripts/gdb/linux/cpus.py | 2 +-
.../selftests/bpf/progs/verifier_jit_inline.c | 2 +-
36 files changed, 230 insertions(+), 151 deletions(-)
--
2.55.0.1082.g2b9226bbc0-goog
On 18/09/2026 5:13 pm, Will Deacon wrote: > Hi folks, > > This is version two of the kernel stack juggling patches I previously > posted here: > > https://lore.kernel.org/r/20260907164247.17223-1-will@kernel.org > > Changes since v1 include: > * Fixed suspend/resume paths to handle the stack pointers properly > * Fixed restoration of ptrauth keys on resume > * Added tags I tested this series with Fastpath on two different server-class machines: AWS m7g.metal and AmpereOne. Fastpath marks statistically significant improvements as (I) and regressions as (R). Please see the attached file for detailed results. The statistically significant R and I were counted: - AWS m7g.metal: - perf: 5 R, 1 I - micromm: 0 R, 1 I - mmtests: 84 R, 0 I - AmpereOne: - perf: 3 R, 0 I - micromm: 0 R, 0 I For reference, I've also put the detailed stats for the perf at the bottom of the file to prove that the variance during the testing was low. Thanks, Usama > > Cheers, > > Will > > Cc: Arnd Bergmann <arnd@arndb.de> > Cc: Ard Biesheuvel <ardb@kernel.org> > Cc: Ada Couprie Diaz <ada.coupriediaz@arm.com> > Cc: David Hildenbrand <david@kernel.org> > Cc: Catalin Marinas <catalin.marinas@arm.com> > Cc: Vladimir Murzin <vladimir.murzin@arm.com> > Cc: Mark Rutland <mark.rutland@arm.com> > Cc: Mostafa Saleh <smostafa@google.com> > Cc: Lorenzo Stoakes <ljs@kernel.org> > Cc: Oliver Upton <oupton@kernel.org> > Cc: Linus Walleij <linusw@kernel.org> > Cc: Marc Zyngier <maz@kernel.org> > > --->8 > > Mostafa Saleh (1): > KVM: arm64: Protect TPIDRRO_EL0 across guest entry/exit > > Will Deacon (20): > arm64: entry: Defer setting of TPIDRRO_EL0 until exit to userspace > arm64: entry: Only check for stack overflow on exceptions from EL1 > arm64: stackprotector: Temporarily disable per-task stackprotector > arm64: bpf: Add support for generating reads of TPIDRRO_EL0 > arm64: Store 'current' in TPIDRRO_EL0 instead of SP_EL0 > selftests/bpf: arm64: Use TPIDRRO_EL0 instead of SP_EL0 for 'current' > scripts/gdb: arm64: Use TPIDRRO_EL0 instead of SP_EL0 for 'current' > arm64: stackprotector: Re-enable per-task stackprotector > arm64: percpu: Specialise set_my_cpu_offset() for the primary CPU > arm64: percpu: Annotate __kern_my_cpu_offset() as '__always_inline' > KVM: arm64: Preserve handler/thread bit of EL1 mode in > __finalise_el2() > arm64: sdei: Guard most of asm/sdei.h with CONFIG_ARM_SDE_INTERFACE > arm64: sdei: Support SDEI events from kernel handler and thread modes > arm64: entry: Point SP_EL0 at the overflow stack > arm64: entry: Implement EL1t exception handlers for overflow stack > arm64: entry: Use SPSel to switch to overflow stack > arm64: entry: Split up kernel_ventry macro into separate helper macros > arm64: entry: The great stack switcheroo > arm64: tracing: Advertise a mode of EL1t in synthetic kernel regs > arm64: Rename 'overflow_stack' and OVERFLOW_STACK_SIZE > > arch/arm64/Kconfig | 2 +- > arch/arm64/Makefile | 2 +- > arch/arm64/include/asm/assembler.h | 2 +- > arch/arm64/include/asm/current.h | 6 +- > arch/arm64/include/asm/ftrace.h | 4 +- > arch/arm64/include/asm/insn.h | 1 + > arch/arm64/include/asm/kvm_asm.h | 26 +++++ > arch/arm64/include/asm/memory.h | 10 +- > arch/arm64/include/asm/percpu.h | 10 +- > arch/arm64/include/asm/perf_event.h | 2 +- > arch/arm64/include/asm/sdei.h | 2 + > arch/arm64/include/asm/stacktrace.h | 9 +- > arch/arm64/include/asm/stacktrace/nvhe.h | 3 +- > arch/arm64/include/uapi/asm/ptrace.h | 1 + > arch/arm64/kernel/asm-offsets.c | 2 + > arch/arm64/kernel/entry-common.c | 51 +++++++-- > arch/arm64/kernel/entry.S | 108 +++++++++--------- > arch/arm64/kernel/head.S | 8 +- > arch/arm64/kernel/hyp-stub.S | 7 +- > arch/arm64/kernel/process.c | 21 +--- > arch/arm64/kernel/sdei.c | 6 +- > arch/arm64/kernel/sleep.S | 3 +- > arch/arm64/kernel/smp.c | 19 ++- > arch/arm64/kernel/stacktrace.c | 2 +- > arch/arm64/kernel/sys_compat.c | 7 -- > arch/arm64/kernel/traps.c | 14 +-- > arch/arm64/kvm/hyp/entry.S | 15 ++- > arch/arm64/kvm/hyp/include/hyp/sysreg-sr.h | 2 - > arch/arm64/kvm/hyp/nvhe/host.S | 2 +- > arch/arm64/kvm/hyp/nvhe/stacktrace.c | 4 +- > arch/arm64/kvm/stacktrace.c | 4 +- > arch/arm64/mm/proc.S | 16 ++- > arch/arm64/net/bpf_jit.h | 2 + > arch/arm64/net/bpf_jit_comp.c | 4 +- > scripts/gdb/linux/cpus.py | 2 +- > .../selftests/bpf/progs/verifier_jit_inline.c | 2 +- > 36 files changed, 230 insertions(+), 151 deletions(-) > Fastpath runs repeatable Linux kernel benchmarks on defined systems under test (SUTs). Read each row as one benchmark metric: the base column is the before mean, the final column is the after result as a percentage change from that baseline; (I) marks a statistically significant improvement, (R) a regression, and an unmarked value no significant change. Results for SUT Class aws-m7g.metal: +------------------------------------+----------------------------------------------------------+-----------------------------------------------+---------------------------------------+ | Benchmark | Result Class | will-stack-v2-v7.3-rc1-before-m7g-perf (base) | will-stack-v2-v7.3-rc1-after-m7g-perf | +====================================+==========================================================+===============================================+=======================================+ | perf/futex | hash (ops/sec) | 2633400.13 | (R) -8.21% | | | lock-pi (ops/sec) | 280.40 | -0.14% | | | requeue (ms) | 0.028 | -3.67% | | | wake (ms) | 0.075 | -1.29% | | | wake-parallel (ms) | 0.0041 | -6.44% | +------------------------------------+----------------------------------------------------------+-----------------------------------------------+---------------------------------------+ | perf/mem | memset -k 1GB -f default -s 16GB (bytes/sec) | 65813285254.01 | -0.50% | | | mmap -p 1GB -f demand -s 32GB -l 5 (bytes/sec) | 64096741623.58 | -0.84% | | | mmap -p 4KB -f demand -s 32GB -l 5 (bytes/sec) | 49942401198.50 | -0.55% | +------------------------------------+----------------------------------------------------------+-----------------------------------------------+---------------------------------------+ | perf/sched | messaging -l 10000 (sec) | 1.32 | (R) -3.44% | | | pipe (ops/sec) | 588652.50 | (I) 18.50% | | | seccomp-notify (ops/sec) | 243222.80 | (R) -7.07% | +------------------------------------+----------------------------------------------------------+-----------------------------------------------+---------------------------------------+ | perf/syscall | basic (ops/sec) | 5172519.93 | (R) -18.35% | | | execve (ops/sec) | 2360.57 | -0.59% | | | fork (ops/sec) | 4148.93 | -0.34% | | | getpgid (ops/sec) | 5188203.73 | (R) -18.99% | +------------------------------------+----------------------------------------------------------+-----------------------------------------------+---------------------------------------+ | micromm/fork | fork: p:1, d:10 (seconds) | 0.0078 | 0.49% | | | fork: p:512, d:10 (seconds) | 0.0056 | -0.36% | +------------------------------------+----------------------------------------------------------+-----------------------------------------------+---------------------------------------+ | micromm/munmap | munmap: p:1, d:10 (seconds) | 0.061 | -0.93% | | | munmap: p:512, d:10 (seconds) | 0.0046 | 0.12% | +------------------------------------+----------------------------------------------------------+-----------------------------------------------+---------------------------------------+ | micromm/vmalloc | fix_align_alloc_test: p:1, h:0, l:500000 (usec) | 636383.00 | 0.69% | | | fix_size_alloc_test: p:1, h:0, l:500000 (usec) | 373708.00 | 0.65% | | | fix_size_alloc_test: p:4, h:0, l:500000 (usec) | 468532.83 | (I) 2.10% | | | fix_size_alloc_test: p:16, h:0, l:500000 (usec) | 869582.17 | -1.21% | | | fix_size_alloc_test: p:16, h:1, l:500000 (usec) | 813165.50 | -1.12% | | | fix_size_alloc_test: p:64, h:0, l:100000 (usec) | 499635.33 | -0.50% | | | fix_size_alloc_test: p:64, h:1, l:100000 (usec) | 465521.67 | -0.16% | | | fix_size_alloc_test: p:256, h:0, l:100000 (usec) | 1815456.17 | -0.35% | | | fix_size_alloc_test: p:256, h:1, l:100000 (usec) | 1701639.17 | -0.28% | | | fix_size_alloc_test: p:512, h:0, l:100000 (usec) | 3557058.33 | -0.22% | | | fix_size_alloc_test: p:512, h:1, l:100000 (usec) | 2624327.00 | -0.15% | | | full_fit_alloc_test: p:1, h:0, l:500000 (usec) | 565714.33 | 0.27% | | | kvfree_rcu_1_arg_vmalloc_test: p:1, h:0, l:500000 (usec) | 369038.17 | 0.27% | | | kvfree_rcu_2_arg_vmalloc_test: p:1, h:0, l:500000 (usec) | 369115.50 | 0.73% | | | long_busy_list_alloc_test: p:1, h:0, l:500000 (usec) | 4383806.67 | -0.72% | | | pcpu_alloc_test: p:1, h:0, l:500000 (usec) | 198536.00 | -0.45% | | | random_size_align_alloc_test: p:1, h:0, l:500000 (usec) | 744627.00 | -3.57% | | | random_size_alloc_test: p:1, h:0, l:500000 (usec) | 2294946.00 | -0.83% | | | vm_map_ram_test: p:1, h:0, l:500000 (usec) | 81581.33 | 0.90% | +------------------------------------+----------------------------------------------------------+-----------------------------------------------+---------------------------------------+ | mmtests/hackbench | hackbench-process-pipes-1 (seconds) | 0.15 | (R) -3.36% | | | hackbench-process-pipes-4 (seconds) | 0.38 | (R) -6.12% | | | hackbench-process-pipes-7 (seconds) | 0.66 | (R) -5.12% | | | hackbench-process-pipes-12 (seconds) | 1.10 | (R) -5.53% | | | hackbench-process-pipes-21 (seconds) | 1.48 | (R) -6.69% | | | hackbench-process-pipes-30 (seconds) | 1.87 | (R) -7.30% | | | hackbench-process-pipes-48 (seconds) | 2.57 | (R) -8.22% | | | hackbench-process-pipes-79 (seconds) | 3.61 | (R) -9.50% | | | hackbench-process-pipes-110 (seconds) | 4.68 | (R) -9.85% | | | hackbench-process-pipes-141 (seconds) | 5.78 | (R) -10.04% | | | hackbench-process-pipes-172 (seconds) | 6.95 | (R) -9.99% | | | hackbench-process-pipes-203 (seconds) | 8.08 | (R) -10.16% | | | hackbench-process-pipes-234 (seconds) | 9.29 | (R) -10.12% | | | hackbench-process-pipes-256 (seconds) | 10.08 | (R) -10.39% | | | hackbench-process-sockets-1 (seconds) | 0.28 | (R) -2.13% | | | hackbench-process-sockets-4 (seconds) | 0.63 | (R) -2.77% | | | hackbench-process-sockets-7 (seconds) | 0.99 | (R) -3.21% | | | hackbench-process-sockets-12 (seconds) | 1.63 | (R) -2.56% | | | hackbench-process-sockets-21 (seconds) | 2.82 | -1.97% | | | hackbench-process-sockets-30 (seconds) | 4.03 | (R) -2.05% | | | hackbench-process-sockets-48 (seconds) | 6.42 | (R) -2.46% | | | hackbench-process-sockets-79 (seconds) | 9.89 | (R) -3.43% | | | hackbench-process-sockets-110 (seconds) | 13.76 | (R) -3.44% | | | hackbench-process-sockets-141 (seconds) | 17.67 | (R) -3.96% | | | hackbench-process-sockets-172 (seconds) | 21.88 | (R) -3.75% | | | hackbench-process-sockets-203 (seconds) | 26.17 | (R) -3.86% | | | hackbench-process-sockets-234 (seconds) | 30.53 | (R) -3.90% | | | hackbench-process-sockets-256 (seconds) | 33.63 | (R) -3.95% | | | hackbench-thread-pipes-1 (seconds) | 0.18 | (R) -4.43% | | | hackbench-thread-pipes-4 (seconds) | 0.40 | -3.85% | | | hackbench-thread-pipes-7 (seconds) | 0.69 | (R) -4.23% | | | hackbench-thread-pipes-12 (seconds) | 1.15 | (R) -4.93% | | | hackbench-thread-pipes-21 (seconds) | 1.53 | (R) -5.90% | | | hackbench-thread-pipes-30 (seconds) | 1.95 | (R) -7.12% | | | hackbench-thread-pipes-48 (seconds) | 2.68 | (R) -8.46% | | | hackbench-thread-pipes-79 (seconds) | 3.66 | (R) -10.08% | | | hackbench-thread-pipes-110 (seconds) | 4.81 | (R) -10.04% | | | hackbench-thread-pipes-141 (seconds) | 5.92 | (R) -10.60% | | | hackbench-thread-pipes-172 (seconds) | 7.16 | (R) -10.37% | | | hackbench-thread-pipes-203 (seconds) | 8.38 | (R) -10.33% | | | hackbench-thread-pipes-234 (seconds) | 9.62 | (R) -10.56% | | | hackbench-thread-pipes-256 (seconds) | 10.49 | (R) -10.44% | | | hackbench-thread-sockets-1 (seconds) | 0.30 | -1.74% | | | hackbench-thread-sockets-4 (seconds) | 0.64 | (R) -3.70% | | | hackbench-thread-sockets-7 (seconds) | 0.99 | (R) -3.81% | | | hackbench-thread-sockets-12 (seconds) | 1.59 | (R) -3.91% | | | hackbench-thread-sockets-21 (seconds) | 2.71 | (R) -4.14% | | | hackbench-thread-sockets-30 (seconds) | 3.85 | (R) -3.93% | | | hackbench-thread-sockets-48 (seconds) | 6.12 | (R) -3.65% | | | hackbench-thread-sockets-79 (seconds) | 9.50 | (R) -3.97% | | | hackbench-thread-sockets-110 (seconds) | 13.19 | (R) -3.83% | | | hackbench-thread-sockets-141 (seconds) | 16.99 | (R) -3.56% | | | hackbench-thread-sockets-172 (seconds) | 21.04 | (R) -3.70% | | | hackbench-thread-sockets-203 (seconds) | 25.24 | (R) -3.55% | | | hackbench-thread-sockets-234 (seconds) | 29.48 | (R) -3.35% | | | hackbench-thread-sockets-256 (seconds) | 32.52 | (R) -3.25% | +------------------------------------+----------------------------------------------------------+-----------------------------------------------+---------------------------------------+ | mmtests/kernbench | kernbench-elsp-64 (seconds) | 360.03 | -0.25% | | | kernbench-syst-64 (seconds) | 1129.20 | -1.07% | | | kernbench-user-64 (seconds) | 19755.83 | -0.05% | +------------------------------------+----------------------------------------------------------+-----------------------------------------------+---------------------------------------+ | mmtests/stressng-bad-altstack | stressng-bad-altstack-1 (ops/second) | 9.68 | 0.07% | | | stressng-bad-altstack-2 (ops/second) | 19.02 | 0.21% | | | stressng-bad-altstack-4 (ops/second) | 37.40 | -0.01% | | | stressng-bad-altstack-8 (ops/second) | 55.42 | -0.50% | | | stressng-bad-altstack-16 (ops/second) | 17466.33 | 1.13% | | | stressng-bad-altstack-32 (ops/second) | 54185.30 | -0.48% | | | stressng-bad-altstack-64 (ops/second) | 98314.32 | -0.00% | | | stressng-bad-altstack-128 (ops/second) | 104605.90 | -1.52% | +------------------------------------+----------------------------------------------------------+-----------------------------------------------+---------------------------------------+ | mmtests/stressng-class-io-parallel | stressng-aio-64 (ops/second) | 3463.65 | -2.28% | | | stressng-hdd-64 (ops/second) | 4212.36 | 0.14% | | | stressng-io-uring-64 (ops/second) | 776.51 | -6.25% | | | stressng-readahead-64 (ops/second) | 18119014.75 | -3.88% | | | stressng-revio-64 (ops/second) | 2789119.01 | -4.00% | | | stressng-seek-64 (ops/second) | 2753470.04 | -12.39% | | | stressng-sync-file-64 (ops/second) | 27.63 | -7.59% | +------------------------------------+----------------------------------------------------------+-----------------------------------------------+---------------------------------------+ | mmtests/stressng-context | stressng-context-1 (ops/second) | 2514.25 | (R) -15.70% | | | stressng-context-2 (ops/second) | 5025.68 | (R) -15.80% | | | stressng-context-4 (ops/second) | 10055.60 | (R) -15.92% | | | stressng-context-8 (ops/second) | 20093.56 | (R) -15.86% | | | stressng-context-16 (ops/second) | 40100.87 | (R) -15.77% | | | stressng-context-32 (ops/second) | 80155.74 | (R) -15.68% | | | stressng-context-64 (ops/second) | 160064.84 | (R) -15.61% | | | stressng-context-128 (ops/second) | 159299.81 | (R) -15.34% | +------------------------------------+----------------------------------------------------------+-----------------------------------------------+---------------------------------------+ | mmtests/stressng-fork | stressng-fork-1 (ops/second) | 3781.34 | -0.34% | | | stressng-fork-2 (ops/second) | 7268.31 | 0.24% | | | stressng-fork-4 (ops/second) | 14267.94 | -1.75% | | | stressng-fork-8 (ops/second) | 27227.12 | -1.69% | | | stressng-fork-16 (ops/second) | 49947.85 | -0.92% | | | stressng-fork-32 (ops/second) | 81903.86 | -2.31% | | | stressng-fork-64 (ops/second) | 94812.06 | 0.03% | | | stressng-fork-128 (ops/second) | 93409.14 | -1.74% | +------------------------------------+----------------------------------------------------------+-----------------------------------------------+---------------------------------------+ | mmtests/stressng-get | stressng-get-1 (ops/second) | 7771.42 | (R) -3.77% | | | stressng-get-2 (ops/second) | 14923.01 | (R) -4.15% | | | stressng-get-4 (ops/second) | 28916.93 | (R) -3.08% | | | stressng-get-8 (ops/second) | 29471.61 | -0.42% | | | stressng-get-16 (ops/second) | 29430.88 | -0.32% | | | stressng-get-32 (ops/second) | 29390.56 | -0.36% | | | stressng-get-64 (ops/second) | 29403.05 | -0.28% | | | stressng-get-128 (ops/second) | 29397.55 | -0.33% | +------------------------------------+----------------------------------------------------------+-----------------------------------------------+---------------------------------------+ | mmtests/stressng-getdent | stressng-getdent-1 (ops/second) | 143257.70 | (R) -3.15% | | | stressng-getdent-2 (ops/second) | 256672.76 | (R) -3.08% | | | stressng-getdent-4 (ops/second) | 323023.87 | -2.79% | | | stressng-getdent-8 (ops/second) | 336126.91 | 1.09% | | | stressng-getdent-16 (ops/second) | 344968.94 | -1.74% | | | stressng-getdent-32 (ops/second) | 388775.02 | -0.64% | | | stressng-getdent-64 (ops/second) | 374204.16 | 0.04% | | | stressng-getdent-128 (ops/second) | 196093.77 | 2.77% | +------------------------------------+----------------------------------------------------------+-----------------------------------------------+---------------------------------------+ | mmtests/stressng-madvise | stressng-madvise-1 (ops/second) | 37.05 | | | | stressng-madvise-2 (ops/second) | 74.97 | (R) -12.91% | | | stressng-madvise-4 (ops/second) | 143.90 | (R) -11.65% | | | stressng-madvise-8 (ops/second) | 265.46 | (R) -8.69% | | | stressng-madvise-16 (ops/second) | 319.68 | -1.94% | | | stressng-madvise-32 (ops/second) | 431.97 | -0.09% | | | stressng-madvise-64 (ops/second) | 457.43 | 1.49% | | | stressng-madvise-128 (ops/second) | 519.15 | 3.63% | +------------------------------------+----------------------------------------------------------+-----------------------------------------------+---------------------------------------+ | mmtests/stressng-mmap | stressng-mmap-1 (ops/second) | 0.73 | -0.91% | | | stressng-mmap-2 (ops/second) | 2.83 | (R) -2.00% | | | stressng-mmap-4 (ops/second) | 10.80 | -1.68% | | | stressng-mmap-8 (ops/second) | 39.26 | -0.90% | | | stressng-mmap-16 (ops/second) | 115.64 | -0.79% | | | stressng-mmap-32 (ops/second) | 224.88 | -0.31% | | | stressng-mmap-64 (ops/second) | 458.60 | -0.81% | | | stressng-mmap-128 (ops/second) | 928.63 | -0.90% | +------------------------------------+----------------------------------------------------------+-----------------------------------------------+---------------------------------------+ | mmtests/stressng-vm-splice | stressng-vm-splice-1 (ops/second) | 391522.81 | (R) -6.46% | | | stressng-vm-splice-2 (ops/second) | 1006787.55 | (R) -7.53% | | | stressng-vm-splice-4 (ops/second) | 2395582.21 | (R) -9.11% | | | stressng-vm-splice-8 (ops/second) | 5260118.81 | (R) -9.96% | | | stressng-vm-splice-16 (ops/second) | 11130004.33 | (R) -10.78% | | | stressng-vm-splice-32 (ops/second) | 22230580.82 | (R) -10.54% | | | stressng-vm-splice-64 (ops/second) | 44458735.50 | (R) -10.69% | | | stressng-vm-splice-128 (ops/second) | 43738226.27 | (R) -10.98% | +------------------------------------+----------------------------------------------------------+-----------------------------------------------+---------------------------------------+ | mmtests/stressng-wait | stressng-wait-1 (ops/second) | 2998.90 | -2.73% | | | stressng-wait-2 (ops/second) | 5994.53 | (R) -8.36% | | | stressng-wait-4 (ops/second) | 11834.43 | (R) -8.48% | | | stressng-wait-8 (ops/second) | 23711.92 | (R) -7.53% | | | stressng-wait-16 (ops/second) | 49787.93 | 0.21% | | | stressng-wait-32 (ops/second) | 92168.93 | (R) -3.67% | | | stressng-wait-64 (ops/second) | 140977.84 | -0.52% | | | stressng-wait-128 (ops/second) | 221533.93 | 0.49% | +------------------------------------+----------------------------------------------------------+-----------------------------------------------+---------------------------------------+ | mmtests/stressng-zombie | stressng-zombie-1 (ops/second) | 11283.86 | -0.78% | | | stressng-zombie-2 (ops/second) | 21403.19 | -0.74% | | | stressng-zombie-4 (ops/second) | 40659.77 | -1.27% | | | stressng-zombie-8 (ops/second) | 72426.55 | -0.56% | | | stressng-zombie-16 (ops/second) | 98712.29 | 0.38% | | | stressng-zombie-32 (ops/second) | 96167.89 | -2.76% | | | stressng-zombie-64 (ops/second) | 77641.77 | -0.31% | | | stressng-zombie-128 (ops/second) | 66592.01 | -1.73% | +------------------------------------+----------------------------------------------------------+-----------------------------------------------+---------------------------------------+ | mmtests/sysbench-cpu | sysbenchcpu-1 (ops/second) | 835.75 | -0.03% | | | sysbenchcpu-4 (ops/second) | 3342.56 | -0.02% | | | sysbenchcpu-7 (ops/second) | 5849.17 | -0.02% | | | sysbenchcpu-12 (ops/second) | 10026.47 | -0.02% | | | sysbenchcpu-21 (ops/second) | 17544.40 | -0.02% | | | sysbenchcpu-30 (ops/second) | 25061.15 | -0.01% | | | sysbenchcpu-48 (ops/second) | 40092.05 | -0.01% | | | sysbenchcpu-79 (ops/second) | 53442.39 | 0.00% | | | sysbenchcpu-110 (ops/second) | 53441.13 | 0.00% | | | sysbenchcpu-128 (ops/second) | 53438.59 | 0.01% | +------------------------------------+----------------------------------------------------------+-----------------------------------------------+---------------------------------------+ | mmtests/sysbench-mutex | sysbenchmutex-1 (usec) | 194.31 | -0.02% | | | sysbenchmutex-4 (usec) | 200.57 | 0.06% | | | sysbenchmutex-7 (usec) | 201.56 | 0.23% | | | sysbenchmutex-12 (usec) | 202.18 | 0.20% | | | sysbenchmutex-21 (usec) | 202.18 | -0.22% | | | sysbenchmutex-30 (usec) | 203.09 | -0.31% | | | sysbenchmutex-48 (usec) | 234.78 | -2.87% | | | sysbenchmutex-79 (usec) | 359.85 | 0.57% | | | sysbenchmutex-110 (usec) | 512.77 | 0.06% | | | sysbenchmutex-128 (usec) | 593.54 | 3.77% | +------------------------------------+----------------------------------------------------------+-----------------------------------------------+---------------------------------------+ | mmtests/sysbench-thread | sysbenchthread-1 (usec) | 0.35 | (R) -16.67% | | | sysbenchthread-4 (usec) | 0.52 | (R) -10.92% | | | sysbenchthread-7 (usec) | 2.61 | -10.42% | | | sysbenchthread-12 (usec) | 5.92 | 13.47% | | | sysbenchthread-21 (usec) | 14.75 | 16.49% | | | sysbenchthread-30 (usec) | 18.19 | 23.85% | | | sysbenchthread-48 (usec) | 33.75 | 6.74% | | | sysbenchthread-79 (usec) | 60.46 | -11.26% | | | sysbenchthread-110 (usec) | 88.05 | -11.91% | | | sysbenchthread-128 (usec) | 109.27 | -2.42% | +------------------------------------+----------------------------------------------------------+-----------------------------------------------+---------------------------------------+ Results for SUT Class cesw-aarch64-ampereone-1s-a192-32x: +-----------------+----------------------------------------------------------+-----------------------------------------------------+---------------------------------------------+ | Benchmark | Result Class | will-stack-v2-v7.3-rc1-before-ampereone-perf (base) | will-stack-v2-v7.3-rc1-after-ampereone-perf | +=================+==========================================================+=====================================================+=============================================+ | perf/futex | hash (ops/sec) | 2631145.87 | -8.65% | | | lock-pi (ops/sec) | 78.97 | -0.46% | | | requeue (ms) | 0.12 | (R) -2.31% | | | wake (ms) | 0.29 | -1.93% | | | wake-parallel (ms) | 0.0026 | 0.64% | +-----------------+----------------------------------------------------------+-----------------------------------------------------+---------------------------------------------+ | perf/mem | memset -k 1GB -f default -s 16GB (bytes/sec) | 34089991443.74 | -0.26% | | | mmap -p 1GB -f demand -s 32GB -l 5 (bytes/sec) | 33956264487.33 | -0.65% | | | mmap -p 4KB -f demand -s 32GB -l 5 (bytes/sec) | 25932063345.48 | -0.18% | +-----------------+----------------------------------------------------------+-----------------------------------------------------+---------------------------------------------+ | perf/sched | messaging -l 10000 (sec) | 0.98 | -1.76% | | | pipe (ops/sec) | 314096.00 | 1.49% | | | seccomp-notify (ops/sec) | 130701.47 | -0.34% | +-----------------+----------------------------------------------------------+-----------------------------------------------------+---------------------------------------------+ | perf/syscall | basic (ops/sec) | 7365617.00 | (R) -9.34% | | | execve (ops/sec) | 1580.90 | -0.60% | | | fork (ops/sec) | 2456.27 | -0.25% | | | getpgid (ops/sec) | 7676908.73 | (R) -11.71% | +-----------------+----------------------------------------------------------+-----------------------------------------------------+---------------------------------------------+ | micromm/fork | fork: p:1, d:10 (seconds) | 0.0084 | -0.57% | | | fork: p:512, d:10 (seconds) | 0.0048 | -0.39% | +-----------------+----------------------------------------------------------+-----------------------------------------------------+---------------------------------------------+ | micromm/munmap | munmap: p:1, d:10 (seconds) | 0.078 | -2.66% | | | munmap: p:512, d:10 (seconds) | 0.022 | 0.94% | +-----------------+----------------------------------------------------------+-----------------------------------------------------+---------------------------------------------+ | micromm/vmalloc | fix_align_alloc_test: p:1, h:0, l:500000 (usec) | 737247.67 | 5.13% | | | fix_size_alloc_test: p:1, h:0, l:500000 (usec) | 391932.17 | 1.25% | | | fix_size_alloc_test: p:4, h:0, l:500000 (usec) | 512435.17 | -0.01% | | | fix_size_alloc_test: p:16, h:0, l:500000 (usec) | 970130.83 | -1.02% | | | fix_size_alloc_test: p:16, h:1, l:500000 (usec) | 915661.00 | -0.61% | | | fix_size_alloc_test: p:64, h:0, l:100000 (usec) | 590007.50 | -0.94% | | | fix_size_alloc_test: p:64, h:1, l:100000 (usec) | 541856.50 | -0.31% | | | fix_size_alloc_test: p:256, h:0, l:100000 (usec) | 2161700.17 | -0.92% | | | fix_size_alloc_test: p:256, h:1, l:100000 (usec) | 1980042.17 | -0.52% | | | fix_size_alloc_test: p:512, h:0, l:100000 (usec) | 4216675.67 | -0.94% | | | fix_size_alloc_test: p:512, h:1, l:100000 (usec) | 2983924.67 | -1.93% | | | full_fit_alloc_test: p:1, h:0, l:500000 (usec) | 613119.67 | -0.41% | | | kvfree_rcu_1_arg_vmalloc_test: p:1, h:0, l:500000 (usec) | 534642.83 | 2.30% | | | kvfree_rcu_2_arg_vmalloc_test: p:1, h:0, l:500000 (usec) | 516561.67 | -0.69% | | | long_busy_list_alloc_test: p:1, h:0, l:500000 (usec) | 4973543.83 | -0.79% | | | pcpu_alloc_test: p:1, h:0, l:500000 (usec) | 484844.83 | 0.75% | | | random_size_align_alloc_test: p:1, h:0, l:500000 (usec) | 890200.83 | -0.56% | | | random_size_alloc_test: p:1, h:0, l:500000 (usec) | 2625180.83 | -0.75% | | | vm_map_ram_test: p:1, h:0, l:500000 (usec) | 107025.00 | 1.39% | +-----------------+----------------------------------------------------------+-----------------------------------------------------+---------------------------------------------+ Perf variability (AWS m7g.metal) For interested readers, these tables show the spread, 95% confidence interval, coefficient of variation (cv), and number of measurements for each perf result. Before (baseline): +---------------+------------------------------------------------+---------+-----------+----------------+-----------+--------+--------+---------+ | Benchmark | Result Class | min | ci95min | mean | ci95max | max | cv | count | +===============+================================================+=========+===========+================+===========+========+========+=========+ | perf/futex | hash (ops/sec) | -0.96% | -0.22% | 2633400.13 | 0.22% | 1.07% | 0.58% | 30 | | | lock-pi (ops/sec) | -5.49% | -0.39% | 280.40 | 0.39% | 0.21% | 1.05% | 30 | | | requeue (ms) | -6.82% | -4.12% | 0.028 | 4.12% | 41.02% | 11.03% | 30 | | | wake (ms) | -13.60% | -2.96% | 0.075 | 2.96% | 11.90% | 7.92% | 30 | | | wake-parallel (ms) | -19.77% | -5.83% | 0.0041 | 5.83% | 45.87% | 15.62% | 30 | +---------------+------------------------------------------------+---------+-----------+----------------+-----------+--------+--------+---------+ | perf/mem | memset -k 1GB -f default -s 16GB (bytes/sec) | -4.20% | -0.46% | 65813285254.01 | 0.46% | 1.22% | 1.24% | 30 | | | mmap -p 1GB -f demand -s 32GB -l 5 (bytes/sec) | -13.28% | -1.36% | 64096741623.58 | 1.36% | 3.54% | 3.64% | 30 | | | mmap -p 4KB -f demand -s 32GB -l 5 (bytes/sec) | -11.70% | -1.31% | 49942401198.50 | 1.31% | 2.59% | 3.51% | 30 | +---------------+------------------------------------------------+---------+-----------+----------------+-----------+--------+--------+---------+ | perf/sched:76 | messaging -l 10000 (sec) | -0.87% | -0.15% | 1.32 | 0.15% | 0.87% | 0.41% | 30 | | | pipe (ops/sec) | -22.16% | -8.94% | 588652.50 | 8.94% | 71.10% | 23.95% | 30 | | | seccomp-notify (ops/sec) | -5.45% | -1.08% | 243222.80 | 1.08% | 4.85% | 2.90% | 30 | +---------------+------------------------------------------------+---------+-----------+----------------+-----------+--------+--------+---------+ | perf/syscall | basic (ops/sec) | -0.49% | -0.19% | 5172519.93 | 0.19% | 2.60% | 0.52% | 30 | | | execve (ops/sec) | -1.42% | -0.28% | 2360.57 | 0.28% | 1.20% | 0.74% | 30 | | | fork (ops/sec) | -1.85% | -0.37% | 4148.93 | 0.37% | 1.79% | 0.99% | 30 | | | getpgid (ops/sec) | -0.40% | -0.16% | 5188203.73 | 0.16% | 1.54% | 0.44% | 30 | +---------------+------------------------------------------------+---------+-----------+----------------+-----------+--------+--------+---------+ After (patched): +---------------+------------------------------------------------+---------+-----------+----------------+-----------+--------+--------+---------+ | Benchmark | Result Class | min | ci95min | mean | ci95max | max | cv | count | +===============+================================================+=========+===========+================+===========+========+========+=========+ | perf/futex | hash (ops/sec) | -0.86% | -0.17% | 2417106.13 | 0.17% | 0.86% | 0.46% | 30 | | | lock-pi (ops/sec) | 0.00% | 0.00% | 280.00 | 0.00% | 0.00% | 0.00% | 30 | | | requeue (ms) | -4.39% | -1.85% | 0.029 | 1.85% | 23.81% | 4.95% | 30 | | | wake (ms) | -21.73% | -3.39% | 0.076 | 3.39% | 10.19% | 9.07% | 30 | | | wake-parallel (ms) | -24.94% | -5.29% | 0.0044 | 5.29% | 22.82% | 14.18% | 30 | +---------------+------------------------------------------------+---------+-----------+----------------+-----------+--------+--------+---------+ | perf/mem | memset -k 1GB -f default -s 16GB (bytes/sec) | -3.31% | -0.51% | 65483112434.86 | 0.51% | 1.80% | 1.38% | 30 | | | mmap -p 1GB -f demand -s 32GB -l 5 (bytes/sec) | -4.05% | -1.07% | 63556894478.20 | 1.07% | 4.41% | 2.87% | 30 | | | mmap -p 4KB -f demand -s 32GB -l 5 (bytes/sec) | -10.72% | -1.06% | 49666606495.00 | 1.06% | 3.00% | 2.85% | 30 | +---------------+------------------------------------------------+---------+-----------+----------------+-----------+--------+--------+---------+ | perf/sched:76 | messaging -l 10000 (sec) | -0.71% | -0.14% | 1.37 | 0.14% | 0.82% | 0.38% | 30 | | | pipe (ops/sec) | -33.91% | -6.59% | 697562.97 | 6.59% | 27.52% | 17.65% | 30 | | | seccomp-notify (ops/sec) | -5.05% | -0.84% | 226021.30 | 0.84% | 4.15% | 2.24% | 30 | +---------------+------------------------------------------------+---------+-----------+----------------+-----------+--------+--------+---------+ | perf/syscall | basic (ops/sec) | -0.48% | -0.15% | 4223503.80 | 0.15% | 1.11% | 0.39% | 30 | | | execve (ops/sec) | -1.60% | -0.23% | 2346.60 | 0.23% | 1.42% | 0.61% | 30 | | | fork (ops/sec) | -2.01% | -0.43% | 4134.93 | 0.43% | 2.27% | 1.14% | 30 | | | getpgid (ops/sec) | -0.92% | -0.10% | 4203192.50 | 0.10% | 0.25% | 0.26% | 30 | +---------------+------------------------------------------------+---------+-----------+----------------+-----------+--------+--------+---------+
© 2016 - 2026 Red Hat, Inc.