perf annotate: Add comment about annotated_src->nr_histograms
tip-bot for Arnaldo Carvalho de Melo
merge botCommit-ID: 9132d3d92d8953ee79690408a9a24d938be22cd8 Gitweb: https://git.kernel.org/tip/9132d3d92d8953ee79690408a9a24d938be22cd8 Author: Arnaldo Carvalho de Melo <[email protected]> AuthorDate: Fri, 25 May 2018 11:27:38 -0300 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Mon, 4 Jun 2018 10:28:52 -0300
perf annotate: Add comment about annotated_src->nr_histograms
When we have multiple groups in an evlist, say:
$ perf stat -e '{cycles,instructions},{cache-references,cache-misses}' sleep 1Performance counter stats for 'sleep 1':
343,134 cycles:u
249,292 instructions:u # 0.73 insn per cycle
15,556 cache-references:u
8,925 cache-misses:u # 57.373 % of all cache refs1.000957550 seconds time elapsed
$
Then the perf_evsel instances for the two group leaders ("cycles" and "cache-references") will have evsel->nr_members set to 2, while all the evsel->evlist->nr_entries will be set to 4, so we can't use evsel->evlist->nr_entries everywhere, as event groups need to be taken into account.
But this probably requires us to audit at least the forced-group code, where we want all of the events to be in a "group", to see them all in the screen, one column for each, even knowing that they were not necessarily scheduled to count at the same time by the kernel perf subsystem.
Cc Adrian Hunter <[email protected]>
Cc David Ahern <[email protected]>
Cc Jiri Olsa <[email protected]>
Cc Namhyung Kim <[email protected]>
Cc Wang Nan <[email protected]>
Signed-off-by Arnaldo Carvalho de Melo <[email protected]>
--- tools/perf/util/annotate.h | 4 ++++ 1 file changed, 4 insertions(+)
tools/perf/util/annotate.h +4 -0
@@ -202,6 +202,10 @@ struct cyc_hist {/** struct annotated_source - symbols with hits have this attached as in sannotation * * @histograms: Array of addr hit histograms per event being monitored +* nr_histograms: This may not be the same as evsel->evlist->nr_entries if +* we have more than a group in a evlist, where we will want +* to see each group separately, that is why symbol__annotate2() +* sets src->nr_histograms to evsel->nr_members. * @lines: If 'print_lines' is specified, per source code line percentages * @source: source parsed from a disassembler like objdump -dS * @cyc_hist: Average cycles per basic block