[PATCH v2 00/20] arm64: Preemptible this_cpu_*() operations

David Laight david.laight.linux at gmail.com
Wed Sep 2 11:24:57 PDT 2026


On Wed, 2 Sep 2026 16:42:50 +0100
David Laight <david.laight.linux at gmail.com> wrote:

> On Wed, 2 Sep 2026 12:55:12 +0100
> Usama Anjum <usama.anjum at arm.com> wrote:
> 
> > On 04/08/2026 6:04 pm, Mark Rutland wrote:  
> > > This series reworks arm64's this_cpu_*() operations such that they do
> > > not need to disable preemption, avoiding related overhead in the fast
> > > paths. Instead, the ops begin/end a "PCPU GPR" critical section using
> > > unconditional/posted stores, which should be very cheap on any
> > > reasonable micro-architecture. During a critical section, should a
> > > (preemptible) exception be taken, the entry code will apply a fixup to
> > > the GPRs containing the percpu offset and the generated percpu address.  
> ...
> > tl;dr
> > Comparing this series with the page-table series [a] gives 8 improvements and 3
> > regressions.
> > 
> > Fastpath is a Linux kernel performance benchmarking service. The table
> > compares the both patched kernels: positive values are faster, negative
> > values are slower, and (I)/(R) indicate statistically significant
> > improvements/regressions. Unmarked differences are not significant after
> > accounting for confidence and noise thresholds.
> > 
> > +---------------------------------+--------------------+-----------------+-----------------------+
> > | Benchmark                       | percpu-pgtable [2] |   gpr-fixup [3] |         gpr-fixup [3] |
> > |                                 |    vs baseline [1] | vs baseline [1] | vs percpu-pgtable [2] |
> > +=================================+====================+=================+=======================+  
> ...
> > | perf/futex                      |              0.55% |      (R) -2.80% |            (R) -3.34% |
> > | perf/sched                      |          (I) 1.61% |          -0.39% |            (R) -1.97% |  
> 
> Might be worth investigating those two.
> Something odd is probably happening.

Answering myself :-)
Do I remember something about the code being locally faster actually
causing a slow down because it changed the paths the other cpu used?

> 
> David
> 




More information about the linux-arm-kernel mailing list