From: Lai Jiangshan <laijs@cn.fujitsu.com>
To: Steven Rostedt <rostedt@goodmis.org>,
Frederic Weisbecker <fweisbec@gmail.com>,
LKML <linux-kernel@vger.kernel.org>
Subject: tracing: confusing output of function_graph when notrace function calls traceable function
Date: Wed, 06 Jan 2010 18:44:02 +0800 [thread overview]
Message-ID: <4B446972.9050901@cn.fujitsu.com> (raw)
cat <debugfs_dir>/tracing/trace
you can get these at the end of the outputs:
1) | nameidata_to_filp() {
1) | __dentry_open() {
1) | file_move() {
1) 0.834 us | _raw_spin_lock();
1) 0.926 us | _raw_spin_unlock();
1) 4.768 us | }
!!!! file_move() is really called by __dentry_open()
1) | kmem_cache_alloc_notrace() {
1) 5.879 us | memset();
1) + 12.390 us | }
1) 1.025 us | mutex_lock();
1) | kmem_cache_alloc_notrace() {
1) 0.929 us | memset();
1) 3.329 us | }
1) 1.195 us | memcpy();
1) 1.026 us | __mutex_init();
!!!! the above are actually called by __tracing_open() which called by __dentry_open()
(But at the first I was confused, I wondered why __dentry_open() calls them.)
1) | kmem_cache_alloc_notrace() {
1) 0.978 us | memset();
1) 2.745 us | }
1) | __alloc_percpu() {
1) | pcpu_alloc() {
1) 1.053 us | mutex_lock();
1) 1.282 us | _raw_spin_lock_irqsave();
1) | pcpu_size_to_slot() {
1) 0.819 us | __pcpu_size_to_slot();
1) 5.455 us | }
1) 1.135 us | pcpu_need_to_extend();
1) | pcpu_alloc_area() {
1) | pcpu_chunk_slot() {
1) | pcpu_size_to_slot() {
1) 0.813 us | __pcpu_size_to_slot();
1) 2.535 us | }
1) 8.349 us | }
1) 1.160 us | memmove();
1) | pcpu_chunk_relocate() {
1) | pcpu_chunk_slot() {
1) | pcpu_size_to_slot() {
1) 0.803 us | __pcpu_size_to_slot();
1) 2.478 us | }
1) 4.129 us | }
1) 8.583 us | }
1) + 29.665 us | }
1) 1.038 us | _raw_spin_unlock_irqrestore();
1) 1.178 us | pcpu_next_pop();
1) 1.087 us | pcpu_chunk_addr();
1) 0.975 us | memset();
1) 0.821 us | pcpu_chunk_addr();
1) 0.943 us | memset();
1) 0.896 us | mutex_unlock();
1) + 75.625 us | }
1) + 77.453 us | }
!!!! the above are actually called by graph_trace_open() which called by __tracing_open()
== real graph ==:
father_fun()
child_fun()
notrace_child_fun()
grandchild_fun1()
grandchild_fun2()
===function_graph shows===>
father_fun()
child_fun()
grandchild_fun1()
grandchild_fun2()
When the notrace function calls traceable function, function_graph will
get wrong depth of functions, and show wrong graph.
Is there any method to fix it?
Lai
next reply other threads:[~2010-01-06 10:45 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-01-06 10:44 Lai Jiangshan [this message]
2010-01-06 13:08 ` tracing: confusing output of function_graph when notrace function calls traceable function Jiri Olsa
2010-01-06 15:16 ` Steven Rostedt
2010-01-06 18:15 ` Tim Bird
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4B446972.9050901@cn.fujitsu.com \
--to=laijs@cn.fujitsu.com \
--cc=fweisbec@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=rostedt@goodmis.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.