public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4 0/5] Don't compute events that won't be used in a metric.
@ 2020-12-02  6:26 Ian Rogers
  2020-12-02  6:26 ` [PATCH v4 1/5] perf metric: Restructure struct expr_parse_ctx Ian Rogers
                   ` (4 more replies)
  0 siblings, 5 replies; 8+ messages in thread
From: Ian Rogers @ 2020-12-02  6:26 UTC (permalink / raw)
  To: Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo,
	Mark Rutland, Alexander Shishkin, Jiri Olsa, Namhyung Kim,
	linux-kernel, Andi Kleen, Jin Yao, John Garry, Paul Clarke,
	kajoljain
  Cc: Stephane Eranian, Sandeep Dasgupta, Ian Rogers

    
For a metric like:
  EVENT1 if #smt_on else EVENT2
    
currently EVENT1 and EVENT2 will be measured and then when the metric
is reported EVENT1 or EVENT2 will be printed depending on the value
from smt_on() during the expr parsing. Computing both events is
unnecessary and can lead to multiplexing as discussed in this thread:
https://lore.kernel.org/lkml/20201110100346.2527031-1-irogers@google.com/

This change modifies expression parsing so that constants are
considered when building the set of ids (events) and only events not
contributing to a constant value are measured.

v4. reduces references to BOTTOM/NAN in patch 5/5 by using utility
functions. It improves comments and fixes an unnecessary union in a
peephole optimization.

v3. fixes an assignment in patch 2/5. In patch 5/5 additional comments
are added and useless frees are replaced by asserts. A new peephole
optimization is added for the case CONST IF expr ELSE CONST, where the
the constants are identical, as we don't need to evaluate the IF
condition.

v2. is a rebase.

Ian Rogers (5):
  perf metric: Restructure struct expr_parse_ctx.
  perf metric: Use NAN for missing event IDs.
  perf metric: Rename expr__find_other.
  perf metric: Add utilities to work on ids map.
  perf metric: Don't compute unused events.

 tools/perf/tests/expr.c       | 159 +++++++++----
 tools/perf/tests/pmu-events.c |  42 ++--
 tools/perf/util/expr.c        | 136 +++++++++--
 tools/perf/util/expr.h        |  17 +-
 tools/perf/util/expr.l        |   9 -
 tools/perf/util/expr.y        | 418 +++++++++++++++++++++++++++-------
 tools/perf/util/metricgroup.c |  44 ++--
 tools/perf/util/stat-shadow.c |  54 +++--
 8 files changed, 658 insertions(+), 221 deletions(-)

-- 
2.29.2.454.gaff20da3a2-goog


^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2020-12-02  6:57 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-12-02  6:26 [PATCH v4 0/5] Don't compute events that won't be used in a metric Ian Rogers
2020-12-02  6:26 ` [PATCH v4 1/5] perf metric: Restructure struct expr_parse_ctx Ian Rogers
2020-12-02  6:26 ` [PATCH v4 2/5] perf metric: Use NAN for missing event IDs Ian Rogers
2020-12-02  6:26 ` [PATCH v4 3/5] perf metric: Rename expr__find_other Ian Rogers
2020-12-02  6:26 ` [PATCH v4 4/5] perf metric: Add utilities to work on ids map Ian Rogers
2020-12-02  6:26 ` [PATCH v4 5/5] perf metric: Don't compute unused events Ian Rogers
2020-12-02  6:36   ` Andi Kleen
     [not found]     ` <CAP-5=fVMuRCZEyG+s3z2gw3OvcDdtE1Kwe-7LG7uXOKfwmzFcA@mail.gmail.com>
2020-12-02  6:55       ` Andi Kleen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox