From: Ingo Molnar <mingo@elte.hu>
To: Peter Zijlstra <peterz@infradead.org>
Cc: Pekka Enberg <penberg@kernel.org>,
Thomas Gleixner <tglx@linutronix.de>,
Steven Rostedt <rostedt@goodmis.org>,
Arjan van de Ven <arjan@linux.intel.com>,
Arnaldo Carvalho de Melo <acme@redhat.com>,
Frederic Weisbecker <fweisbec@gmail.com>,
linux-kernel@vger.kernel.org,
Linus Torvalds <torvalds@linux-foundation.org>,
Andrew Morton <akpm@linux-foundation.org>,
Darren Hart <dvhart@linux.intel.com>,
Arjan van de Ven <arjan@infradead.org>
Subject: Re: [patch] trace: Add user-space event tracing/injection
Date: Wed, 17 Nov 2010 13:58:27 +0100 [thread overview]
Message-ID: <20101117125827.GB27063@elte.hu> (raw)
In-Reply-To: <1289997733.2109.743.camel@laptop>
* Peter Zijlstra <peterz@infradead.org> wrote:
> On Wed, 2010-11-17 at 14:33 +0200, Pekka Enberg wrote:
> > On 11/17/10 2:30 PM, Ingo Molnar wrote:
> > > What does the duration in milliseconds mean there? For things like
> > >> GC and JIT, I want something like:
> > >>
> > >> void gc(void)
> > >> {
> > >> prctl(PR_TASK_PERF_USER_TRACE_START, ...)
> > >>
> > >> collect();
> > >>
> > >> prctl(PR_TASK_PERF_USER_TRACE_END, ...)
> > >> }
> > >>
> > >> So that it's clear from the tracing output that the VM was busy
> > >> doing GC for n milliseconds. Barring background JIT'ing and
> > >> pauseless GC, I'd also be interested in showing how much time the VM
> > >> was actually _blocking_ the running application (which can happen
> > >> with signals too, btw, for things like accessing data that's lazily
> > >> initialized).
> > > We can add two events: user_event_entry/user_event_exit - or we could use the string
> > > to differentiate, and start it with:
> > >
> > > "entry: ..."
> > > "exit: ..."
> > >
> > > And then the event timestamps (which are absolute and are available) could be used
> > > to calculate the duration of this period.
> > >
> > > 'trace' could even be taught to treat such entry:/exit: strings in a special way, so
> > > that you dont have to write Jato specific trace decoding bits?
> >
> > Yes, makes sense. I like the API so lets convince others that it's
> > important enough to be merged. :-)
>
> I don't much like it, Jato already does its own tracing for the anon_vma
> symbols, it might as well write its own event log too (would need a
> proper VDSO clock thingy though).
The problem is that it then does not properly mix with other events outside of the
control of the application.
For example if there are two apps both generating user events, but there's no
connection with them, a system-wide tracer wont get a properly ordered set of events
- both apps will trace into their own buffers. So if we have:
CPU1
app1: "user event X"
app2: "user event Y"
Then a 'trace --all' system-wide tracing session will not get proper ordering
between app1 and app2's events. It only gets timestamps - which may or may not be
correct.
User-space tracing schemes tend to be clumsy and limiting. There's other
disadvantages as well: approaches that expose a named pipe in /tmp or an shmem
region are not transparent and robust either: if user-space owns a pending buffer
then bugs in the apps can corrupt the trace buffer, can prevent its flushing when
the app goes down due to an app bug (and when the trace would be the most useful),
etc. etc.
Also, in general their deployment isnt particularly fast nor lightweight - while
prctl() is available everywhere.
And when it comes to tracing/instrumentation, if we make deployment too complex,
people will simply not use it - and we all use. A prctl() isnt particularly sexy
design, but it's a task/process event that we are generating (so related to prctls),
plus it's available everywhere and is very easy to deploy.
Thanks,
Ingo
next prev parent reply other threads:[~2010-11-17 12:58 UTC|newest]
Thread overview: 88+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-11-16 21:04 [ANNOUNCE] New utility: 'trace' Thomas Gleixner
2010-11-16 21:27 ` Darren Hart
2010-11-16 21:59 ` Ingo Molnar
2010-11-16 22:03 ` Peter Zijlstra
2010-11-16 22:08 ` Ingo Molnar
2010-11-16 22:09 ` Darren Hart
2010-11-16 22:48 ` Darren Hart
2010-11-16 22:07 ` Darren Hart
2010-11-16 22:17 ` Frederic Weisbecker
2010-11-17 8:30 ` Ingo Molnar
2010-11-17 11:35 ` Peter Zijlstra
2010-11-17 12:53 ` Frederic Weisbecker
2010-11-17 13:02 ` Peter Zijlstra
2010-11-17 13:10 ` Ingo Molnar
2010-11-17 13:36 ` Peter Zijlstra
2010-11-17 13:43 ` Frederic Weisbecker
2010-11-17 13:53 ` Peter Zijlstra
2010-11-17 14:10 ` Frederic Weisbecker
2010-11-17 15:02 ` Steven Rostedt
2010-11-17 18:13 ` Ted Ts'o
2010-11-17 18:29 ` Frederic Weisbecker
2010-11-17 18:30 ` Darren Hart
2010-11-17 16:49 ` Darren Hart
2010-11-18 23:23 ` Joe Perches
2010-11-16 21:35 ` Ingo Molnar
2010-11-17 1:37 ` Ted Ts'o
2010-11-17 1:47 ` Steven Rostedt
2010-11-17 3:16 ` Ted Ts'o
2010-11-17 3:34 ` Steven Rostedt
2010-11-17 19:00 ` Bob Copeland
2010-11-17 13:24 ` Ingo Molnar
2010-11-17 13:38 ` Peter Zijlstra
2010-11-17 14:00 ` Ingo Molnar
2010-11-17 14:11 ` Peter Zijlstra
2010-11-17 14:18 ` Peter Zijlstra
2010-11-17 14:37 ` Thomas Gleixner
2010-11-17 14:41 ` Peter Zijlstra
2010-11-17 15:41 ` Tom Zanussi
2010-11-17 15:55 ` Avi Kivity
2010-11-17 15:58 ` Thomas Gleixner
2010-11-17 16:20 ` Avi Kivity
2010-11-17 15:59 ` Peter Zijlstra
2010-11-17 16:08 ` Avi Kivity
2010-11-17 15:10 ` Steven Rostedt
2010-11-17 15:43 ` Peter Zijlstra
2010-11-17 16:04 ` Steven Rostedt
2010-11-17 16:15 ` Steven Rostedt
2010-11-17 19:40 ` Darren Hart
2010-11-17 18:23 ` Mathieu Desnoyers
2010-11-18 5:58 ` Masami Hiramatsu
2010-11-18 6:00 ` Masami Hiramatsu
2010-11-17 15:33 ` Tom Zanussi
2010-11-17 18:36 ` Mathieu Desnoyers
2010-11-17 18:53 ` Tom Zanussi
2010-11-17 19:02 ` Mathieu Desnoyers
2010-11-17 19:25 ` Tom Zanussi
2010-11-17 19:25 ` Steven Rostedt
2010-11-17 9:49 ` Philipp Marek
[not found] ` <4CE38C53.8090606@kernel.org>
2010-11-17 12:07 ` [patch] trace: Add user-space event tracing/injection Ingo Molnar
2010-11-17 12:17 ` Pekka Enberg
2010-11-17 12:30 ` Ingo Molnar
2010-11-17 12:33 ` Pekka Enberg
2010-11-17 12:42 ` Peter Zijlstra
2010-11-17 12:58 ` Ingo Molnar [this message]
2010-11-17 13:09 ` Peter Zijlstra
2010-11-17 13:36 ` Ingo Molnar
2010-11-17 12:24 ` Ingo Molnar
2010-11-17 12:30 ` Pekka Enberg
2010-11-17 12:29 ` Peter Zijlstra
2010-11-17 12:37 ` Peter Zijlstra
2010-11-17 13:10 ` Frederic Weisbecker
2010-11-17 13:31 ` Peter Zijlstra
2010-11-17 13:33 ` Frederic Weisbecker
2010-11-18 1:18 ` Darren Hart
2010-11-18 8:55 ` Ingo Molnar
2010-11-18 16:25 ` hp
2010-11-18 18:56 ` Ingo Molnar
2010-11-18 19:13 ` AW: " Reichert, Hans-Peter
2010-11-18 17:06 ` Darren Hart
2010-11-17 12:47 ` [ANNOUNCE] New utility: 'trace' Török Edwin
2010-11-17 12:51 ` Peter Zijlstra
2010-11-17 13:05 ` Török Edwin
2010-11-17 13:10 ` Peter Zijlstra
2010-11-17 13:32 ` Frederic Weisbecker
2010-11-18 0:47 ` Ian Munsie
[not found] ` <20101118151141.GA3368@redhat.com>
2010-11-19 2:32 ` Ian Munsie
2010-11-19 15:23 ` Jason Baron
[not found] ` <4CECACF9.3080907@linux.vnet.ibm.com>
[not found] ` <4CFD7182.4060206@linux.vnet.ibm.com>
2010-12-07 4:03 ` PowerPC, ftrace: Add PPC raw syscall tracepoints & ftrace fixes Ian Munsie
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=20101117125827.GB27063@elte.hu \
--to=mingo@elte.hu \
--cc=acme@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=arjan@infradead.org \
--cc=arjan@linux.intel.com \
--cc=dvhart@linux.intel.com \
--cc=fweisbec@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=penberg@kernel.org \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.org \
--cc=tglx@linutronix.de \
--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
all inboxes | Powered by JetHome®