On 12/07/2020 14:26, Jiri Olsa wrote:
hi,
this patchset is adding the support to reused metric in another
metric. The metric needs to be referenced by 'metric:' prefix.

For example, to define IPC by using CPI with change like:

          "BriefDescription": "Instructions Per Cycle (per Logical Processor)",
  -       "MetricExpr": "INST_RETIRED.ANY / CPU_CLK_UNHALTED.THREAD",
  +       "MetricExpr": "1/metric:CPI",
          "MetricGroup": "TopDownL1",
          "MetricName": "IPC"

I won't be able to find all the possible places we could
use this at, so I wonder you guys (who was asking for this)
would try it and come up with comments if there's something
missing or we could already use it at some places.

It's based on Arnaldo's tmp.perf/core.

v2 changes:
   - collected Ian's acks for few patches [Ian]
   - renamed expr__add_id to expr__add_id_val [Ian]
   - renamed expr_parse_data to expr_id_data [Ian]
   - added recursion check [Ian]
   - added metric test for DCache_L2 metric [Ian]
   - added some renames as discussed in review [Ian]

Also available in here:
   git://git.kernel.org/pub/scm/linux/kernel/git/jolsa/perf.git
   perf/metric

thanks,
jirka


---
Jiri Olsa (18):
       perf metric: Rename expr__add_id to expr__add_val
       perf metric: Add struct expr_id_data to keep expr value
       perf metric: Add expr__add_id function
       perf metric: Change expr__get_id to return struct expr_id_data
       perf metric: Add expr__del_id function
       perf metric: Add find_metric function
       perf metric: Add add_metric function
       perf metric: Rename __metricgroup__add_metric to __add_metric
       perf metric: Collect referenced metrics in struct metric_ref_node
       perf metric: Collect referenced metrics in struct metric_expr
       perf metric: Add referenced metrics to hash data
       perf metric: Compute referenced metrics
       perf metric: Add events for the current group
       perf metric: Add cache_miss_cycles to metric parse test
       perf metric: Add DCache_L2 to metric parse test
       perf metric: Add recursion check when processing nested metrics
       perf metric: Rename struct egroup to metric
       perf metric: Rename group_list to list

I was thinking that a test metric using this reuse feature could be added in pmu-events/arch/test/test_cpu. But since no relevant parsing is done in jevents, maybe not a lot of value. Just for a bit more completeness.

Thanks,
John


  tools/perf/tests/expr.c         |   7 +-
  tools/perf/tests/parse-metric.c | 131 +++++++++++++++++++++++++++++++++++-
  tools/perf/tests/pmu-events.c   |   4 +-
  tools/perf/util/expr.c          | 130 ++++++++++++++++++++++++++++++------
  tools/perf/util/expr.h          |  34 +++++++++-
  tools/perf/util/expr.y          |  16 +++--
  tools/perf/util/metricgroup.c   | 435 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------
  tools/perf/util/metricgroup.h   |   6 ++
  tools/perf/util/stat-shadow.c   |  24 ++++---
  9 files changed, 644 insertions(+), 143 deletions(-)

.


Reply via email to