mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-24 14:41:02 +07: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: 0c4a5bcea4
("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…
Reference in New Issue
Block a user