[PATCH v6 0/3] perf stat affinity changes

From: Ian Rogers
Date: Thu Jan 08 2026 - 16:29:18 EST


Change how affinities work with evlist__for_each_cpu. Move the
affinity code into the iterator to simplify setting it up. Detect when
affinities will and won't be profitable, for example a tool event and
a regular perf event (or read group) may face less delay from a single
IPI for the event read than from a call to sched_setaffinity. Add a
--no-affinity flag to perf stat to allow affinities to be disabled.

v6: Drop merged tool event change. Move TPEBS fix into its own patch
1st.

v5: Drop merged changes. Move tool event reading to first
patch. Change --no-affinity flag to --affinity/--no-affinity flag.
https://lore.kernel.org/lkml/20251118211326.1840989-1-irogers@xxxxxxxxxx/
On v5 there was discussion with Andi Kleen who points out that
affinities will work better with real time priorities but using
this requires privileges.

v4: Rebase. Add patch to reduce scope of walltime_nsec_stats now that
the legacy metric code is no more. Minor tweak to the ru_stats
clean up.
https://lore.kernel.org/lkml/20251113180517.44096-1-irogers@xxxxxxxxxx/

v3: Add affinity clean ups and read tool events last.
https://lore.kernel.org/lkml/20251106071241.141234-1-irogers@xxxxxxxxxx/

v2: Fixed an aggregation index issue:
https://lore.kernel.org/lkml/20251104234148.3103176-2-irogers@xxxxxxxxxx/

v1:
https://lore.kernel.org/lkml/20251104053449.1208800-1-irogers@xxxxxxxxxx/

Ian Rogers (3):
perf evlist: Missing TPEBS close in evlist__close
perf evlist: Reduce affinity use and move into iterator, fix no
affinity
perf stat: Add no-affinity flag

tools/perf/Documentation/perf-stat.txt | 4 +
tools/perf/builtin-stat.c | 114 ++++++++----------
tools/perf/util/evlist.c | 156 +++++++++++++++----------
tools/perf/util/evlist.h | 27 +++--
tools/perf/util/pmu.c | 12 ++
tools/perf/util/pmu.h | 1 +
6 files changed, 183 insertions(+), 131 deletions(-)

--
2.52.0.457.g6b5491de43-goog