Messages in this thread Patch in this message | | | From | Taeung Song <> | Subject | [PATCH v2 9/9] perf annotate: Use the sample period when calculating the percentage | Date | Fri, 14 Jul 2017 02:46:20 +0900 |
| |
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 <namhyung@kernel.org> Cc: Jiri Olsa <jolsa@redhat.com> Signed-off-by: Taeung Song <treeze.taeung@gmail.com> --- 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
| |