Adding Intel DATALA memory events into perf mem record command: $ perf mem record -e list [ok] ldlat-loads [ok] ldlat-stores stlb-miss-loads stlb-miss-stores lock-loads split-loads split-stores all-loads all-stores l1-hit l2-hit l3-hit l1-miss l2-miss l3-miss lfb snp-miss snp-hit snp-hitm snp-none local-dram
All events from above lists are compiled in, but only those with [ok] are supported by kernel/HW. You need previous DATALA patch to support all of them. Link: http://lkml.kernel.org/n/tip-cximteb8r1a6750wz8sge...@git.kernel.org Signed-off-by: Jiri Olsa <jo...@kernel.org> --- tools/perf/util/mem-events.c | 19 +++++++++++++++++++ tools/perf/util/mem-events.h | 19 +++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/tools/perf/util/mem-events.c b/tools/perf/util/mem-events.c index 3772a3a8a6ee..92d3bc9914e6 100644 --- a/tools/perf/util/mem-events.c +++ b/tools/perf/util/mem-events.c @@ -16,6 +16,25 @@ unsigned int perf_mem_events__loads_ldlat = 30; struct perf_mem_event perf_mem_events[PERF_MEM_EVENTS__MAX] = { E("ldlat-loads", "cpu/mem-loads,ldlat=%u/P", "mem-loads"), E("ldlat-stores", "cpu/mem-stores/P", "mem-stores"), + E("stlb-miss-loads", "cpu/mem-stlb-miss-loads/P", "mem-stlb-miss-loads"), + E("stlb-miss-stores", "cpu/mem-stlb-miss-stores/P", "mem-stlb-miss-stores"), + E("lock-loads", "cpu/mem-lock-loads/P", "mem-lock-loads"), + E("split-loads", "cpu/mem-split-loads/P", "mem-split-loads"), + E("split-stores", "cpu/mem-split-stores/P", "mem-split-stores"), + E("all-loads", "cpu/mem-all-loads/P", "mem-all-loads"), + E("all-stores", "cpu/mem-all-stores/P", "mem-all-stores"), + E("l1-hit", "cpu/mem-load-l1-hit/P", "mem-load-l1-hit"), + E("l2-hit", "cpu/mem-load-l2-hit/P", "mem-load-l2-hit"), + E("l3-hit", "cpu/mem-load-l3-hit/P", "mem-load-l3-hit"), + E("l1-miss", "cpu/mem-load-l1-miss/P", "mem-load-l1-miss"), + E("l2-miss", "cpu/mem-load-l2-miss/P", "mem-load-l2-miss"), + E("l3-miss", "cpu/mem-load-l3-miss/P", "mem-load-l3-miss"), + E("lfb", "cpu/mem-load-hit-lfb/P", "mem-load-hit-lfb"), + E("snp-miss", "cpu/mem-snp-miss/P", "mem-snp-miss"), + E("snp-hit", "cpu/mem-snp-hit/P", "mem-snp-hit"), + E("snp-hitm", "cpu/mem-snp-hitm/P", "mem-snp-hitm"), + E("snp-none", "cpu/mem-snp-none/P", "mem-snp-none"), + E("local-dram", "cpu/mem-local-dram/P", "mem-local-dram"), }; #undef E diff --git a/tools/perf/util/mem-events.h b/tools/perf/util/mem-events.h index d690907f7e50..4abf606b256b 100644 --- a/tools/perf/util/mem-events.h +++ b/tools/perf/util/mem-events.h @@ -14,6 +14,25 @@ struct perf_mem_event { enum { PERF_MEM_EVENTS__LOAD, PERF_MEM_EVENTS__STORE, + PERF_MEM_EVENTS__STLB_MISS_LOADS, + PERF_MEM_EVENTS__STLB_MISS_STORES, + PERF_MEM_EVENTS__LOCK_LOADS, + PERF_MEM_EVENTS__SPLIT_LOADS, + PERF_MEM_EVENTS__SPLIT_STORES, + PERF_MEM_EVENTS__ALL_LOADS, + PERF_MEM_EVENTS__ALL_STORES, + PERF_MEM_EVENTS__L1_HIT, + PERF_MEM_EVENTS__L2_HIT, + PERF_MEM_EVENTS__L3_HIT, + PERF_MEM_EVENTS__L1_MISS, + PERF_MEM_EVENTS__L2_MISS, + PERF_MEM_EVENTS__L3_MISS, + PERF_MEM_EVENTS__LFB, + PERF_MEM_EVENTS__SNP_MISS, + PERF_MEM_EVENTS__SNP_HIT, + PERF_MEM_EVENTS__SNP_HITM, + PERF_MEM_EVENTS__SNP_NONE, + PERF_MEM_EVENTS__LOCAL_DRAM, PERF_MEM_EVENTS__MAX, }; -- 2.4.3