summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorAndi Kleen <ak@linux.intel.com>2016-05-05 23:04:04 (GMT)
committerArnaldo Carvalho de Melo <acme@redhat.com>2016-05-09 16:42:09 (GMT)
commitf340c5fc93bda334efd9f2b5855ef0d3746e1564 (patch)
tree8ec154bf1f61e1d829404bfe750634c5b36e5a26 /tools
parent841e3558b2de6d8c53dae4f01c7a81cd53e42e5c (diff)
downloadlinux-f340c5fc93bda334efd9f2b5855ef0d3746e1564.tar.xz
perf stat: Scale values by unit before metrics
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@linux.intel.com> Acked-by: Jiri Olsa <jolsa@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Link: http://lkml.kernel.org/r/1462489447-31832-8-git-send-email-andi@firstfloor.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools')
-rw-r--r--tools/perf/util/stat.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/tools/perf/util/stat.c b/tools/perf/util/stat.c
index 4d9b481..ffa1d06 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;
}