From: Peter Zijlstra <peterz@infradead.org>
To: rostedt@goodmis.org
Cc: Frederic Weisbecker <fweisbec@gmail.com>,
Ingo Molnar <mingo@elte.hu>, Paul Mackerras <paulus@samba.org>,
Arnaldo Carvalho de Melo <acme@infradead.org>,
Thomas Gleixner <tglx@linutronix.de>,
linux-kernel@vger.kernel.org
Subject: Re: [RFC PATCH 5/5] perf: Implement perf_output_addr()
Date: Wed, 19 May 2010 17:05:06 +0200 [thread overview]
Message-ID: <1274281506.5605.11111.camel@twins> (raw)
In-Reply-To: <1274280439.26328.770.camel@gandalf.stny.rr.com>
On Wed, 2010-05-19 at 10:47 -0400, Steven Rostedt wrote:
> On Wed, 2010-05-19 at 09:58 +0200, Peter Zijlstra wrote:
> > On Wed, 2010-05-19 at 09:21 +0200, Frederic Weisbecker wrote:
> >
> > > I'm still not sure what you mean here by this multiplexing. Is
> > > this about per cpu multiplexing?
> >
> > Suppose there's two events attached to the same tracepoint. Will you
> > write the tracepoint twice and risk different data in each, or will you
> > do it once and copy it into each buffer?
>
> Is this because the same function deals with the same tracepoint, and
> has difficulty in knowing which event it is dealing with?
No, but suppose the tracepoint has a racy expression in it. Having to
evaluate { assign; } multiple times could yield different results, which
in turn means you have to run the filter multiple times too, etc..
Although I suppose you could delay the commit of the first even and copy
from there into the next events, but that might give rather messy code.
> Note, the shrinking of the TRACE_EVENT() code that I pushed (and I'm
> hoping makes it to 35 since it lays the ground work for lots of features
> on top of TRACE_EVENT()), allows you to pass private data to each probe
> registered to the tracepoint. Letting the same function handle two
> different activities, or different tracepoints.
tracepoint_probe_register() is useless, it requires scheduling. I
currently register a probe on pref_event creation and then maintain a
per-cpu hlist of active events.
> > > There is another problem. We need something like
> > > perf_output_discard() in case the filter reject the event (which
> > > must be filled for this check to happen).
> >
> > Yeah, I utterly hate that, I opted to let anything with a filter take
> > the slow path. Not only would I have to add a discard, but I'd have to
> > decrement the counter as well, which is a big no-no.
>
> Hmm, this would impact performance on system wide recording of events
> that are filtered. One would think adding a filter would speed things
> up, not slow it down.
Depends, actually running the filter and backing out might take more
time than simply logging it, esp if you've already done all of the work
and only lack a commit.
next prev parent reply other threads:[~2010-05-19 15:05 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-05-18 13:32 [PATCH 0/5] Optimize perf ring-buffer Peter Zijlstra
2010-05-18 13:32 ` [PATCH 1/5] perf: Disallow mmap() on per-task inherited events Peter Zijlstra
2010-05-19 7:19 ` Frederic Weisbecker
2010-05-25 0:55 ` Paul Mackerras
2010-05-25 8:19 ` Peter Zijlstra
2010-05-18 13:33 ` [PATCH 2/5] perf: Remove IRQ-disable from the perf_output path Peter Zijlstra
2010-05-18 13:33 ` [PATCH 3/5] perf: Convert the perf output buffer to local_t Peter Zijlstra
2010-05-18 13:33 ` [PATCH 4/5] perf: Avoid local_xchg Peter Zijlstra
2010-05-18 13:33 ` [RFC PATCH 5/5] perf: Implement perf_output_addr() Peter Zijlstra
2010-05-18 14:09 ` Peter Zijlstra
2010-05-19 7:21 ` Frederic Weisbecker
2010-05-19 7:58 ` Peter Zijlstra
2010-05-19 9:03 ` Frederic Weisbecker
2010-05-19 14:47 ` Steven Rostedt
2010-05-19 15:05 ` Peter Zijlstra [this message]
2010-05-19 15:38 ` Steven Rostedt
2010-05-19 15:50 ` Peter Zijlstra
2010-05-19 16:08 ` Steven Rostedt
2010-05-19 16:15 ` Peter Zijlstra
2010-05-19 16:27 ` Steven Rostedt
2010-05-19 16:34 ` Peter Zijlstra
2010-05-19 7:14 ` [PATCH 0/5] Optimize perf ring-buffer Frederic Weisbecker
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=1274281506.5605.11111.camel@twins \
--to=peterz@infradead.org \
--cc=acme@infradead.org \
--cc=fweisbec@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=paulus@samba.org \
--cc=rostedt@goodmis.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox