Messages in this thread Patch in this message | | | Date | Wed, 28 Sep 2022 00:21:45 -0700 | Subject | [PATCH v1 03/22] perf metrics: Don't scale counts going into metrics | From | Ian Rogers <> |
| |
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; + 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) -- 2.37.3.998.g577e59143f-goog
| |