From: Steven Rostedt <rostedt@goodmis.org>
To: linux-kernel@vger.kernel.org
Cc: Ingo Molnar <mingo@kernel.org>,
Andrew Morton <akpm@linux-foundation.org>,
Thomas Gleixner <tglx@linutronix.de>,
Peter Zijlstra <peterz@infradead.org>,
Frederic Weisbecker <fweisbec@gmail.com>
Subject: [PATCH 0/8][RFC] tracing: Using recursion bits for function tracing and ring buffer
Date: Fri, 02 Nov 2012 18:38:28 -0400 [thread overview]
Message-ID: <20121102223828.795874032@goodmis.org> (raw)
A couple of months ago I was playing with getting recursion
fixed with the function tracer. There's a lot of places that could
use improvements, and I also found a few cases where the recursion
protection would have false positives causing missed function tracing.
I implemented a per context bit checking (Normal, SoftIRQ, IRQ and NMI).
Using 4 bits in the task_struct trace_recursion field, I was
able to fix these issues as well as improve the speed of the function
tracer and ring buffer.
Before the patches I had:
# echo function > /debug/tracing/current_tracer
# for i in `seq 10`; do ./hackbench 50; done
Time: 12.028
Time: 11.945
Time: 11.925
Time: 11.964
Time: 12.002
Time: 11.910
Time: 11.944
Time: 11.929
Time: 11.941
Time: 11.924
(average: 11.9512)
Now we have:
# echo function > /debug/tracing/current_tracer
# for i in `seq 10`; do ./hackbench 50; done
Time: 9.712
Time: 9.824
Time: 9.861
Time: 9.827
Time: 9.962
Time: 9.905
Time: 9.886
Time: 10.088
Time: 9.861
Time: 9.834
(average: 9.876)
This is a total of a 17.4% improvement in function tracing!
Steven Rostedt (8):
ftrace: Fix global function tracers that are not recursion safe
ftrace: Fix function tracing recursion self test
ftrace: Optimize the function tracer list loop
ftrace: Add context level recursion bit checking
tracing: Make the trace recursion bits into enums
tracing: Avoid unnecessary multiple recursion checks
ftrace: Use only the preempt version of function tracing
ring-buffer: User context bit recursion checking
----
kernel/trace/ftrace.c | 82 ++++++++++++++++---------
kernel/trace/ring_buffer.c | 85 +++++++++++++++++--------
kernel/trace/trace.h | 133 ++++++++++++++++++++++++++++++++++++----
kernel/trace/trace_functions.c | 61 +++++-------------
kernel/trace/trace_selftest.c | 3 +-
5 files changed, 248 insertions(+), 116 deletions(-)
next reply other threads:[~2012-11-02 22:45 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-11-02 22:38 Steven Rostedt [this message]
2012-11-02 22:38 ` [PATCH 1/8][RFC] ftrace: Fix global function tracers that are not recursion safe Steven Rostedt
2012-11-02 22:38 ` [PATCH 2/8][RFC] ftrace: Fix function tracing recursion self test Steven Rostedt
2012-11-02 22:38 ` [PATCH 3/8][RFC] ftrace: Optimize the function tracer list loop Steven Rostedt
2012-11-02 22:38 ` [PATCH 4/8][RFC] ftrace: Add context level recursion bit checking Steven Rostedt
2012-11-02 22:38 ` [PATCH 5/8][RFC] tracing: Make the trace recursion bits into enums Steven Rostedt
2012-11-02 22:38 ` [PATCH 6/8][RFC] tracing: Avoid unnecessary multiple recursion checks Steven Rostedt
2012-11-02 22:38 ` [PATCH 7/8][RFC] ftrace: Use only the preempt version of function tracing Steven Rostedt
2012-11-02 22:38 ` [PATCH 8/8][RFC] ring-buffer: User context bit recursion checking Steven Rostedt
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=20121102223828.795874032@goodmis.org \
--to=rostedt@goodmis.org \
--cc=akpm@linux-foundation.org \
--cc=fweisbec@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=peterz@infradead.org \
--cc=tglx@linutronix.de \
/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.