All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jiri Olsa <jolsa@redhat.com>
To: Ian Rogers <irogers@google.com>
Cc: Peter Zijlstra <peterz@infradead.org>,
	Ingo Molnar <mingo@redhat.com>,
	Arnaldo Carvalho de Melo <acme@kernel.org>,
	Mark Rutland <mark.rutland@arm.com>,
	Alexander Shishkin <alexander.shishkin@linux.intel.com>,
	Namhyung Kim <namhyung@kernel.org>,
	linux-kernel@vger.kernel.org, Andi Kleen <ak@linux.intel.com>,
	Jin Yao <yao.jin@linux.intel.com>,
	John Garry <john.garry@huawei.com>, Paul Clarke <pc@us.ibm.com>,
	kajoljain <kjain@linux.ibm.com>,
	linux-perf-users@vger.kernel.org,
	Stephane Eranian <eranian@google.com>,
	Sandeep Dasgupta <sdasgup@google.com>
Subject: Re: [PATCH v9 00/13] Don't compute events that won't be used in a metric.
Date: Wed, 29 Sep 2021 07:35:19 +0200	[thread overview]
Message-ID: <YVP7F0NsKR8KIqX4@krava> (raw)
In-Reply-To: <20210923074616.674826-1-irogers@google.com>

On Thu, Sep 23, 2021 at 12:46:03AM -0700, Ian Rogers wrote:
> 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.
> 
> v9. adds a missing memory allocation failure check in the pmu-metrics
>     test.  A memory allocation failure in union returns NULL. Some
>     parser debug on IDs is removed. "Modify code layout" is broken
>     apart into 3 changes.  "Don't compute unused events" is broken
>     apart into 4 changes with the tests merged into the change that
>     adds the corresponding optimization. This is trying to address
>     feedback from Jiri Olsa <jolsa@redhat.com>.  The unmodified
>     patches have Reviewed-by: Andi Kleen <ak@linux.intel.com> added,
>     although the overall patch set is largely the same as v8 which was
>     fully reviewed-by.

Acked-by: Jiri Olsa <jolsa@redhat.com>

thanks,
jirka

> 
> v8. rebases, adds an ability to compute metrics with no events and
>     further breaks apart the "Don't compute unused events" part of the
>     change as requested by Jiri Olsa <jolsa@redhat.com>.
> 
> v7. fixes the fix to be in the correct patch.
> 
> v6. rebases and fixes issues raised by Namhyung Kim <namhyung@kernel.org>,
> a memory leak and a function comment.
> 
> v5. uses macros to reduce boiler plate in patch 5/5 as suggested by
> Andi Kleen <ak@linux.intel.com>.
> 
> 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 (13):
>   perf metric: Restructure struct expr_parse_ctx.
>   perf metric: Use NAN for missing event IDs.
>   perf expr: Remove unused headers and inline d_ratio
>   perf expr: Separate token declataion from type
>   perf expr: Use macros for operators
>   perf expr: Move actions to the left.
>   perf metric: Rename expr__find_other.
>   perf metric: Add utilities to work on ids map.
>   perf metric: Allow metrics with no events
>   perf expr: Merge find_ids and regular parsing
>   perf expr: Propagate constants for binary operations
>   perf metric: Don't compute unused events
>   perf metric: Avoid events for an 'if' constant result
> 
>  tools/perf/tests/expr.c       | 160 ++++++++++++-----
>  tools/perf/tests/pmu-events.c |  54 +++---
>  tools/perf/util/expr.c        | 121 +++++++++++--
>  tools/perf/util/expr.h        |  20 ++-
>  tools/perf/util/expr.l        |   9 -
>  tools/perf/util/expr.y        | 325 +++++++++++++++++++++++++---------
>  tools/perf/util/metricgroup.c | 145 ++++++++-------
>  tools/perf/util/stat-shadow.c |  54 +++---
>  8 files changed, 620 insertions(+), 268 deletions(-)
> 
> -- 
> 2.33.0.464.g1972c5931b-goog
> 


  parent reply	other threads:[~2021-09-29  5:35 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-23  7:46 [PATCH v9 00/13] Don't compute events that won't be used in a metric Ian Rogers
2021-09-23  7:46 ` [PATCH v9 01/13] perf metric: Restructure struct expr_parse_ctx Ian Rogers
2021-09-23  7:46 ` [PATCH v9 02/13] perf metric: Use NAN for missing event IDs Ian Rogers
2021-09-23  7:46 ` [PATCH v9 03/13] perf expr: Remove unused headers and inline d_ratio Ian Rogers
2021-09-23  7:46 ` [PATCH v9 04/13] perf expr: Separate token declataion from type Ian Rogers
2021-09-23  7:46 ` [PATCH v9 05/13] perf expr: Use macros for operators Ian Rogers
2021-09-23  7:46 ` [PATCH v9 06/13] perf expr: Move actions to the left Ian Rogers
2021-09-23  7:46 ` [PATCH v9 07/13] perf metric: Rename expr__find_other Ian Rogers
2021-09-23  7:46 ` [PATCH v9 08/13] perf metric: Add utilities to work on ids map Ian Rogers
2021-09-23  7:46 ` [PATCH v9 09/13] perf metric: Allow metrics with no events Ian Rogers
2021-09-23  7:46 ` [PATCH v9 10/13] perf expr: Merge find_ids and regular parsing Ian Rogers
2021-09-28 20:56   ` Jiri Olsa
2021-09-28 21:20     ` Ian Rogers
2021-09-23  7:46 ` [PATCH v9 11/13] perf expr: Propagate constants for binary operations Ian Rogers
2021-09-23  7:46 ` [PATCH v9 12/13] perf metric: Don't compute unused events Ian Rogers
2021-09-23  7:46 ` [PATCH v9 13/13] perf metric: Avoid events for an 'if' constant result Ian Rogers
2021-09-29  5:35 ` Jiri Olsa [this message]
2021-09-29 15:19 ` [PATCH v9 00/13] Don't compute events that won't be used in a metric John Garry
2021-09-29 16:09   ` Ian Rogers
2021-09-29 16:51     ` Arnaldo Carvalho de Melo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=YVP7F0NsKR8KIqX4@krava \
    --to=jolsa@redhat.com \
    --cc=acme@kernel.org \
    --cc=ak@linux.intel.com \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=eranian@google.com \
    --cc=irogers@google.com \
    --cc=john.garry@huawei.com \
    --cc=kjain@linux.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=mingo@redhat.com \
    --cc=namhyung@kernel.org \
    --cc=pc@us.ibm.com \
    --cc=peterz@infradead.org \
    --cc=sdasgup@google.com \
    --cc=yao.jin@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.