* 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; 6+ 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] 6+ 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 2015-08-20 9:55 ` [tip:perf/core] " tip-bot for Jiri Olsa 0 siblings, 2 replies; 6+ 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] 6+ 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 2015-08-20 9:55 ` [tip:perf/core] " tip-bot for Jiri Olsa 1 sibling, 1 reply; 6+ 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] 6+ 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; 6+ 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] 6+ 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; 6+ 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] 6+ messages in thread
* [tip:perf/core] 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-20 9:55 ` tip-bot for Jiri Olsa 1 sibling, 0 replies; 6+ messages in thread From: tip-bot for Jiri Olsa @ 2015-08-20 9:55 UTC (permalink / raw) To: linux-tip-commits Cc: dsahern, mail, acme, mingo, jolsa, milian.wolff, hpa, linux-kernel, jolsa, namhyung, tglx, a.p.zijlstra Commit-ID: 7322d6c98dd214252bd697f8dde64a3576977fab Gitweb: http://git.kernel.org/tip/7322d6c98dd214252bd697f8dde64a3576977fab Author: Jiri Olsa <jolsa@redhat.com> AuthorDate: Thu, 13 Aug 2015 09:17:24 +0200 Committer: Arnaldo Carvalho de Melo <acme@redhat.com> CommitDate: Mon, 17 Aug 2015 10:48:39 -0300 perf script: Initialize callchain_param.record_mode 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> Signed-off-by: Jiri Olsa <jolsa@kernel.org> Tested-by: Milian Wolff <milian.wolff@kdab.com> Cc: David Ahern <dsahern@gmail.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Link: http://lkml.kernel.org/r/20150813071724.GA21322@krava.brq.redhat.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> --- 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 7b376d2..105332e 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; ^ permalink raw reply related [flat|nested] 6+ messages in thread
end of thread, other threads:[~2015-08-20 9:56 UTC | newest] Thread overview: 6+ 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 2015-08-20 9:55 ` [tip:perf/core] " tip-bot for Jiri Olsa
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.