Messages in this thread | | | Date | Thu, 29 Sep 2022 16:48:21 +0800 | Subject | Re: [PATCH v1 03/22] perf metrics: Don't scale counts going into metrics | From | Xing Zhengjun <> |
| |
On 9/28/2022 3:21 PM, Ian Rogers wrote: > Counts are scaled prior to going into saved_value, reverse the scaling > so that metrics don't double scale values. > > Signed-off-by: Ian Rogers <irogers@google.com> > --- > tools/perf/util/stat-shadow.c | 9 +++++++-- > 1 file changed, 7 insertions(+), 2 deletions(-) > > diff --git a/tools/perf/util/stat-shadow.c b/tools/perf/util/stat-shadow.c > index 9e1eddeff21b..b5cedd37588f 100644 > --- a/tools/perf/util/stat-shadow.c > +++ b/tools/perf/util/stat-shadow.c > @@ -865,11 +865,16 @@ static int prepare_metric(struct evsel **metric_events, > if (!v) > break; > stats = &v->stats; > - scale = 1.0; > + /* > + * If an event was scaled during stat gathering, reverse > + * the scale before computing the metric. > + */ > + scale = 1.0 / metric_events[i]->scale; > + This look likes not work for kernel side events like /sys/devices/uncore_imc_*/events/cas_count_read(write).
> source_count = evsel__source_count(metric_events[i]); > > if (v->metric_other) > - metric_total = v->metric_total; > + metric_total = v->metric_total * scale; > } > n = strdup(evsel__metric_id(metric_events[i])); > if (!n)
-- Zhengjun Xing
| |