[PATCH v3 0/9] perf mem/c2c: Support AUX trace

Leo Yan
2020-10-28T06:39:12Z

The patch set v2 [1] mixed the patches for support perf mem/c2c AUX
trace and for enabling Arm SPE's memory event. To make easier
reviewing, this patch set extracts the changes for perf mem/c2c AUX
trace.

Patches 01, 02, 03 extend to support more flexible memory event name
and introduce a new event type 'ldst' (besides the existed types 'load'
and 'store').

Patch 04 is a minor refactoring to initailize memory event for recording
but not for reporting.

Patches 05, 06 are to support AUX trace for "perf mem" and "perf c2c"
tools.

Patch 07 enabled SPE memory events for Arm64 arch; patch 08 fixes the
memory event name issue on PowerPC.

Patch 09 is to update documentation to reflect the latest changes.

This patch set has been applied clearly on the perf/core branch with the
latest commit 7cf726a59435 ("Merge tag 'linux-kselftest-kunit-5.10-rc1'
of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest").

This patch set has been verified on x86 and Arm64.

On x86, below commands have been tested:

# perf c2c record -e ldlat-loads -- ~/false_sharing.exe 2
# perf c2c record -e ldlat-stores -- ~/false_sharing.exe 2
# perf mem record -t load -- ~/false_sharing.exe 2
# perf mem record -t store -- ~/false_sharing.exe 2
# perf mem record -t ldst -- ~/false_sharing.exe 2
`-> report failure due the type 'ldst' is not supported on x86
# perf mem record -e ldlat-loads -- ~/false_sharing.exe 2
# perf mem record -e ldlat-stores -- ~/false_sharing.exe 2

On Arm64, below commands have been tested:

# perf c2c record -e spe-load -- ~/false_sharing.exe 2
# perf c2c record -e spe-store -- ~/false_sharing.exe 2
# perf c2c record -e spe-ldst -- ~/false_sharing.exe 2
# perf mem record -t load -- ~/false_sharing.exe 2
# perf mem record -t store -- ~/false_sharing.exe 2
# perf mem record -t ldst -- ~/false_sharing.exe 2
# perf mem record -e spe-load -- ~/false_sharing.exe 2
# perf mem record -e spe-store -- ~/false_sharing.exe 2
# perf mem record -e spe-ldst -- ~/false_sharing.exe 2

[1] https://lore.kernel.org/patchwork/cover/1298085/

Leo Yan (9):
perf mem: Search event name with more flexible path
perf mem: Introduce weak function perf_mem_events__ptr()
perf mem: Support new memory event PERF_MEM_EVENTS__LOAD_STORE
perf mem: Only initialize memory event for recording
perf mem: Support AUX trace
perf c2c: Support AUX trace
perf mem: Support Arm SPE events
perf mem: Return NULL for event 'ldst' on PowerPC
perf mem: Document event type 'ldst'

Changes from v2:
* Patch 02 went back to use loops with PERF_MEM_EVENTS__MAX (Jiri);
* Patch 06 for "perf c2c" AUX trace is supported;
* Patch 08 for fixing memory event name on PowerPC.

Changes from v1:
* Refined patch 02 to use perf_mem_events__ptr() to return event pointer
and check if pointer is NULL, and remove the condition checking for
PERF_MEM_EVENTS__MAX; (James Clark)
* Added new itrace option 'M' for memory events;
* Added patch 14 to update documentation.

tools/perf/Documentation/perf-mem.txt | 6 ++-
tools/perf/arch/arm64/util/Build | 2 +-
tools/perf/arch/arm64/util/mem-events.c | 37 +++++++++++++++++
tools/perf/arch/powerpc/util/mem-events.c | 6 ++-
tools/perf/builtin-c2c.c | 22 +++++++---
tools/perf/builtin-mem.c | 49 ++++++++++++++++-------
tools/perf/util/mem-events.c | 45 ++++++++++++++++-----
tools/perf/util/mem-events.h | 3 +-
8 files changed, 133 insertions(+), 37 deletions(-)
create mode 100644 tools/perf/arch/arm64/util/mem-events.c