From 9aba0adae8c773ba0c0adc7c4d97768e044166cb Mon Sep 17 00:00:00 2001 From: Ian Rogers Date: Wed, 10 Nov 2021 16:21:09 -0800 Subject: perf expr: Add source_count for aggregating events Events like uncore_imc/cas_count_read/ on Skylake open multiple events and then aggregate in the metric leader. To determine the average value per event the number of these events is needed. Add a source_count function that returns this value by counting the number of events with the given metric leader. For most events the value is 1 but for uncore_imc/cas_count_read/ it can yield values like 6. Add a generic test, but manually tested with a test metric that uses the function. Signed-off-by: Ian Rogers Acked-by: Jiri Olsa Cc: Alexander Shishkin Cc: Andi Kleen Cc: Ingo Molnar Cc: John Garry Cc: Kajol Jain Cc: Kan Liang Cc: Madhavan Srinivasan Cc: Mark Rutland Cc: Namhyung Kim Cc: Paul A . Clarke Cc: Peter Zijlstra Cc: Riccardo Mancini Cc: Song Liu Cc: Wan Jiabing Cc: Yury Norov Link: https://lore.kernel.org/r/20211111002109.194172-9-irogers@google.com Signed-off-by: Arnaldo Carvalho de Melo --- tools/perf/util/expr.l | 1 + 1 file changed, 1 insertion(+) (limited to 'tools/perf/util/expr.l') diff --git a/tools/perf/util/expr.l b/tools/perf/util/expr.l index cf6e3c710502..0a13eb20c814 100644 --- a/tools/perf/util/expr.l +++ b/tools/perf/util/expr.l @@ -107,6 +107,7 @@ max { return MAX; } min { return MIN; } if { return IF; } else { return ELSE; } +source_count { return SOURCE_COUNT; } {literal} { return literal(yyscanner); } {number} { return value(yyscanner); } {symbol} { return str(yyscanner, ID, sctx->runtime); } -- cgit v1.2.3