Messages in this thread | ![/](/images/icornerl.gif) | | From | Ian Rogers <> | Date | Thu, 29 Feb 2024 16:54:07 -0800 | Subject | Re: [PATCH v1 03/20] perf jevents: Add smi metric group for Intel models |
| |
On Thu, Feb 29, 2024 at 1:09 PM Liang, Kan <kan.liang@linux.intel.com> wrote: > > > > On 2024-02-28 7:17 p.m., Ian Rogers wrote: > > Allow duplicated metric to be dropped from json files. > > > > Signed-off-by: Ian Rogers <irogers@google.com> > > --- > > tools/perf/pmu-events/intel_metrics.py | 18 +++++++++++++++++- > > 1 file changed, 17 insertions(+), 1 deletion(-) > > > > diff --git a/tools/perf/pmu-events/intel_metrics.py b/tools/perf/pmu-events/intel_metrics.py > > index 46866a25b166..20c25d142f24 100755 > > --- a/tools/perf/pmu-events/intel_metrics.py > > +++ b/tools/perf/pmu-events/intel_metrics.py > > @@ -2,7 +2,7 @@ > > # SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) > > from metric import (d_ratio, has_event, max, Event, JsonEncodeMetric, > > JsonEncodeMetricGroupDescriptions, LoadEvents, Metric, > > - MetricGroup, Select) > > + MetricGroup, MetricRef, Select) > > import argparse > > import json > > import math > > @@ -62,9 +62,25 @@ def Rapl() -> MetricGroup: > > description="Processor socket power consumption estimates") > > > > > > +def Smi() -> MetricGroup: > > + aperf = Event('msr/aperf/') > > There are CPUID enumeration for the aperf and mperf. I believe they > should be always available for a newer bare metal. But they may not be > enumerated in an virtualization env. Should we add a has_event() check > before using it?
It would make sense to have the has_event so that the metric doesn't fail in perf test. I'll add it.
Thanks, Ian
> Thanks, > Kan > > > + cycles = Event('cycles') > > + smi_num = Event('msr/smi/') > > + smi_cycles = Select((aperf - cycles) / aperf, smi_num > 0, 0) > > + return MetricGroup('smi', [ > > + Metric('smi_num', 'Number of SMI interrupts.', > > + smi_num, 'SMI#'), > > + # Note, the smi_cycles "Event" is really a reference to the metric. > > + Metric('smi_cycles', > > + 'Percentage of cycles spent in System Management Interrupts.', > > + smi_cycles, '100%', threshold=(MetricRef('smi_cycles') > 0.10)) > > + ]) > > + > > + > > all_metrics = MetricGroup("", [ > > Idle(), > > Rapl(), > > + Smi(), > > ]) > > > > if args.metricgroups:
| ![\](/images/icornerr.gif) |