tools/perf: Add mem_hops field in perf_mem_data_src structure
authorKajol Jain <kjain@linux.ibm.com>
Wed, 6 Oct 2021 14:06:53 +0000 (19:36 +0530)
committerPeter Zijlstra <peterz@infradead.org>
Tue, 19 Oct 2021 15:27:00 +0000 (17:27 +0200)
commitcae1d759065ee989de246d4a72bc2bfe9ad9d262
treed43caaba75be3612afcad94c623eaa177c576e91
parentfec9cc6175d0ec1e13efe12be491d9bd4de62f80
tools/perf: Add mem_hops field in perf_mem_data_src structure

Going forward, future generation systems can have more hierarchy
within the node/package level but currently we don't have any data source
encoding field in perf, which can be used to represent this level of data.

Add a new field called 'mem_hops' in the perf_mem_data_src structure
which can be used to represent intra-node/package or inter-node/off-package
details. This field is of size 3 bits where PERF_MEM_HOPS_{NA, 0..6} value
can be used to present different hop levels data.

Also add corresponding macros to define mem_hop field values
and shift value.

Currently we define macro for HOPS_0 which corresponds
to data coming from another core but same node.

Add functionality to represent mem_hop field data in
perf_mem__lvl_scnprintf function with the help of added string
array called mem_hops.

For ex: Encodings for mem_hops fields with L2 cache:

L2                      - local L2
L2 | REMOTE | HOPS_0    - remote core, same node L2

Since with the addition of HOPS field, now remote can be used to
denote cache access from the same node but different core, a check
is added in the c2c_decode_stats function to set mrem only when HOPS
is zero along with set remote field.

Signed-off-by: Kajol Jain <kjain@linux.ibm.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lore.kernel.org/r/20211006140654.298352-4-kjain@linux.ibm.com
tools/include/uapi/linux/perf_event.h
tools/perf/util/mem-events.c