Re: [PATCH 07/10] perf, tools, stat: Scale values by unit before metrics

From: Jiri Olsa
Date: Sat May 07 2016 - 15:14:37 EST


On Thu, May 05, 2016 at 04:04:04PM -0700, Andi Kleen wrote:
> From: Andi Kleen <ak@xxxxxxxxxxxxxxx>
>
> Scale values by unit before passing them to the metrics printing functions.
> This is needed for TopDown, because it needs to scale the slots correctly
> by pipeline width / SMTness.
>
> For existing metrics it shouldn't make any difference, as those generally
> use events that don't have any units.
>
> Signed-off-by: Andi Kleen <ak@xxxxxxxxxxxxxxx>

Acked-by: Jiri Olsa <jolsa@xxxxxxxxxx>

thanks,
jirka

> ---
> tools/perf/util/stat.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/tools/perf/util/stat.c b/tools/perf/util/stat.c
> index 4d9b481cf3b6..ffa1d0653861 100644
> --- a/tools/perf/util/stat.c
> +++ b/tools/perf/util/stat.c
> @@ -307,6 +307,7 @@ int perf_stat_process_counter(struct perf_stat_config *config,
> struct perf_counts_values *aggr = &counter->counts->aggr;
> struct perf_stat_evsel *ps = counter->priv;
> u64 *count = counter->counts->aggr.values;
> + u64 val;
> int i, ret;
>
> aggr->val = aggr->ena = aggr->run = 0;
> @@ -346,7 +347,8 @@ int perf_stat_process_counter(struct perf_stat_config *config,
> /*
> * Save the full runtime - to allow normalization during printout:
> */
> - perf_stat__update_shadow_stats(counter, count, 0);
> + val = counter->scale * *count;
> + perf_stat__update_shadow_stats(counter, &val, 0);
>
> return 0;
> }
> --
> 2.5.5
>