perf callchain: Allow disabling call graphs per event
This patch introduce "call-graph=no" to disable per-event callgraph. Here is an example. perf record -e 'cpu/cpu-cycles,call-graph=fp/,cpu/instructions,call-graph=no/' sleep 1 perf report --stdio # To display the perf.data header info, please use --header/--header-only options. # # # Total Lost Samples: 0 # # Samples: 6 of event 'cpu/cpu-cycles,call-graph=fp/' # Event count (approx.): 774218 # # Children Self Command Shared Object Symbol # ........ ........ ....... ................ ........................................ # 61.94% 0.00% sleep [kernel.vmlinux] [k] entry_SYSCALL_64_fastpath | ---entry_SYSCALL_64_fastpath | |--97.30%-- __brk | --2.70%-- mmap64 _dl_check_map_versions _dl_check_all_versions 61.94% 0.00% sleep [kernel.vmlinux] [k] perf_event_mmap | ---perf_event_mmap | |--97.30%-- do_brk | sys_brk | entry_SYSCALL_64_fastpath | __brk | --2.70%-- mmap_region do_mmap_pgoff vm_mmap_pgoff sys_mmap_pgoff sys_mmap entry_SYSCALL_64_fastpath mmap64 _dl_check_map_versions _dl_check_all_versions ...... # Samples: 6 of event 'cpu/instructions,call-graph=no/' # Event count (approx.): 359692 # # Children Self Command Shared Object Symbol # ........ ........ ....... ................ ................................. # 89.03% 0.00% sleep [unknown] [.] 0xffff6598ffff6598 89.03% 0.00% sleep ld-2.17.so [.] _dl_resolve_conflicts 89.03% 0.00% sleep [kernel.vmlinux] [k] page_fault 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-2-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
d457c96392
commit
f9db0d0f1b
@@ -651,12 +651,17 @@ static void apply_config_terms(struct perf_evsel *evsel,
|
||||
|
||||
/* parse callgraph parameters */
|
||||
if (callgraph_buf != NULL) {
|
||||
param.enabled = true;
|
||||
if (parse_callchain_record(callgraph_buf, ¶m)) {
|
||||
pr_err("per-event callgraph setting for %s failed. "
|
||||
"Apply callgraph global setting for it\n",
|
||||
evsel->name);
|
||||
return;
|
||||
if (!strcmp(callgraph_buf, "no")) {
|
||||
param.enabled = false;
|
||||
param.record_mode = CALLCHAIN_NONE;
|
||||
} else {
|
||||
param.enabled = true;
|
||||
if (parse_callchain_record(callgraph_buf, ¶m)) {
|
||||
pr_err("per-event callgraph setting for %s failed. "
|
||||
"Apply callgraph global setting for it\n",
|
||||
evsel->name);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (dump_size > 0) {
|
||||
|
Reference in New Issue
Block a user