* perf script: how to print user-space backtrace? @ 2015-07-22 18:48 Milian Wolff 2015-08-13 7:17 ` [PATCH] perf script: Initialize callchain_param.record_mode Jiri Olsa 0 siblings, 1 reply; 5+ messages in thread From: Milian Wolff @ 2015-07-22 18:48 UTC (permalink / raw) To: Perf Users [-- Attachment #1: Type: text/plain, Size: 2320 bytes --] Hey all, I recorded a perf data file using perf record --call-graph dwarf kwrite <some large file> when I report it I see backtraces pointing to the user space code: perf report --stdio -g graph --no-children 16.36% kwrite libKF5TextEditor.so.5.13.0 [.] QArrayData::data | ---QArrayData::data | |--15.46%-- QTypedArrayData<unsigned short>::data but when I run perf script, I do not see _any_ backtraces into user space. perf script -F comm,tid,time,event,ip,sym,trace,period :4898 4898 17486.943365: 1 cycles: 25f83a native_write_msr_safe 234f8a __intel_pmu_enable_all 235010 intel_pmu_enable_all 22e1ec x86_pmu_enable 356fb7 perf_pmu_enable.part.53 35824d perf_event_context_sched_in.isra.64 358e0b perf_event_exec 3e8c93 setup_new_exec 439a9f load_elf_binary 3e7f48 search_binary_handler 3e89cf do_execveat_common.isra.15 3e8e4a sys_execve 78b895 return_from_execve kwrite 4898 17486.943893: 1 cycles: kwrite 4898 17486.944211: 1 cycles: ... kwrite 4898 17486.953664: 461703 cycles: kwrite 4898 17486.953838: 490150 cycles: 78d4c0 page_fault kwrite 4898 17486.954009: 516694 cycles: ... kwrite 4898 17510.765568: 766937 cycles: 78979b down_write 39bd82 unlink_file_vma 3944d0 free_pgtables 39eef6 exit_mmap 275d45 mmput 27b514 do_exit 27bdfb do_group_exit 27be84 [unknown] 78b56e system_call So it looks to me as if only kernel-space call stacks are unwound in perf script. Is there a magic switch that I'm missing to get user-space stacks unwound? Note I'm using perf 4.1.0 on a Linux 4.1.2 system. Thanks -- Milian Wolff mail@milianw.de http://milianw.de [-- Attachment #2: This is a digitally signed message part. --] [-- Type: application/pgp-signature, Size: 181 bytes --] ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH] perf script: Initialize callchain_param.record_mode 2015-07-22 18:48 perf script: how to print user-space backtrace? Milian Wolff @ 2015-08-13 7:17 ` Jiri Olsa 2015-08-13 8:53 ` Milian Wolff 0 siblings, 1 reply; 5+ messages in thread From: Jiri Olsa @ 2015-08-13 7:17 UTC (permalink / raw) To: Milian Wolff Cc: Perf Users, lkml, David Ahern, Ingo Molnar, Namhyung Kim, Peter Zijlstra, Arnaldo Carvalho de Melo On Wed, Jul 22, 2015 at 08:48:40PM +0200, Milian Wolff wrote: > Hey all, > > I recorded a perf data file using > > perf record --call-graph dwarf kwrite <some large file> > > when I report it I see backtraces pointing to the user space code: > > perf report --stdio -g graph --no-children > 16.36% kwrite libKF5TextEditor.so.5.13.0 [.] > QArrayData::data > | > ---QArrayData::data > | > |--15.46%-- QTypedArrayData<unsigned short>::data > > but when I run perf script, I do not see _any_ backtraces into user space. > > perf script -F comm,tid,time,event,ip,sym,trace,period > :4898 4898 17486.943365: 1 cycles: > 25f83a native_write_msr_safe > 234f8a __intel_pmu_enable_all > 235010 intel_pmu_enable_all > 22e1ec x86_pmu_enable > 356fb7 perf_pmu_enable.part.53 > 35824d perf_event_context_sched_in.isra.64 > 358e0b perf_event_exec > 3e8c93 setup_new_exec > 439a9f load_elf_binary > 3e7f48 search_binary_handler > 3e89cf do_execveat_common.isra.15 > 3e8e4a sys_execve > 78b895 return_from_execve > > kwrite 4898 17486.943893: 1 cycles: > kwrite 4898 17486.944211: 1 cycles: > ... > kwrite 4898 17486.953664: 461703 cycles: > kwrite 4898 17486.953838: 490150 cycles: > 78d4c0 page_fault > kwrite 4898 17486.954009: 516694 cycles: > ... > kwrite 4898 17510.765568: 766937 cycles: > 78979b down_write > 39bd82 unlink_file_vma > 3944d0 free_pgtables > 39eef6 exit_mmap > 275d45 mmput > 27b514 do_exit > 27bdfb do_group_exit > 27be84 [unknown] > 78b56e system_call > > So it looks to me as if only kernel-space call stacks are unwound in perf > script. Is there a magic switch that I'm missing to get user-space stacks > unwound? Note I'm using perf 4.1.0 on a Linux 4.1.2 system. hi, right you are.. does attached patch help? thanks, jirka --- Milian Wolff reported non functional DWARF unwind under perf script. The reason is that perf script does not properly configure callchain_param.record_mode, which is needed by unwind code. Stealing the code from report and leaving the place for more initialization code in a hope we could merge it with report__setup_sample_type one day. Reported-by: Milian Wolff <mail@milianw.de> Link: http://lkml.kernel.org/n/tip-vtgxy0tv3gogvomyhc2c50rm@git.kernel.org Signed-off-by: Jiri Olsa <jolsa@kernel.org> --- tools/perf/builtin-script.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c index 7b376d215e94..105332e950a9 100644 --- a/tools/perf/builtin-script.c +++ b/tools/perf/builtin-script.c @@ -1561,6 +1561,22 @@ static int have_cmd(int argc, const char **argv) return 0; } +static void script__setup_sample_type(struct perf_script *script) +{ + struct perf_session *session = script->session; + u64 sample_type = perf_evlist__combined_sample_type(session->evlist); + + if (symbol_conf.use_callchain || symbol_conf.cumulate_callchain) { + if ((sample_type & PERF_SAMPLE_REGS_USER) && + (sample_type & PERF_SAMPLE_STACK_USER)) + callchain_param.record_mode = CALLCHAIN_DWARF; + else if (sample_type & PERF_SAMPLE_BRANCH_STACK) + callchain_param.record_mode = CALLCHAIN_LBR; + else + callchain_param.record_mode = CALLCHAIN_FP; + } +} + int cmd_script(int argc, const char **argv, const char *prefix __maybe_unused) { bool show_full_info = false; @@ -1849,6 +1865,7 @@ int cmd_script(int argc, const char **argv, const char *prefix __maybe_unused) goto out_delete; script.session = session; + script__setup_sample_type(&script); session->itrace_synth_opts = &itrace_synth_opts; -- 2.4.3 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH] perf script: Initialize callchain_param.record_mode 2015-08-13 7:17 ` [PATCH] perf script: Initialize callchain_param.record_mode Jiri Olsa @ 2015-08-13 8:53 ` Milian Wolff 2015-08-17 13:47 ` Arnaldo Carvalho de Melo 0 siblings, 1 reply; 5+ messages in thread From: Milian Wolff @ 2015-08-13 8:53 UTC (permalink / raw) To: Jiri Olsa Cc: Perf Users, lkml, David Ahern, Ingo Molnar, Namhyung Kim, Peter Zijlstra, Arnaldo Carvalho de Melo [-- Attachment #1: Type: text/plain, Size: 2793 bytes --] On Thursday, August 13, 2015 09:17:24 AM Jiri Olsa wrote: > On Wed, Jul 22, 2015 at 08:48:40PM +0200, Milian Wolff wrote: > > Hey all, > > > > I recorded a perf data file using > > > > perf record --call-graph dwarf kwrite <some large file> > > > > when I report it I see backtraces pointing to the user space code: > > > > perf report --stdio -g graph --no-children > > > > 16.36% kwrite libKF5TextEditor.so.5.13.0 [.] > > > > QArrayData::data > > > > ---QArrayData::data > > > > |--15.46%-- QTypedArrayData<unsigned short>::data > > > > but when I run perf script, I do not see _any_ backtraces into user space. > > > > perf script -F comm,tid,time,event,ip,sym,trace,period > > > > :4898 4898 17486.943365: 1 cycles: > > 25f83a native_write_msr_safe > > 234f8a __intel_pmu_enable_all > > 235010 intel_pmu_enable_all > > 22e1ec x86_pmu_enable > > 356fb7 perf_pmu_enable.part.53 > > 35824d perf_event_context_sched_in.isra.64 > > 358e0b perf_event_exec > > 3e8c93 setup_new_exec > > 439a9f load_elf_binary > > 3e7f48 search_binary_handler > > 3e89cf do_execveat_common.isra.15 > > 3e8e4a sys_execve > > 78b895 return_from_execve > > > > kwrite 4898 17486.943893: 1 cycles: > > kwrite 4898 17486.944211: 1 cycles: > > ... > > kwrite 4898 17486.953664: 461703 cycles: > > > > kwrite 4898 17486.953838: 490150 cycles: > > 78d4c0 page_fault > > > > kwrite 4898 17486.954009: 516694 cycles: > > ... > > > > kwrite 4898 17510.765568: 766937 cycles: > > 78979b down_write > > 39bd82 unlink_file_vma > > 3944d0 free_pgtables > > 39eef6 exit_mmap > > 275d45 mmput > > 27b514 do_exit > > 27bdfb do_group_exit > > 27be84 [unknown] > > 78b56e system_call > > > > So it looks to me as if only kernel-space call stacks are unwound in perf > > script. Is there a magic switch that I'm missing to get user-space stacks > > unwound? Note I'm using perf 4.1.0 on a Linux 4.1.2 system. > > hi, > right you are.. does attached patch help? <snip> Hey Jiri, it works a treat! Many thanks, much appreciated. -- Milian Wolff | milian.wolff@kdab.com | Software Engineer KDAB (Deutschland) GmbH&Co KG, a KDAB Group company Tel: +49-30-521325470 KDAB - The Qt Experts [-- Attachment #2: smime.p7s --] [-- Type: application/pkcs7-signature, Size: 5903 bytes --] ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] perf script: Initialize callchain_param.record_mode 2015-08-13 8:53 ` Milian Wolff @ 2015-08-17 13:47 ` Arnaldo Carvalho de Melo 2015-08-17 13:56 ` Milian Wolff 0 siblings, 1 reply; 5+ messages in thread From: Arnaldo Carvalho de Melo @ 2015-08-17 13:47 UTC (permalink / raw) To: Milian Wolff Cc: Jiri Olsa, Perf Users, lkml, David Ahern, Ingo Molnar, Namhyung Kim, Peter Zijlstra Em Thu, Aug 13, 2015 at 10:53:36AM +0200, Milian Wolff escreveu: > On Thursday, August 13, 2015 09:17:24 AM Jiri Olsa wrote: > > right you are.. does attached patch help? > > <snip> > > Hey Jiri, > > it works a treat! > > Many thanks, much appreciated. Adding a "Tested-by: Milian", Ok? - Arnaldo ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] perf script: Initialize callchain_param.record_mode 2015-08-17 13:47 ` Arnaldo Carvalho de Melo @ 2015-08-17 13:56 ` Milian Wolff 0 siblings, 0 replies; 5+ messages in thread From: Milian Wolff @ 2015-08-17 13:56 UTC (permalink / raw) To: Arnaldo Carvalho de Melo Cc: Jiri Olsa, Perf Users, lkml, David Ahern, Ingo Molnar, Namhyung Kim, Peter Zijlstra On Monday, August 17, 2015 10:47:50 AM CEST Arnaldo Carvalho de Melo wrote: > Em Thu, Aug 13, 2015 at 10:53:36AM +0200, Milian Wolff escreveu: > > On Thursday, August 13, 2015 09:17:24 AM Jiri Olsa wrote: > > > right you are.. does attached patch help? > > > > <snip> > > > > Hey Jiri, > > > > it works a treat! > > > > Many thanks, much appreciated. > > Adding a "Tested-by: Milian", Ok? Sure, please go ahead. Thanks -- Milian Wolff | milian.wolff@kdab.com | Software Engineer KDAB (Deutschland) GmbH&Co KG, a KDAB Group company Tel: +49-30-521325470 KDAB - The Qt Experts ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2015-08-17 13:56 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2015-07-22 18:48 perf script: how to print user-space backtrace? Milian Wolff 2015-08-13 7:17 ` [PATCH] perf script: Initialize callchain_param.record_mode Jiri Olsa 2015-08-13 8:53 ` Milian Wolff 2015-08-17 13:47 ` Arnaldo Carvalho de Melo 2015-08-17 13:56 ` Milian Wolff
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).