From: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
To: Steven Rostedt <rostedt@goodmis.org>
Cc: LKML <linux-kernel@vger.kernel.org>, Ingo Molnar <mingo@elte.hu>,
Linus Torvalds <torvalds@linux-foundation.org>,
Andrew Morton <akpm@linux-foundation.org>,
Peter Zijlstra <a.p.zijlstra@chello.nl>,
Christoph Hellwig <hch@infradead.org>,
Gregory Haskins <ghaskins@novell.com>,
Arnaldo Carvalho de Melo <acme@ghostprotocols.net>,
"William L. Irwin" <sparclinux@vger.kernel.org>,
Tim Bird <tim.bird@am.sony.com>
Subject: Re: [RFC PATCH 00/11] mcount tracing utility
Date: Thu, 3 Jan 2008 12:22:38 -0500 [thread overview]
Message-ID: <20080103172238.GD27651@Krystal> (raw)
In-Reply-To: <20080103071609.478486470@goodmis.org>
Hi Steven,
Great work!
(added Tim Bird, author of KFT/KFI to the CC list)
* Steven Rostedt (rostedt@goodmis.org) wrote:
>
...
>
> Future:
> -------
> The way the mcount hook is done here, other utilities can easily add their
> own functions. Just care needs to be made not to call anything that is not
> marked with notrace, or you will crash the box with recursion. But
> even the simple tracer adds a "disabled" feature so in case it happens
> to call something that is not marked with notrace, it is a safety net
> not to kill the box.
>
> I was originally going to use the relay system to record the data, but
> that had a chance of calling functions not marked with notrace. But, if
> for example LTTng wanted to use this, it could disable tracing on a CPU
> when doing the calls, and this will protect from recusion.
>
Yes, I'd love to add this information source to LTTng. It simply boils
down to adding a "notrace" flag to LTTng tracing functions. Since I
don't use relay code _at all_ in the tracing path, there is no problem
with this (I only disable preemption and do "local" atomic operations on
per-cpu variables). Then I would have to do the glue code that registers
the LTTng handler to your mcount mechanism.
One interesting aspect of LTTng is that is would be very lightweight.
You seem to use interrupt disabling with your simple tracer and do a
_lot_ of cacheline bouncing (trace_idx[NR_CPUS] is a very good exemple).
LTTng would write the information to a per-cpu memory buffer in binary
format. I see that it would be especially useful in flight recorder
mode, where we overwrite the buffers without writing them to disk : when
a problematic condition is reached, (a kernel oops would be a good one),
then we just stop tracing and dump the last buffers to disk. In this
case, we would have the last function calls that led to an OOPS.
Mathieu
--
Mathieu Desnoyers
Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
next prev parent reply other threads:[~2008-01-03 17:22 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-01-03 7:16 [RFC PATCH 00/11] mcount tracing utility Steven Rostedt
2008-01-03 7:16 ` [RFC PATCH 01/11] Add basic support for gcc profiler instrumentation Steven Rostedt
2008-01-03 8:31 ` Sam Ravnborg
2008-01-03 14:03 ` Steven Rostedt
2008-01-03 9:21 ` Ingo Molnar
2008-01-03 13:58 ` Steven Rostedt
2008-01-03 18:16 ` Chris Wright
2008-01-03 19:15 ` Steven Rostedt
2008-01-03 19:17 ` Chris Wright
2008-01-03 19:18 ` Jeremy Fitzhardinge
2008-01-03 16:01 ` Daniel Walker
2008-01-03 17:35 ` Mathieu Desnoyers
2008-01-03 17:55 ` Steven Rostedt
2008-01-03 7:16 ` [RFC PATCH 02/11] Add fastcall to do_IRQ for i386 Steven Rostedt
2008-01-03 17:36 ` Mathieu Desnoyers
2008-01-03 17:47 ` Steven Rostedt
2008-01-07 4:50 ` H. Peter Anvin
2008-01-07 12:42 ` Steven Rostedt
2008-01-03 7:16 ` [RFC PATCH 03/11] Annotate core code that should not be traced Steven Rostedt
2008-01-03 17:42 ` Mathieu Desnoyers
2008-01-03 18:07 ` Steven Rostedt
2008-01-03 18:34 ` Mathieu Desnoyers
2008-01-03 7:16 ` [RFC PATCH 04/11] i386: notrace annotations Steven Rostedt
2008-01-03 17:52 ` Mathieu Desnoyers
2008-01-03 7:16 ` [RFC PATCH 05/11] x86_64: " Steven Rostedt
2008-01-03 7:16 ` [RFC PATCH 06/11] add notrace annotations to vsyscall Steven Rostedt
2008-01-03 7:16 ` [RFC PATCH 07/11] mcount based trace in the form of a header file library Steven Rostedt
2008-01-03 7:16 ` [RFC PATCH 08/11] tracer add debugfs interface Steven Rostedt
2008-01-03 7:16 ` [RFC PATCH 09/11] mcount tracer output file Steven Rostedt
2008-01-03 7:16 ` [RFC PATCH 10/11] mcount tracer show task comm and pid Steven Rostedt
2008-01-03 17:56 ` Mathieu Desnoyers
2008-01-06 15:37 ` Ingo Molnar
2008-01-07 4:45 ` Mathieu Desnoyers
2008-01-09 16:45 ` Ingo Molnar
2008-01-03 7:16 ` [RFC PATCH 11/11] Add a symbol only trace output Steven Rostedt
2008-01-03 17:22 ` Mathieu Desnoyers [this message]
2008-01-03 17:42 ` [RFC PATCH 00/11] mcount tracing utility Steven Rostedt
2008-01-03 18:05 ` Andi Kleen
2008-01-04 6:42 ` Frank Ch. Eigler
2008-01-08 20:35 ` 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=20080103172238.GD27651@Krystal \
--to=mathieu.desnoyers@polymtl.ca \
--cc=a.p.zijlstra@chello.nl \
--cc=acme@ghostprotocols.net \
--cc=akpm@linux-foundation.org \
--cc=ghaskins@novell.com \
--cc=hch@infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=rostedt@goodmis.org \
--cc=sparclinux@vger.kernel.org \
--cc=tim.bird@am.sony.com \
--cc=torvalds@linux-foundation.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox