mirror of
https://github.com/torvalds/linux.git
synced 2026-11-06 21:58:01 +01:00
perf mem record: Request PERF_SAMPLE_CPU by default
The data type profiling per-sample stream keys cross-CPU contention on sample->cpu, which without PERF_SAMPLE_CPU is the "no CPU info" sentinel, making same-instance accesses from different cores indistinguishable from same-CPU traffic. 'perf mem record' already passes -d and -W to the record parser, add --sample-cpu and document it in perf-mem(1). Also grow rec_argv: the new entry overflows it on PMUs with separate load and store events, as the space for the fixed arguments was not reserved. Reviewed-by: Ian Rogers <irogers@google.com> Reviewed-by: Namhyung Kim <namhyung@kernel.org> Assisted-by: LLM Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
02ee4666a0
commit
010147f87a
|
|
@ -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.
|
||||
|
||||
"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
|
||||
|
|
|
|||
|
|
@ -99,8 +99,8 @@ 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 per PMU plus the fixed ones added below. */
|
||||
rec_argc = argc + 8 + 9 * (perf_pmu__mem_events_num_mem_pmus(pmu) + 1);
|
||||
|
||||
if (mem->cpu_list)
|
||||
rec_argc += 2;
|
||||
|
|
@ -135,6 +135,9 @@ static int __cmd_record(int argc, const char **argv, struct perf_mem *mem,
|
|||
|
||||
rec_argv[i++] = "-d";
|
||||
|
||||
/* Cross-CPU contention keys on sample->cpu, -1 without PERF_SAMPLE_CPU. */
|
||||
rec_argv[i++] = "--sample-cpu";
|
||||
|
||||
if (mem->phys_addr)
|
||||
rec_argv[i++] = "--phys-data";
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user