[PATCH v1 00/22] Improvements to Intel perf metrics

Ian Rogers posted 22 patches 3 years, 6 months ago
There is a newer version of this series
.../arch/x86/alderlake/adl-metrics.json       | 1215 ++++++++++++++++-
.../pmu-events/arch/x86/alderlake/cache.json  |  129 +-
.../arch/x86/alderlake/frontend.json          |   12 +
.../pmu-events/arch/x86/alderlake/memory.json |   22 +
.../pmu-events/arch/x86/alderlake/other.json  |   22 +
.../arch/x86/alderlake/pipeline.json          |   14 +-
.../arch/x86/broadwell/bdw-metrics.json       |  603 ++++++--
.../arch/x86/broadwellde/bdwde-metrics.json   |  639 +++++++--
.../arch/x86/broadwellx/bdx-metrics.json      |  644 +++++++--
.../arch/x86/broadwellx/uncore-cache.json     |   10 +-
.../x86/broadwellx/uncore-interconnect.json   |   18 +-
.../arch/x86/broadwellx/uncore-memory.json    |   18 +-
.../arch/x86/cascadelakex/clx-metrics.json    |  893 ++++++++----
.../arch/x86/cascadelakex/uncore-memory.json  |   18 +-
.../arch/x86/cascadelakex/uncore-other.json   |   10 +-
.../pmu-events/arch/x86/haswell/cache.json    |    4 +-
.../pmu-events/arch/x86/haswell/frontend.json |   12 +-
.../arch/x86/haswell/hsw-metrics.json         |  502 +++++--
.../pmu-events/arch/x86/haswellx/cache.json   |    2 +-
.../arch/x86/haswellx/frontend.json           |   12 +-
.../arch/x86/haswellx/hsx-metrics.json        |  707 +++++++---
.../x86/haswellx/uncore-interconnect.json     |   18 +-
.../arch/x86/haswellx/uncore-memory.json      |   18 +-
.../pmu-events/arch/x86/icelake/cache.json    |    6 +-
.../arch/x86/icelake/icl-metrics.json         |  725 +++++++++-
.../pmu-events/arch/x86/icelake/pipeline.json |    2 +-
.../pmu-events/arch/x86/icelakex/cache.json   |    6 +-
.../arch/x86/icelakex/icx-metrics.json        |  794 ++++++++++-
.../arch/x86/icelakex/pipeline.json           |    2 +-
.../arch/x86/icelakex/uncore-other.json       |    2 +-
.../arch/x86/ivybridge/ivb-metrics.json       |  525 +++++--
.../pmu-events/arch/x86/ivytown/cache.json    |    4 +-
.../arch/x86/ivytown/floating-point.json      |    2 +-
.../pmu-events/arch/x86/ivytown/frontend.json |   18 +-
.../arch/x86/ivytown/ivt-metrics.json         |  558 ++++++--
.../arch/x86/ivytown/uncore-cache.json        |   58 +-
.../arch/x86/ivytown/uncore-interconnect.json |   84 +-
.../arch/x86/ivytown/uncore-memory.json       |    2 +-
.../arch/x86/ivytown/uncore-other.json        |    6 +-
.../arch/x86/ivytown/uncore-power.json        |    8 +-
.../arch/x86/jaketown/jkt-metrics.json        |  291 ++--
tools/perf/pmu-events/arch/x86/mapfile.csv    |   18 +-
.../arch/x86/sandybridge/snb-metrics.json     |  279 +++-
.../arch/x86/sapphirerapids/cache.json        |    4 +-
.../arch/x86/sapphirerapids/frontend.json     |   11 +
.../arch/x86/sapphirerapids/pipeline.json     |    4 +-
.../arch/x86/sapphirerapids/spr-metrics.json  |  858 +++++++++++-
.../arch/x86/skylake/skl-metrics.json         |  774 ++++++++---
.../arch/x86/skylakex/skx-metrics.json        |  859 +++++++++---
.../arch/x86/skylakex/uncore-memory.json      |   18 +-
.../arch/x86/skylakex/uncore-other.json       |   19 +-
.../arch/x86/tigerlake/tgl-metrics.json       |  727 +++++++++-
tools/perf/tests/expr.c                       |    4 +
tools/perf/util/expr.c                        |   11 +-
tools/perf/util/expr.y                        |    2 +-
tools/perf/util/stat-shadow.c                 |    9 +-
56 files changed, 10103 insertions(+), 2129 deletions(-)
[PATCH v1 00/22] Improvements to Intel perf metrics
Posted by Ian Rogers 3 years, 6 months ago
For consistency with:
https://github.com/intel/perfmon-metrics
rename of topdown TMA metrics from Frontend_Bound to tma_frontend_bound.

Remove _SMT suffix metrics are dropped as the #SMT_On and #EBS_Mode
are correctly expanded in the single main metric. Fix perf expr to
allow a double if to be correctly processed.

Add all 6 levels of TMA metrics. Child metrics are placed in a group
named after their parent allowing children of a metric to be
easily measured using the metric name with a _group suffix.

Don't drop TMA metrics if they contain topdown events.

The ## and ##? operators are correctly expanded.

The locate-with column is added to the long description describing a
sampling event.

Metrics are written in terms of other metrics to reduce the expression
size and increase readability.

Following this the pmu-events/arch/x86 directories match those created
by the script at:
https://github.com/intel/event-converter-for-linux-perf/blob/master/download_and_gen.py
with updates at:
https://github.com/captain5050/event-converter-for-linux-perf

Ian Rogers (22):
  perf expr: Allow a double if expression
  perf expr: Remove jevents case workaround
  perf metrics: Don't scale counts going into metrics
  perf vendor events: Update Intel skylakex
  perf vendor events: Update Intel alderlake
  perf vendor events: Update Intel broadwell
  perf vendor events: Update Intel broadwellx
  perf vendor events: Update Intel cascadelakex
  perf vendor events: Update elkhartlake cpuids
  perf vendor events: Update Intel haswell
  perf vendor events: Update Intel haswellx
  perf vendor events: Update Intel icelake
  perf vendor events: Update Intel icelakex
  perf vendor events: Update Intel ivybridge
  perf vendor events: Update Intel ivytown
  perf vendor events: Update Intel jaketown
  perf vendor events: Update Intel sandybridge
  perf vendor events: Update Intel sapphirerapids
  perf vendor events: Update silvermont cpuids
  perf vendor events: Update Intel skylake
  perf vendor events: Update Intel tigerlake
  perf vendor events: Update Intel broadwellde

 .../arch/x86/alderlake/adl-metrics.json       | 1215 ++++++++++++++++-
 .../pmu-events/arch/x86/alderlake/cache.json  |  129 +-
 .../arch/x86/alderlake/frontend.json          |   12 +
 .../pmu-events/arch/x86/alderlake/memory.json |   22 +
 .../pmu-events/arch/x86/alderlake/other.json  |   22 +
 .../arch/x86/alderlake/pipeline.json          |   14 +-
 .../arch/x86/broadwell/bdw-metrics.json       |  603 ++++++--
 .../arch/x86/broadwellde/bdwde-metrics.json   |  639 +++++++--
 .../arch/x86/broadwellx/bdx-metrics.json      |  644 +++++++--
 .../arch/x86/broadwellx/uncore-cache.json     |   10 +-
 .../x86/broadwellx/uncore-interconnect.json   |   18 +-
 .../arch/x86/broadwellx/uncore-memory.json    |   18 +-
 .../arch/x86/cascadelakex/clx-metrics.json    |  893 ++++++++----
 .../arch/x86/cascadelakex/uncore-memory.json  |   18 +-
 .../arch/x86/cascadelakex/uncore-other.json   |   10 +-
 .../pmu-events/arch/x86/haswell/cache.json    |    4 +-
 .../pmu-events/arch/x86/haswell/frontend.json |   12 +-
 .../arch/x86/haswell/hsw-metrics.json         |  502 +++++--
 .../pmu-events/arch/x86/haswellx/cache.json   |    2 +-
 .../arch/x86/haswellx/frontend.json           |   12 +-
 .../arch/x86/haswellx/hsx-metrics.json        |  707 +++++++---
 .../x86/haswellx/uncore-interconnect.json     |   18 +-
 .../arch/x86/haswellx/uncore-memory.json      |   18 +-
 .../pmu-events/arch/x86/icelake/cache.json    |    6 +-
 .../arch/x86/icelake/icl-metrics.json         |  725 +++++++++-
 .../pmu-events/arch/x86/icelake/pipeline.json |    2 +-
 .../pmu-events/arch/x86/icelakex/cache.json   |    6 +-
 .../arch/x86/icelakex/icx-metrics.json        |  794 ++++++++++-
 .../arch/x86/icelakex/pipeline.json           |    2 +-
 .../arch/x86/icelakex/uncore-other.json       |    2 +-
 .../arch/x86/ivybridge/ivb-metrics.json       |  525 +++++--
 .../pmu-events/arch/x86/ivytown/cache.json    |    4 +-
 .../arch/x86/ivytown/floating-point.json      |    2 +-
 .../pmu-events/arch/x86/ivytown/frontend.json |   18 +-
 .../arch/x86/ivytown/ivt-metrics.json         |  558 ++++++--
 .../arch/x86/ivytown/uncore-cache.json        |   58 +-
 .../arch/x86/ivytown/uncore-interconnect.json |   84 +-
 .../arch/x86/ivytown/uncore-memory.json       |    2 +-
 .../arch/x86/ivytown/uncore-other.json        |    6 +-
 .../arch/x86/ivytown/uncore-power.json        |    8 +-
 .../arch/x86/jaketown/jkt-metrics.json        |  291 ++--
 tools/perf/pmu-events/arch/x86/mapfile.csv    |   18 +-
 .../arch/x86/sandybridge/snb-metrics.json     |  279 +++-
 .../arch/x86/sapphirerapids/cache.json        |    4 +-
 .../arch/x86/sapphirerapids/frontend.json     |   11 +
 .../arch/x86/sapphirerapids/pipeline.json     |    4 +-
 .../arch/x86/sapphirerapids/spr-metrics.json  |  858 +++++++++++-
 .../arch/x86/skylake/skl-metrics.json         |  774 ++++++++---
 .../arch/x86/skylakex/skx-metrics.json        |  859 +++++++++---
 .../arch/x86/skylakex/uncore-memory.json      |   18 +-
 .../arch/x86/skylakex/uncore-other.json       |   19 +-
 .../arch/x86/tigerlake/tgl-metrics.json       |  727 +++++++++-
 tools/perf/tests/expr.c                       |    4 +
 tools/perf/util/expr.c                        |   11 +-
 tools/perf/util/expr.y                        |    2 +-
 tools/perf/util/stat-shadow.c                 |    9 +-
 56 files changed, 10103 insertions(+), 2129 deletions(-)

-- 
2.37.3.998.g577e59143f-goog
Re: [PATCH v1 00/22] Improvements to Intel perf metrics
Posted by Liang, Kan 3 years, 6 months ago

On 2022-09-28 3:21 a.m., Ian Rogers wrote:
> For consistency with:
> https://github.com/intel/perfmon-metrics
> rename of topdown TMA metrics from Frontend_Bound to tma_frontend_bound.
>

If so, all the scripts with the old name must be broken on the existing
platforms. Can we keep both old name and new name for the existing
platforms?

For the event naming, if we want to rename an event. We still keep the
old name and mark it as deprecated in the existing platforms to maintain
compatibility.

Can we do the similar thing for metrics?
For the existing platforms, just add all the metrics from the
perfmon-metrics and don't change the existing metrics unless they have
errors.

Thanks,
Kan
> Remove _SMT suffix metrics are dropped as the #SMT_On and #EBS_Mode
> are correctly expanded in the single main metric. Fix perf expr to
> allow a double if to be correctly processed.
> 
> Add all 6 levels of TMA metrics. Child metrics are placed in a group
> named after their parent allowing children of a metric to be
> easily measured using the metric name with a _group suffix.
> 
> Don't drop TMA metrics if they contain topdown events.
> 
> The ## and ##? operators are correctly expanded.
> 
> The locate-with column is added to the long description describing a
> sampling event.
> 
> Metrics are written in terms of other metrics to reduce the expression
> size and increase readability.
> 
> Following this the pmu-events/arch/x86 directories match those created
> by the script at:
> https://github.com/intel/event-converter-for-linux-perf/blob/master/download_and_gen.py
> with updates at:
> https://github.com/captain5050/event-converter-for-linux-perf
> 
> Ian Rogers (22):
>   perf expr: Allow a double if expression
>   perf expr: Remove jevents case workaround
>   perf metrics: Don't scale counts going into metrics
>   perf vendor events: Update Intel skylakex
>   perf vendor events: Update Intel alderlake
>   perf vendor events: Update Intel broadwell
>   perf vendor events: Update Intel broadwellx
>   perf vendor events: Update Intel cascadelakex
>   perf vendor events: Update elkhartlake cpuids
>   perf vendor events: Update Intel haswell
>   perf vendor events: Update Intel haswellx
>   perf vendor events: Update Intel icelake
>   perf vendor events: Update Intel icelakex
>   perf vendor events: Update Intel ivybridge
>   perf vendor events: Update Intel ivytown
>   perf vendor events: Update Intel jaketown
>   perf vendor events: Update Intel sandybridge
>   perf vendor events: Update Intel sapphirerapids
>   perf vendor events: Update silvermont cpuids
>   perf vendor events: Update Intel skylake
>   perf vendor events: Update Intel tigerlake
>   perf vendor events: Update Intel broadwellde
> 
>  .../arch/x86/alderlake/adl-metrics.json       | 1215 ++++++++++++++++-
>  .../pmu-events/arch/x86/alderlake/cache.json  |  129 +-
>  .../arch/x86/alderlake/frontend.json          |   12 +
>  .../pmu-events/arch/x86/alderlake/memory.json |   22 +
>  .../pmu-events/arch/x86/alderlake/other.json  |   22 +
>  .../arch/x86/alderlake/pipeline.json          |   14 +-
>  .../arch/x86/broadwell/bdw-metrics.json       |  603 ++++++--
>  .../arch/x86/broadwellde/bdwde-metrics.json   |  639 +++++++--
>  .../arch/x86/broadwellx/bdx-metrics.json      |  644 +++++++--
>  .../arch/x86/broadwellx/uncore-cache.json     |   10 +-
>  .../x86/broadwellx/uncore-interconnect.json   |   18 +-
>  .../arch/x86/broadwellx/uncore-memory.json    |   18 +-
>  .../arch/x86/cascadelakex/clx-metrics.json    |  893 ++++++++----
>  .../arch/x86/cascadelakex/uncore-memory.json  |   18 +-
>  .../arch/x86/cascadelakex/uncore-other.json   |   10 +-
>  .../pmu-events/arch/x86/haswell/cache.json    |    4 +-
>  .../pmu-events/arch/x86/haswell/frontend.json |   12 +-
>  .../arch/x86/haswell/hsw-metrics.json         |  502 +++++--
>  .../pmu-events/arch/x86/haswellx/cache.json   |    2 +-
>  .../arch/x86/haswellx/frontend.json           |   12 +-
>  .../arch/x86/haswellx/hsx-metrics.json        |  707 +++++++---
>  .../x86/haswellx/uncore-interconnect.json     |   18 +-
>  .../arch/x86/haswellx/uncore-memory.json      |   18 +-
>  .../pmu-events/arch/x86/icelake/cache.json    |    6 +-
>  .../arch/x86/icelake/icl-metrics.json         |  725 +++++++++-
>  .../pmu-events/arch/x86/icelake/pipeline.json |    2 +-
>  .../pmu-events/arch/x86/icelakex/cache.json   |    6 +-
>  .../arch/x86/icelakex/icx-metrics.json        |  794 ++++++++++-
>  .../arch/x86/icelakex/pipeline.json           |    2 +-
>  .../arch/x86/icelakex/uncore-other.json       |    2 +-
>  .../arch/x86/ivybridge/ivb-metrics.json       |  525 +++++--
>  .../pmu-events/arch/x86/ivytown/cache.json    |    4 +-
>  .../arch/x86/ivytown/floating-point.json      |    2 +-
>  .../pmu-events/arch/x86/ivytown/frontend.json |   18 +-
>  .../arch/x86/ivytown/ivt-metrics.json         |  558 ++++++--
>  .../arch/x86/ivytown/uncore-cache.json        |   58 +-
>  .../arch/x86/ivytown/uncore-interconnect.json |   84 +-
>  .../arch/x86/ivytown/uncore-memory.json       |    2 +-
>  .../arch/x86/ivytown/uncore-other.json        |    6 +-
>  .../arch/x86/ivytown/uncore-power.json        |    8 +-
>  .../arch/x86/jaketown/jkt-metrics.json        |  291 ++--
>  tools/perf/pmu-events/arch/x86/mapfile.csv    |   18 +-
>  .../arch/x86/sandybridge/snb-metrics.json     |  279 +++-
>  .../arch/x86/sapphirerapids/cache.json        |    4 +-
>  .../arch/x86/sapphirerapids/frontend.json     |   11 +
>  .../arch/x86/sapphirerapids/pipeline.json     |    4 +-
>  .../arch/x86/sapphirerapids/spr-metrics.json  |  858 +++++++++++-
>  .../arch/x86/skylake/skl-metrics.json         |  774 ++++++++---
>  .../arch/x86/skylakex/skx-metrics.json        |  859 +++++++++---
>  .../arch/x86/skylakex/uncore-memory.json      |   18 +-
>  .../arch/x86/skylakex/uncore-other.json       |   19 +-
>  .../arch/x86/tigerlake/tgl-metrics.json       |  727 +++++++++-
>  tools/perf/tests/expr.c                       |    4 +
>  tools/perf/util/expr.c                        |   11 +-
>  tools/perf/util/expr.y                        |    2 +-
>  tools/perf/util/stat-shadow.c                 |    9 +-
>  56 files changed, 10103 insertions(+), 2129 deletions(-)
>
Re: [PATCH v1 00/22] Improvements to Intel perf metrics
Posted by Ian Rogers 3 years, 6 months ago
On Wed, Sep 28, 2022 at 5:56 AM Liang, Kan <kan.liang@linux.intel.com> wrote:
>
>
>
> On 2022-09-28 3:21 a.m., Ian Rogers wrote:
> > For consistency with:
> > https://github.com/intel/perfmon-metrics
> > rename of topdown TMA metrics from Frontend_Bound to tma_frontend_bound.
> >
>
> If so, all the scripts with the old name must be broken on the existing
> platforms. Can we keep both old name and new name for the existing
> platforms?
>
> For the event naming, if we want to rename an event. We still keep the
> old name and mark it as deprecated in the existing platforms to maintain
> compatibility.
>
> Can we do the similar thing for metrics?
> For the existing platforms, just add all the metrics from the
> perfmon-metrics and don't change the existing metrics unless they have
> errors.
>
> Thanks,
> Kan

Thanks Kan,

Do we have examples of scripts that will be impacted by this? My
thoughts are that such scripts are likely using TopdownL1 as a metric
group, the metrics within that group vary and names may change over
time. For example, on hybrid there is Backend_Bound_Aux. Given the
existing state, such compatibility is only required for level 1
metrics on CNL CPX CLX KBLR/CFL/CML SKX SKL/KBL BDX BDW HSX HSW IVT
IVB JKT/SNB-EP SNB. Injecting either a metric group or an aliasing
metric is messy and when can we stop carrying the patch? There hasn't
been discussion of doing this in the context of:
https://github.com/intel/perfmon-metrics
I'd suggest that this is a good time for script writers to change how
they use particular metrics and derive the information instead from
groups like TopdownL1. This will also make them robust to changes in
the TMA metrics CSV files, another win.

Thanks,
Ian


> > Remove _SMT suffix metrics are dropped as the #SMT_On and #EBS_Mode
> > are correctly expanded in the single main metric. Fix perf expr to
> > allow a double if to be correctly processed.
> >
> > Add all 6 levels of TMA metrics. Child metrics are placed in a group
> > named after their parent allowing children of a metric to be
> > easily measured using the metric name with a _group suffix.
> >
> > Don't drop TMA metrics if they contain topdown events.
> >
> > The ## and ##? operators are correctly expanded.
> >
> > The locate-with column is added to the long description describing a
> > sampling event.
> >
> > Metrics are written in terms of other metrics to reduce the expression
> > size and increase readability.
> >
> > Following this the pmu-events/arch/x86 directories match those created
> > by the script at:
> > https://github.com/intel/event-converter-for-linux-perf/blob/master/download_and_gen.py
> > with updates at:
> > https://github.com/captain5050/event-converter-for-linux-perf
> >
> > Ian Rogers (22):
> >   perf expr: Allow a double if expression
> >   perf expr: Remove jevents case workaround
> >   perf metrics: Don't scale counts going into metrics
> >   perf vendor events: Update Intel skylakex
> >   perf vendor events: Update Intel alderlake
> >   perf vendor events: Update Intel broadwell
> >   perf vendor events: Update Intel broadwellx
> >   perf vendor events: Update Intel cascadelakex
> >   perf vendor events: Update elkhartlake cpuids
> >   perf vendor events: Update Intel haswell
> >   perf vendor events: Update Intel haswellx
> >   perf vendor events: Update Intel icelake
> >   perf vendor events: Update Intel icelakex
> >   perf vendor events: Update Intel ivybridge
> >   perf vendor events: Update Intel ivytown
> >   perf vendor events: Update Intel jaketown
> >   perf vendor events: Update Intel sandybridge
> >   perf vendor events: Update Intel sapphirerapids
> >   perf vendor events: Update silvermont cpuids
> >   perf vendor events: Update Intel skylake
> >   perf vendor events: Update Intel tigerlake
> >   perf vendor events: Update Intel broadwellde
> >
> >  .../arch/x86/alderlake/adl-metrics.json       | 1215 ++++++++++++++++-
> >  .../pmu-events/arch/x86/alderlake/cache.json  |  129 +-
> >  .../arch/x86/alderlake/frontend.json          |   12 +
> >  .../pmu-events/arch/x86/alderlake/memory.json |   22 +
> >  .../pmu-events/arch/x86/alderlake/other.json  |   22 +
> >  .../arch/x86/alderlake/pipeline.json          |   14 +-
> >  .../arch/x86/broadwell/bdw-metrics.json       |  603 ++++++--
> >  .../arch/x86/broadwellde/bdwde-metrics.json   |  639 +++++++--
> >  .../arch/x86/broadwellx/bdx-metrics.json      |  644 +++++++--
> >  .../arch/x86/broadwellx/uncore-cache.json     |   10 +-
> >  .../x86/broadwellx/uncore-interconnect.json   |   18 +-
> >  .../arch/x86/broadwellx/uncore-memory.json    |   18 +-
> >  .../arch/x86/cascadelakex/clx-metrics.json    |  893 ++++++++----
> >  .../arch/x86/cascadelakex/uncore-memory.json  |   18 +-
> >  .../arch/x86/cascadelakex/uncore-other.json   |   10 +-
> >  .../pmu-events/arch/x86/haswell/cache.json    |    4 +-
> >  .../pmu-events/arch/x86/haswell/frontend.json |   12 +-
> >  .../arch/x86/haswell/hsw-metrics.json         |  502 +++++--
> >  .../pmu-events/arch/x86/haswellx/cache.json   |    2 +-
> >  .../arch/x86/haswellx/frontend.json           |   12 +-
> >  .../arch/x86/haswellx/hsx-metrics.json        |  707 +++++++---
> >  .../x86/haswellx/uncore-interconnect.json     |   18 +-
> >  .../arch/x86/haswellx/uncore-memory.json      |   18 +-
> >  .../pmu-events/arch/x86/icelake/cache.json    |    6 +-
> >  .../arch/x86/icelake/icl-metrics.json         |  725 +++++++++-
> >  .../pmu-events/arch/x86/icelake/pipeline.json |    2 +-
> >  .../pmu-events/arch/x86/icelakex/cache.json   |    6 +-
> >  .../arch/x86/icelakex/icx-metrics.json        |  794 ++++++++++-
> >  .../arch/x86/icelakex/pipeline.json           |    2 +-
> >  .../arch/x86/icelakex/uncore-other.json       |    2 +-
> >  .../arch/x86/ivybridge/ivb-metrics.json       |  525 +++++--
> >  .../pmu-events/arch/x86/ivytown/cache.json    |    4 +-
> >  .../arch/x86/ivytown/floating-point.json      |    2 +-
> >  .../pmu-events/arch/x86/ivytown/frontend.json |   18 +-
> >  .../arch/x86/ivytown/ivt-metrics.json         |  558 ++++++--
> >  .../arch/x86/ivytown/uncore-cache.json        |   58 +-
> >  .../arch/x86/ivytown/uncore-interconnect.json |   84 +-
> >  .../arch/x86/ivytown/uncore-memory.json       |    2 +-
> >  .../arch/x86/ivytown/uncore-other.json        |    6 +-
> >  .../arch/x86/ivytown/uncore-power.json        |    8 +-
> >  .../arch/x86/jaketown/jkt-metrics.json        |  291 ++--
> >  tools/perf/pmu-events/arch/x86/mapfile.csv    |   18 +-
> >  .../arch/x86/sandybridge/snb-metrics.json     |  279 +++-
> >  .../arch/x86/sapphirerapids/cache.json        |    4 +-
> >  .../arch/x86/sapphirerapids/frontend.json     |   11 +
> >  .../arch/x86/sapphirerapids/pipeline.json     |    4 +-
> >  .../arch/x86/sapphirerapids/spr-metrics.json  |  858 +++++++++++-
> >  .../arch/x86/skylake/skl-metrics.json         |  774 ++++++++---
> >  .../arch/x86/skylakex/skx-metrics.json        |  859 +++++++++---
> >  .../arch/x86/skylakex/uncore-memory.json      |   18 +-
> >  .../arch/x86/skylakex/uncore-other.json       |   19 +-
> >  .../arch/x86/tigerlake/tgl-metrics.json       |  727 +++++++++-
> >  tools/perf/tests/expr.c                       |    4 +
> >  tools/perf/util/expr.c                        |   11 +-
> >  tools/perf/util/expr.y                        |    2 +-
> >  tools/perf/util/stat-shadow.c                 |    9 +-
> >  56 files changed, 10103 insertions(+), 2129 deletions(-)
> >
Re: [PATCH v1 00/22] Improvements to Intel perf metrics
Posted by Liang, Kan 3 years, 6 months ago

On 2022-09-28 10:04 a.m., Ian Rogers wrote:
> On Wed, Sep 28, 2022 at 5:56 AM Liang, Kan <kan.liang@linux.intel.com> wrote:
>>
>>
>>
>> On 2022-09-28 3:21 a.m., Ian Rogers wrote:
>>> For consistency with:
>>> https://github.com/intel/perfmon-metrics
>>> rename of topdown TMA metrics from Frontend_Bound to tma_frontend_bound.
>>>
>>
>> If so, all the scripts with the old name must be broken on the existing
>> platforms. Can we keep both old name and new name for the existing
>> platforms?
>>
>> For the event naming, if we want to rename an event. We still keep the
>> old name and mark it as deprecated in the existing platforms to maintain
>> compatibility.
>>
>> Can we do the similar thing for metrics?
>> For the existing platforms, just add all the metrics from the
>> perfmon-metrics and don't change the existing metrics unless they have
>> errors.
>>
>> Thanks,
>> Kan
> 
> Thanks Kan,
> 
> Do we have examples of scripts that will be impacted by this? My
> thoughts are that such scripts are likely using TopdownL1 as a metric
> group, the metrics within that group vary and names may change over
> time. For example, on hybrid there is Backend_Bound_Aux. Given the
> existing state, such compatibility is only required for level 1
> metrics on CNL CPX CLX KBLR/CFL/CML SKX SKL/KBL BDX BDW HSX HSW IVT
> IVB JKT/SNB-EP SNB. Injecting either a metric group or an aliasing
> metric is messy and when can we stop carrying the patch? There hasn't
> been discussion of doing this in the context of:
> https://github.com/intel/perfmon-metrics
> I'd suggest that this is a good time for script writers to change how
> they use particular metrics and derive the information instead from
> groups like TopdownL1. 

So the rename only impacts the Topdown metrics, right?
We still keep the old group name, TopdownL1.

If so, I agree. It only makes sense when collect in a Top-down group,
not specific metrics.

Thanks,
Kan

> This will also make them robust to changes in
> the TMA metrics CSV files, another win.
> 
> Thanks,
> Ian
> 
> 
>>> Remove _SMT suffix metrics are dropped as the #SMT_On and #EBS_Mode
>>> are correctly expanded in the single main metric. Fix perf expr to
>>> allow a double if to be correctly processed.
>>>
>>> Add all 6 levels of TMA metrics. Child metrics are placed in a group
>>> named after their parent allowing children of a metric to be
>>> easily measured using the metric name with a _group suffix.
>>>
>>> Don't drop TMA metrics if they contain topdown events.
>>>
>>> The ## and ##? operators are correctly expanded.
>>>
>>> The locate-with column is added to the long description describing a
>>> sampling event.
>>>
>>> Metrics are written in terms of other metrics to reduce the expression
>>> size and increase readability.
>>>
>>> Following this the pmu-events/arch/x86 directories match those created
>>> by the script at:
>>> https://github.com/intel/event-converter-for-linux-perf/blob/master/download_and_gen.py
>>> with updates at:
>>> https://github.com/captain5050/event-converter-for-linux-perf
>>>
>>> Ian Rogers (22):
>>>   perf expr: Allow a double if expression
>>>   perf expr: Remove jevents case workaround
>>>   perf metrics: Don't scale counts going into metrics
>>>   perf vendor events: Update Intel skylakex
>>>   perf vendor events: Update Intel alderlake
>>>   perf vendor events: Update Intel broadwell
>>>   perf vendor events: Update Intel broadwellx
>>>   perf vendor events: Update Intel cascadelakex
>>>   perf vendor events: Update elkhartlake cpuids
>>>   perf vendor events: Update Intel haswell
>>>   perf vendor events: Update Intel haswellx
>>>   perf vendor events: Update Intel icelake
>>>   perf vendor events: Update Intel icelakex
>>>   perf vendor events: Update Intel ivybridge
>>>   perf vendor events: Update Intel ivytown
>>>   perf vendor events: Update Intel jaketown
>>>   perf vendor events: Update Intel sandybridge
>>>   perf vendor events: Update Intel sapphirerapids
>>>   perf vendor events: Update silvermont cpuids
>>>   perf vendor events: Update Intel skylake
>>>   perf vendor events: Update Intel tigerlake
>>>   perf vendor events: Update Intel broadwellde
>>>
>>>  .../arch/x86/alderlake/adl-metrics.json       | 1215 ++++++++++++++++-
>>>  .../pmu-events/arch/x86/alderlake/cache.json  |  129 +-
>>>  .../arch/x86/alderlake/frontend.json          |   12 +
>>>  .../pmu-events/arch/x86/alderlake/memory.json |   22 +
>>>  .../pmu-events/arch/x86/alderlake/other.json  |   22 +
>>>  .../arch/x86/alderlake/pipeline.json          |   14 +-
>>>  .../arch/x86/broadwell/bdw-metrics.json       |  603 ++++++--
>>>  .../arch/x86/broadwellde/bdwde-metrics.json   |  639 +++++++--
>>>  .../arch/x86/broadwellx/bdx-metrics.json      |  644 +++++++--
>>>  .../arch/x86/broadwellx/uncore-cache.json     |   10 +-
>>>  .../x86/broadwellx/uncore-interconnect.json   |   18 +-
>>>  .../arch/x86/broadwellx/uncore-memory.json    |   18 +-
>>>  .../arch/x86/cascadelakex/clx-metrics.json    |  893 ++++++++----
>>>  .../arch/x86/cascadelakex/uncore-memory.json  |   18 +-
>>>  .../arch/x86/cascadelakex/uncore-other.json   |   10 +-
>>>  .../pmu-events/arch/x86/haswell/cache.json    |    4 +-
>>>  .../pmu-events/arch/x86/haswell/frontend.json |   12 +-
>>>  .../arch/x86/haswell/hsw-metrics.json         |  502 +++++--
>>>  .../pmu-events/arch/x86/haswellx/cache.json   |    2 +-
>>>  .../arch/x86/haswellx/frontend.json           |   12 +-
>>>  .../arch/x86/haswellx/hsx-metrics.json        |  707 +++++++---
>>>  .../x86/haswellx/uncore-interconnect.json     |   18 +-
>>>  .../arch/x86/haswellx/uncore-memory.json      |   18 +-
>>>  .../pmu-events/arch/x86/icelake/cache.json    |    6 +-
>>>  .../arch/x86/icelake/icl-metrics.json         |  725 +++++++++-
>>>  .../pmu-events/arch/x86/icelake/pipeline.json |    2 +-
>>>  .../pmu-events/arch/x86/icelakex/cache.json   |    6 +-
>>>  .../arch/x86/icelakex/icx-metrics.json        |  794 ++++++++++-
>>>  .../arch/x86/icelakex/pipeline.json           |    2 +-
>>>  .../arch/x86/icelakex/uncore-other.json       |    2 +-
>>>  .../arch/x86/ivybridge/ivb-metrics.json       |  525 +++++--
>>>  .../pmu-events/arch/x86/ivytown/cache.json    |    4 +-
>>>  .../arch/x86/ivytown/floating-point.json      |    2 +-
>>>  .../pmu-events/arch/x86/ivytown/frontend.json |   18 +-
>>>  .../arch/x86/ivytown/ivt-metrics.json         |  558 ++++++--
>>>  .../arch/x86/ivytown/uncore-cache.json        |   58 +-
>>>  .../arch/x86/ivytown/uncore-interconnect.json |   84 +-
>>>  .../arch/x86/ivytown/uncore-memory.json       |    2 +-
>>>  .../arch/x86/ivytown/uncore-other.json        |    6 +-
>>>  .../arch/x86/ivytown/uncore-power.json        |    8 +-
>>>  .../arch/x86/jaketown/jkt-metrics.json        |  291 ++--
>>>  tools/perf/pmu-events/arch/x86/mapfile.csv    |   18 +-
>>>  .../arch/x86/sandybridge/snb-metrics.json     |  279 +++-
>>>  .../arch/x86/sapphirerapids/cache.json        |    4 +-
>>>  .../arch/x86/sapphirerapids/frontend.json     |   11 +
>>>  .../arch/x86/sapphirerapids/pipeline.json     |    4 +-
>>>  .../arch/x86/sapphirerapids/spr-metrics.json  |  858 +++++++++++-
>>>  .../arch/x86/skylake/skl-metrics.json         |  774 ++++++++---
>>>  .../arch/x86/skylakex/skx-metrics.json        |  859 +++++++++---
>>>  .../arch/x86/skylakex/uncore-memory.json      |   18 +-
>>>  .../arch/x86/skylakex/uncore-other.json       |   19 +-
>>>  .../arch/x86/tigerlake/tgl-metrics.json       |  727 +++++++++-
>>>  tools/perf/tests/expr.c                       |    4 +
>>>  tools/perf/util/expr.c                        |   11 +-
>>>  tools/perf/util/expr.y                        |    2 +-
>>>  tools/perf/util/stat-shadow.c                 |    9 +-
>>>  56 files changed, 10103 insertions(+), 2129 deletions(-)
>>>