From: Namhyung Kim <namhyung@kernel.org>
To: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: Ingo Molnar <mingo@kernel.org>,
Thomas Gleixner <tglx@linutronix.de>,
James Clark <james.clark@linaro.org>,
Jiri Olsa <jolsa@kernel.org>, Ian Rogers <irogers@google.com>,
Adrian Hunter <adrian.hunter@intel.com>,
Clark Williams <williams@redhat.com>,
linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org,
Arnaldo Carvalho de Melo <acme@redhat.com>
Subject: Re: [PATCH 11/12] perf mem record: Request PERF_SAMPLE_CPU by default
Date: Wed, 16 Sep 2026 14:50:32 -0700 [thread overview]
Message-ID: <aqsPKGVUkWk6wvYA@google.com> (raw)
In-Reply-To: <20260916114740.48230-12-acme@kernel.org>
On Wed, Sep 16, 2026 at 08:47:38AM -0300, Arnaldo Carvalho de Melo wrote:
> From: Arnaldo Carvalho de Melo <acme@redhat.com>
>
> The data-type profiling per-sample stream keys cross-CPU contention on
> sample->cpu: without PERF_SAMPLE_CPU the cpu field is the (u32)-1 "no
> CPU info" sentinel, documented as such in perf_session__deliver_event(),
> and same-instance reads and writes from different cores are
> indistinguishable from same-CPU traffic, so pahole's false-sharing
> detector cannot tell them apart.
>
> builtin-record.c already defines --sample-cpu and 'perf mem record'
> forwards unknown options to the record parser, so passing it explicitly
> works today; make it the default, next to the -d (addr) and -W (weight)
> the command already requests, documenting it in perf-mem(1).
>
> The rec_argv array is sized as nine arguments per memory PMU plus the
> user arguments, not counting the arguments __cmd_record() adds itself,
> up to eight with all the optional flags. On PMUs with separate load and
> store events the four event arguments plus the fixed ones already filled
> the array to its last slot, so this new argument would write past it;
> reserve space for the fixed arguments explicitly.
>
> Assisted-by: LLM
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> ---
> tools/perf/Documentation/perf-mem.txt | 4 ++++
> tools/perf/builtin-mem.c | 18 ++++++++++++++++--
> 2 files changed, 20 insertions(+), 2 deletions(-)
>
> diff --git a/tools/perf/Documentation/perf-mem.txt b/tools/perf/Documentation/perf-mem.txt
> index 4d164836d0943119..fe51c5e3333dc4a0 100644
> --- a/tools/perf/Documentation/perf-mem.txt
> +++ b/tools/perf/Documentation/perf-mem.txt
> @@ -14,6 +14,10 @@ DESCRIPTION
> -----------
> "perf mem record" runs a command and gathers memory operation data
> from it, into perf.data. Perf record options are accepted and are passed through.
> +It also requests the address (-d), the weight (-W, where supported) and the
> +CPU id (--sample-cpu) of every sampled access by default; the CPU id is what
> +lets per-sample analysis tell reads and writes to the same data from
> +different cores apart from same-CPU traffic.
I guess the data source of samples can tell that on supported platforms.
Probably we can check TID for concurrent access, wdyt?
Thanks,
Namhyung
>
> "perf mem report" displays the result. It invokes perf report with the
> right set of options to display a memory access profile. By default, loads
> diff --git a/tools/perf/builtin-mem.c b/tools/perf/builtin-mem.c
> index 6101a26b3a781e69..6f38cda1a45ada16 100644
> --- a/tools/perf/builtin-mem.c
> +++ b/tools/perf/builtin-mem.c
> @@ -99,8 +99,13 @@ static int __cmd_record(int argc, const char **argv, struct perf_mem *mem,
> argc = parse_options(argc, argv, options, record_usage,
> PARSE_OPT_KEEP_UNKNOWN);
>
> - /* Max number of arguments multiplied by number of PMUs that can support them. */
> - rec_argc = argc + 9 * (perf_pmu__mem_events_num_mem_pmus(pmu) + 1);
> + /*
> + * Max number of arguments multiplied by number of PMUs that can
> + * support them, plus the arguments added directly below, at most:
> + * "record", "-W", "-d", "--sample-cpu", "--phys-data",
> + * "--data-page-size", "--all-user" and "--all-kernel".
> + */
> + rec_argc = argc + 8 + 9 * (perf_pmu__mem_events_num_mem_pmus(pmu) + 1);
>
> if (mem->cpu_list)
> rec_argc += 2;
> @@ -135,6 +140,15 @@ static int __cmd_record(int argc, const char **argv, struct perf_mem *mem,
>
> rec_argv[i++] = "-d";
>
> + /*
> + * The data-type profiling per-sample stream keys cross-CPU
> + * contention on sample->cpu (PERF_SAMPLE_CPU); without it the cpu
> + * field is the (u32)-1 'no CPU info' sentinel and same-instance
> + * reads and writes from different cores are indistinguishable
> + * from same-CPU traffic.
> + */
> + rec_argv[i++] = "--sample-cpu";
> +
> if (mem->phys_addr)
> rec_argv[i++] = "--phys-data";
>
> --
> 2.55.0
>
next prev parent reply other threads:[~2026-09-16 21:50 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-16 11:47 [PATCH v6 0/12] perf tools: Annotate fixes, stdio progress indication, debuginfo-client in more places Arnaldo Carvalho de Melo
2026-09-16 11:47 ` [PATCH 01/12] perf test: Skip data_type_profiling when the PMU cannot record memory events Arnaldo Carvalho de Melo
2026-09-16 11:53 ` sashiko-bot
2026-09-16 11:47 ` [PATCH 02/12] perf debuginfo: Fetch debuginfo keyed by build ID using debuginfod Arnaldo Carvalho de Melo
2026-09-16 11:57 ` sashiko-bot
2026-09-16 17:59 ` Ian Rogers
2026-09-16 19:02 ` Arnaldo Carvalho de Melo
2026-09-16 21:28 ` Ian Rogers
2026-09-16 18:42 ` Namhyung Kim
2026-09-16 11:47 ` [PATCH 03/12] perf config: Move perf_config__set_variable() to util/config.c Arnaldo Carvalho de Melo
2026-09-16 12:01 ` sashiko-bot
2026-09-16 11:47 ` [PATCH 04/12] perf debuginfo: Let the user skip and disable debuginfod fetches Arnaldo Carvalho de Melo
2026-09-16 11:59 ` sashiko-bot
2026-09-16 18:53 ` Namhyung Kim
2026-09-16 21:27 ` Arnaldo Carvalho de Melo
2026-09-16 11:47 ` [PATCH 05/12] perf debuginfo: Show the debuginfod fetch progress and keys in the TUI Arnaldo Carvalho de Melo
2026-09-16 12:00 ` sashiko-bot
2026-09-16 11:47 ` [PATCH 06/12] perf symbol: Fall back to fetching the vmlinux by build ID Arnaldo Carvalho de Melo
2026-09-16 12:05 ` sashiko-bot
2026-09-16 11:47 ` [PATCH 07/12] perf annotate-data: Show the sample count in the data-type browser Arnaldo Carvalho de Melo
2026-09-16 11:55 ` sashiko-bot
2026-09-16 21:28 ` Namhyung Kim
2026-09-22 12:52 ` Arnaldo Carvalho de Melo
2026-09-16 11:47 ` [PATCH 08/12] perf report: Add --progress option Arnaldo Carvalho de Melo
2026-09-16 11:57 ` sashiko-bot
2026-09-16 11:47 ` [PATCH 09/12] perf scripts: Add perf-stuck, to tell where a running perf is stuck Arnaldo Carvalho de Melo
2026-09-16 12:00 ` sashiko-bot
2026-09-16 11:47 ` [PATCH 10/12] perf annotate-data: Resolve type DIEs in the debug file they came from Arnaldo Carvalho de Melo
2026-09-16 12:01 ` sashiko-bot
2026-09-16 21:44 ` Namhyung Kim
2026-09-17 14:07 ` Arnaldo Carvalho de Melo
2026-09-16 11:47 ` [PATCH 11/12] perf mem record: Request PERF_SAMPLE_CPU by default Arnaldo Carvalho de Melo
2026-09-16 12:06 ` sashiko-bot
2026-09-16 21:50 ` Namhyung Kim [this message]
2026-09-16 11:47 ` [PATCH 12/12] perf mem record: Use the IBS swfilt filter when available Arnaldo Carvalho de Melo
2026-09-16 12:00 ` sashiko-bot
2026-09-16 21:59 ` Namhyung Kim
2026-09-18 3:35 ` Ravi Bangoria
2026-09-18 15:44 ` Arnaldo Carvalho de Melo
2026-09-19 2:38 ` Ravi Bangoria
2026-09-16 22:27 ` [PATCH v6 0/12] perf tools: Annotate fixes, stdio progress indication, debuginfo-client in more places Namhyung Kim
2026-09-17 9:04 ` Arnaldo Melo
-- strict thread matches above, loose matches on Subject: below --
2026-09-16 18:32 Arnaldo Carvalho de Melo
2026-09-16 18:32 ` [PATCH 11/12] perf mem record: Request PERF_SAMPLE_CPU by default Arnaldo Carvalho de Melo
2026-09-16 18:45 ` sashiko-bot
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=aqsPKGVUkWk6wvYA@google.com \
--to=namhyung@kernel.org \
--cc=acme@kernel.org \
--cc=acme@redhat.com \
--cc=adrian.hunter@intel.com \
--cc=irogers@google.com \
--cc=james.clark@linaro.org \
--cc=jolsa@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=tglx@linutronix.de \
--cc=williams@redhat.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.