Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752836AbdGMRqc (ORCPT ); Thu, 13 Jul 2017 13:46:32 -0400 Received: from mail-pg0-f65.google.com ([74.125.83.65]:35108 "EHLO mail-pg0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751828AbdGMRq3 (ORCPT ); Thu, 13 Jul 2017 13:46:29 -0400 From: Taeung Song To: Arnaldo Carvalho de Melo Cc: linux-kernel@vger.kernel.org, Namhyung Kim , Jiri Olsa Subject: [PATCH v2 9/9] perf annotate: Use the sample period when calculating the percentage Date: Fri, 14 Jul 2017 02:46:20 +0900 Message-Id: <1499967980-15718-1-git-send-email-treeze.taeung@gmail.com> X-Mailer: git-send-email 2.7.4 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1789 Lines: 57 Currently the percentages of perf-annotate are calculated with number of samples, not the sample period. So fix it to correspond with perf-report using the sample period for the calculation. Cc: Namhyung Kim Cc: Jiri Olsa Signed-off-by: Taeung Song --- tools/perf/util/annotate.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c index d9bdedf..28a6d11 100644 --- a/tools/perf/util/annotate.c +++ b/tools/perf/util/annotate.c @@ -988,7 +988,7 @@ double disasm__calc_percent(struct annotation *notes, int evidx, s64 offset, if (h->total_samples) { sample->nr_samples = hits; sample->period = p; - percent = 100.0 * hits / h->total_samples; + percent = 100.0 * p / h->total_period; } } @@ -1730,8 +1730,9 @@ static int symbol__get_source_line(struct symbol *sym, struct map *map, start = map__rip_2objdump(map, sym->start); for (i = 0; i < len; i++) { - u64 offset, nr_samples; + u64 offset; double percent_max = 0.0; + struct sym_hist_entry sample; src_line->nr_pcnt = nr_pcnt; @@ -1739,15 +1740,15 @@ static int symbol__get_source_line(struct symbol *sym, struct map *map, double percent = 0.0; h = annotation__histogram(notes, evidx + k); - nr_samples = h->addr[i].nr_samples; + sample = h->addr[i]; if (h->total_samples) - percent = 100.0 * nr_samples / h->total_samples; + percent = 100.0 * sample.period / h->total_period; if (percent > percent_max) percent_max = percent; src_line->samples[k].percent = percent; - src_line->samples[k].nr = nr_samples; + src_line->samples[k].nr = sample.nr_samples; } if (percent_max <= 0.5) -- 2.7.4