From: Namhyung Kim <namhyung@kernel.org>
To: Ian Rogers <irogers@google.com>
Cc: Thomas Falcon <thomas.falcon@intel.com>,
Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@redhat.com>,
Arnaldo Carvalho de Melo <acme@kernel.org>,
Mark Rutland <mark.rutland@arm.com>,
Alexander Shishkin <alexander.shishkin@linux.intel.com>,
Jiri Olsa <jolsa@kernel.org>,
Adrian Hunter <adrian.hunter@intel.com>,
Kan Liang <kan.liang@linux.intel.com>,
Ben Gainey <ben.gainey@arm.com>,
James Clark <james.clark@linaro.org>,
Howard Chu <howardchu95@gmail.com>,
Weilin Wang <weilin.wang@intel.com>,
Levi Yun <yeoreum.yun@arm.com>,
"Dr. David Alan Gilbert" <linux@treblig.org>,
Zhongqiu Han <quic_zhonhan@quicinc.com>,
Blake Jones <blakejones@google.com>,
Yicong Yang <yangyicong@hisilicon.com>,
Anubhav Shelat <ashelat@redhat.com>,
Thomas Richter <tmricht@linux.ibm.com>,
Jean-Philippe Romain <jean-philippe.romain@foss.st.com>,
Song Liu <song@kernel.org>,
linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2 00/12] CPU mask improvements/fixes particularly for hybrid
Date: Fri, 18 Jul 2025 11:19:47 -0700 [thread overview]
Message-ID: <aHqQQwI0MckHdBlY@google.com> (raw)
In-Reply-To: <20250717210233.1143622-1-irogers@google.com>
On Thu, Jul 17, 2025 at 02:02:21PM -0700, Ian Rogers wrote:
> On hybrid systems some PMUs apply to all core types, particularly for
> metrics the msr PMU and the tsc event. The metrics often only want the
> values of the counter for their specific core type. These patches
> allow the cpu term in an event to give a PMU name to take the cpumask
> from. For example:
>
> $ perf stat -e msr/tsc,cpu=cpu_atom/ ...
>
> will aggregate the msr/tsc/ value but only for atom cores. In doing
> this problems were identified in how cpumasks are handled by parsing
> and event setup when cpumasks are specified along with a task to
> profile. The event parsing, cpumask evlist propagation code and perf
> stat code are updated accordingly.
>
> The final result of the patch series is to be able to run:
> ```
> $ perf stat --no-scale -e 'msr/tsc/,msr/tsc,cpu=cpu_core/,msr/tsc,cpu=cpu_atom/' perf test -F 10
> 10.1: Basic parsing test : Ok
> 10.2: Parsing without PMU name : Ok
> 10.3: Parsing with PMU name : Ok
>
> Performance counter stats for 'perf test -F 10':
>
> 63,704,975 msr/tsc/
> 47,060,704 msr/tsc,cpu=cpu_core/ (4.62%)
> 16,640,591 msr/tsc,cpu=cpu_atom/ (2.18%)
> ```
>
> This has (further) identified a kernel bug for task events around the
> enabled time being too large leading to invalid scaling (hence the
> --no-scale in the command line above).
>
> v2: Add additional documentation of the cpu term to `perf list`
> (Namhyung), extend the term to also allow CPU ranges. Add Thomas
> Falcon's reviewed-by. Still open for discussion whether the term
> cpu should have >1 variant for PMUs, etc. or whether the single
> term is okay. We could refactor later and add a term, but that
> would break existing users, but they are most likely to be metrics
> so probably not a huge issue.
I slightly prefer a new term to minimize the possible confusion. But
it's not strong and I'm open to other opinion.
On the other hand, the 'cpu' term is new and I don't think it has many
users outside. So probably we can change it later.
Thanks,
Namhyung
>
> Ian Rogers (12):
> perf parse-events: Warn if a cpu term is unsupported by a CPU
> perf stat: Avoid buffer overflow to the aggregation map
> perf stat: Don't size aggregation ids from user_requested_cpus
> perf parse-events: Allow the cpu term to be a PMU or CPU range
> perf tool_pmu: Allow num_cpus(_online) to be specific to a cpumask
> libperf evsel: Rename own_cpus to pmu_cpus
> libperf evsel: Factor perf_evsel__exit out of perf_evsel__delete
> perf evsel: Use libperf perf_evsel__exit
> perf pmus: Factor perf_pmus__find_by_attr out of evsel__find_pmu
> perf parse-events: Minor __add_event refactoring
> perf evsel: Add evsel__open_per_cpu_and_thread
> perf parse-events: Support user CPUs mixed with threads/processes
>
> tools/lib/perf/evlist.c | 118 ++++++++++++++++--------
> tools/lib/perf/evsel.c | 9 +-
> tools/lib/perf/include/internal/evsel.h | 3 +-
> tools/perf/Documentation/perf-list.txt | 25 +++--
> tools/perf/builtin-stat.c | 9 +-
> tools/perf/tests/event_update.c | 4 +-
> tools/perf/util/evlist.c | 15 +--
> tools/perf/util/evsel.c | 55 +++++++++--
> tools/perf/util/evsel.h | 5 +
> tools/perf/util/expr.c | 2 +-
> tools/perf/util/header.c | 4 +-
> tools/perf/util/parse-events.c | 112 ++++++++++++++++------
> tools/perf/util/pmus.c | 29 +++---
> tools/perf/util/pmus.h | 2 +
> tools/perf/util/stat.c | 6 +-
> tools/perf/util/synthetic-events.c | 4 +-
> tools/perf/util/tool_pmu.c | 56 +++++++++--
> tools/perf/util/tool_pmu.h | 2 +-
> 18 files changed, 323 insertions(+), 137 deletions(-)
>
> --
> 2.50.0.727.gbf7dc18ff4-goog
>
prev parent reply other threads:[~2025-07-18 18:19 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-07-17 21:02 [PATCH v2 00/12] CPU mask improvements/fixes particularly for hybrid Ian Rogers
2025-07-17 21:02 ` [PATCH v2 01/12] perf parse-events: Warn if a cpu term is unsupported by a CPU Ian Rogers
2025-07-17 21:02 ` [PATCH v2 02/12] perf stat: Avoid buffer overflow to the aggregation map Ian Rogers
2025-07-17 21:02 ` [PATCH v2 03/12] perf stat: Don't size aggregation ids from user_requested_cpus Ian Rogers
2025-07-17 21:02 ` [PATCH v2 04/12] perf parse-events: Allow the cpu term to be a PMU or CPU range Ian Rogers
2025-07-17 21:02 ` [PATCH v2 05/12] perf tool_pmu: Allow num_cpus(_online) to be specific to a cpumask Ian Rogers
2025-07-17 21:02 ` [PATCH v2 06/12] libperf evsel: Rename own_cpus to pmu_cpus Ian Rogers
2025-07-17 21:02 ` [PATCH v2 07/12] libperf evsel: Factor perf_evsel__exit out of perf_evsel__delete Ian Rogers
2025-07-17 21:02 ` [PATCH v2 08/12] perf evsel: Use libperf perf_evsel__exit Ian Rogers
2025-07-17 21:02 ` [PATCH v2 09/12] perf pmus: Factor perf_pmus__find_by_attr out of evsel__find_pmu Ian Rogers
2025-07-17 21:02 ` [PATCH v2 10/12] perf parse-events: Minor __add_event refactoring Ian Rogers
2025-07-17 21:02 ` [PATCH v2 11/12] perf evsel: Add evsel__open_per_cpu_and_thread Ian Rogers
2025-07-17 21:02 ` [PATCH v2 12/12] perf parse-events: Support user CPUs mixed with threads/processes Ian Rogers
2025-07-18 18:19 ` Namhyung Kim [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aHqQQwI0MckHdBlY@google.com \
--to=namhyung@kernel.org \
--cc=acme@kernel.org \
--cc=adrian.hunter@intel.com \
--cc=alexander.shishkin@linux.intel.com \
--cc=ashelat@redhat.com \
--cc=ben.gainey@arm.com \
--cc=blakejones@google.com \
--cc=howardchu95@gmail.com \
--cc=irogers@google.com \
--cc=james.clark@linaro.org \
--cc=jean-philippe.romain@foss.st.com \
--cc=jolsa@kernel.org \
--cc=kan.liang@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=linux@treblig.org \
--cc=mark.rutland@arm.com \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=quic_zhonhan@quicinc.com \
--cc=song@kernel.org \
--cc=thomas.falcon@intel.com \
--cc=tmricht@linux.ibm.com \
--cc=weilin.wang@intel.com \
--cc=yangyicong@hisilicon.com \
--cc=yeoreum.yun@arm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.