mirror of
https://github.com/rd-stuffs/msm-4.14.git
synced 2025-02-20 11:45:48 +08:00
perf annotate: Fix missing number of samples for source_line_samples
The option 'show-total-period' works fine without a option '-l'. But if running 'perf annotate --stdio -l --show-total-period', you can see a problem showing only zero '0' for number of samples. Before: $ perf annotate --stdio -l --show-total-period ... 0 : 400816: push %rbp 0 : 400817: mov %rsp,%rbp 0 : 40081a: mov %edi,-0x24(%rbp) 0 : 40081d: mov %rsi,-0x30(%rbp) 0 : 400821: mov -0x24(%rbp),%eax 0 : 400824: mov -0x30(%rbp),%rdx 0 : 400828: mov (%rdx),%esi 0 : 40082a: mov $0x0,%edx ... The reason is it was missed to set number of samples of source_line_samples, so set it ordinarily. After: $ perf annotate --stdio -l --show-total-period ... 3 : 400816: push %rbp 4 : 400817: mov %rsp,%rbp 0 : 40081a: mov %edi,-0x24(%rbp) 0 : 40081d: mov %rsi,-0x30(%rbp) 1 : 400821: mov -0x24(%rbp),%eax 2 : 400824: mov -0x30(%rbp),%rdx 0 : 400828: mov (%rdx),%esi 1 : 40082a: mov $0x0,%edx ... Signed-off-by: Taeung Song <treeze.taeung@gmail.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Martin Liska <mliska@suse.cz> Cc: Masami Hiramatsu <mhiramat@kernel.org> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Wang Nan <wangnan0@huawei.com> Fixes: 0c4a5bcea460 ("perf annotate: Display total number of samples with --show-total-period") Link: http://lkml.kernel.org/r/1490703125-13643-1-git-send-email-treeze.taeung@gmail.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
9c0899f157
commit
99094a5e94
@ -1665,7 +1665,7 @@ 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;
|
||||
u64 offset, nr_samples;
|
||||
double percent_max = 0.0;
|
||||
|
||||
src_line->nr_pcnt = nr_pcnt;
|
||||
@ -1674,12 +1674,14 @@ 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];
|
||||
if (h->sum)
|
||||
percent = 100.0 * h->addr[i] / h->sum;
|
||||
percent = 100.0 * nr_samples / h->sum;
|
||||
|
||||
if (percent > percent_max)
|
||||
percent_max = percent;
|
||||
src_line->samples[k].percent = percent;
|
||||
src_line->samples[k].nr = nr_samples;
|
||||
}
|
||||
|
||||
if (percent_max <= 0.5)
|
||||
|
@ -98,7 +98,7 @@ struct cyc_hist {
|
||||
struct source_line_samples {
|
||||
double percent;
|
||||
double percent_sum;
|
||||
double nr;
|
||||
u64 nr;
|
||||
};
|
||||
|
||||
struct source_line {
|
||||
|
Loading…
x
Reference in New Issue
Block a user