perf report: Show call graph from reference events
Introduce --show-ref-call-graph for perf report to print reference callgraph for no callgraph event. Here is an example. perf report --show-ref-call-graph --stdio # To display the perf.data header info, please use --header/--header-only options. # # # Total Lost Samples: 0 # # Samples: 5 of event 'cpu/cpu-cycles,call-graph=fp/' # Event count (approx.): 144985 # # Children Self Command Shared Object Symbol # ........ ........ ....... ................ ........................................ # 72.30% 0.00% sleep [kernel.vmlinux] [k] entry_SYSCALL_64_fastpath | ---entry_SYSCALL_64_fastpath | |--22.62%-- __GI___libc_nanosleep --77.38%-- [...] ...... # Samples: 6 of event 'cpu/instructions,call-graph=no/', show reference callgraph # Event count (approx.): 172780 # # Children Self Command Shared Object Symbol # ........ ........ ....... ................ ........................................ # 73.16% 0.00% sleep [kernel.vmlinux] [k] entry_SYSCALL_64_fastpath | ---entry_SYSCALL_64_fastpath | |--31.44%-- __GI___libc_nanosleep --68.56%-- [...] Signed-off-by: Kan Liang <kan.liang@intel.com> Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com> Cc: Andi Kleen <ak@linux.intel.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Namhyung Kim <namhyung@kernel.org> Link: http://lkml.kernel.org/r/1439289050-40510-3-git-send-email-kan.liang@intel.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:

committed by
Arnaldo Carvalho de Melo

parent
f9db0d0f1b
commit
9e207ddfa2
@@ -1267,6 +1267,8 @@ static int hists__browser_title(struct hists *hists,
|
||||
const char *ev_name = perf_evsel__name(evsel);
|
||||
char buf[512];
|
||||
size_t buflen = sizeof(buf);
|
||||
char ref[30] = " show reference callgraph, ";
|
||||
bool enable_ref = false;
|
||||
|
||||
if (symbol_conf.filter_relative) {
|
||||
nr_samples = hists->stats.nr_non_filtered_samples;
|
||||
@@ -1292,10 +1294,13 @@ static int hists__browser_title(struct hists *hists,
|
||||
}
|
||||
}
|
||||
|
||||
if (symbol_conf.show_ref_callgraph &&
|
||||
strstr(ev_name, "call-graph=no"))
|
||||
enable_ref = true;
|
||||
nr_samples = convert_unit(nr_samples, &unit);
|
||||
printed = scnprintf(bf, size,
|
||||
"Samples: %lu%c of event '%s', Event count (approx.): %" PRIu64,
|
||||
nr_samples, unit, ev_name, nr_events);
|
||||
"Samples: %lu%c of event '%s',%sEvent count (approx.): %" PRIu64,
|
||||
nr_samples, unit, ev_name, enable_ref ? ref : " ", nr_events);
|
||||
|
||||
|
||||
if (hists->uid_filter_str)
|
||||
|
Reference in New Issue
Block a user