All of lore.kernel.org
 help / color / mirror / Atom feed
From: Frederic Weisbecker <fweisbec@gmail.com>
To: Tom Zanussi <tzanussi@gmail.com>
Cc: linux-kernel@vger.kernel.org, mingo@elte.hu, rostedt@goodmis.org,
	k-keiichi@bx.jp.nec.com
Subject: Re: [PATCH 08/12] perf: export some syscall metadata
Date: Sat, 27 Mar 2010 01:37:26 +0100	[thread overview]
Message-ID: <20100327003724.GJ7166@nowhere> (raw)
In-Reply-To: <1267080695.6611.188.camel@tropicana>

On Thu, Feb 25, 2010 at 12:51:35AM -0600, Tom Zanussi wrote:
> On Thu, 2010-02-25 at 03:43 +0100, Frederic Weisbecker wrote:
> > On Wed, Feb 24, 2010 at 12:00:43AM -0600, Tom Zanussi wrote:
> > > Re event injection - I don't know that much about it, but if it can be
> > > used for this, could it also be applied to the rest of the trace and
> > > header data too?  If so, that would enable 'live mode' tracing.  I
> > > already have a working prototype that does it by converting all those
> > > things into synthesized pseudo-events, but it would be nicer to use the
> > > event injection framework instead, if I understand it correctly...
> > 
> > 
> > I'm not sure what you mean about live mode tracing. But yeah this
> > about synthetizing pseudo-events. The purpose is to catchup with
> > "past events" or "dead events".
> > 
> > The first trial was for lock_init events. Lock init events send
> > the address of the lock plus its name, so that subsequent lock
> > events (lock acquire, lock_release) can just send the address
> > in the event and not the name which can then be retrieved
> > from past lock_init events.
> > 
> > One problem though: when we enable the lock_init event, we
> > only catch the new locks created. So we need the previously
> > registered locks. There may be severals ways to do that: using
> > a perf ioctl or so, it's still in discussion.
> > 
> > But then for syscalls we would have a kind of dead events
> > catching up by asking the kernel to send us the nr:name
> > pairs.
> > 
> 
> By 'live mode' tracing, I mean feeding the trace stream continuously to
> the script rather than writing it to disk and then later running the
> script on the file data.  Basically something like this:
> 
> $ perf record -e event1 -e event2 -o - | perf trace -s myscript.py -i -
> 
> where the output of perf record is streamed to stdout and piped to the
> the script, which continuously reads and processes events from stdin,
> until the user hits ctrl-c or the script detects some arbitrary pattern
> or condition in the trace stream and stops and prints out the results.
> 
> This would allow a whole new class of use cases e.g. you could easily
> convert any of the current scripts into 'top' versions by adding a timer
> that would display and clear the current results on each tick, say every
> 5 seconds.  Or just actively scan the trace data for some arbitrarily
> complex condition, while also saving the last n trace records and
> dumping them when the condition is found, etc...
> 
> The main obstacle to doing this with the current perf is the header
> data, which in my prototype I've converted into 4 pseudo events - attrs,
> event_types, tracing_data and build_ids, basically getting rid of
> everything than uses a seek, so I can shove it all over a pipe.
> 
> It does seem to me that event injection could be used for this instead
> e.g. similar to the case of lock_init/subsequent lock events, for the
> script to be able to process an event it needs the event information
> contained in the trace_data, which could be sent as an injected event,
> for that subsequent event.  My prototype just sends it all as one huge
> event right now, but if it were broken down into individual events, that
> would also allow new events to be added and removed dynamically.  So in
> addition to 'live mode' we could add 'dynamic' mode as well. :-)
> 
> So yeah, it looks like it would be useful for the syscall names, but
> hopefully much more than that...


Ok, I see what you mean by live mode now.
But I  don't understand why you'd need the injection for that.
If you start a recording, even if it is launched in live mode, you
can parse the necessary format information before, right?


  reply	other threads:[~2010-03-27  0:37 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-01-27  8:27 [PATCH 00/12] perf trace: Python scripting support Tom Zanussi
2010-01-27  8:27 ` [PATCH 01/12] perf trace/scripting: Fix supported language listing option Tom Zanussi
2010-02-25 10:06   ` [tip:perf/core] perf/scripts: " tip-bot for Tom Zanussi
2010-01-27  8:27 ` [PATCH 02/12] perf trace/scripting: fix bug in Util.pm Tom Zanussi
2010-02-25 10:06   ` [tip:perf/core] perf/scripts: Fix " tip-bot for Tom Zanussi
2010-01-27  8:27 ` [PATCH 03/12] perf trace/scripting: move common code out of Perl-specific files Tom Zanussi
2010-02-25 10:07   ` [tip:perf/core] perf/scripts: Move " tip-bot for Tom Zanussi
2010-01-27  8:27 ` [PATCH 04/12] perf trace/scripting: move Perl scripting files to scripting-engines dir Tom Zanussi
2010-02-25 10:07   ` [tip:perf/core] perf/scripts: Move " tip-bot for Tom Zanussi
2010-01-27  8:27 ` [PATCH 05/12] perf trace/scripting: remove check-perf-trace from listed scripts Tom Zanussi
2010-02-22  1:51   ` Frederic Weisbecker
2010-02-25 10:07   ` [tip:perf/core] perf/scripts: Remove " tip-bot for Tom Zanussi
2010-02-25 10:07   ` [tip:perf/core] perf/scripts: Add Python scripting engine tip-bot for Tom Zanussi
2010-01-27  8:27 ` [PATCH 06/12] perf trace/scripting: add " Tom Zanussi
2010-02-22  2:27   ` Frederic Weisbecker
2010-02-22  7:12     ` Tom Zanussi
2010-02-25 10:08       ` [tip:perf/core] perf/scripts: Remove unnecessary PyTuple resizes tip-bot for Tom Zanussi
2010-01-27  8:27 ` [PATCH 07/12] perf trace/scripting: add syscall tracing scripts Tom Zanussi
2010-02-25 10:08   ` [tip:perf/core] perf/scripts: Add " tip-bot for Tom Zanussi
2010-01-27  8:27 ` [PATCH 08/12] perf: export some syscall metadata Tom Zanussi
2010-02-23 21:44   ` Frederic Weisbecker
2010-02-24  6:00     ` Tom Zanussi
2010-02-25  1:52       ` Frederic Weisbecker
2010-02-25  6:09         ` Tom Zanussi
2010-02-25  2:43       ` Frederic Weisbecker
2010-02-25  6:51         ` Tom Zanussi
2010-03-27  0:37           ` Frederic Weisbecker [this message]
2010-03-28  5:18             ` Tom Zanussi
2010-01-27  8:28 ` [PATCH 09/12] perf tools: save syscall map Tom Zanussi
2010-01-27  8:28 ` [PATCH 10/12] perf trace/scripting: make the syscall map available as a Python dict Tom Zanussi
2010-01-27  8:28 ` [PATCH 11/12] perf trace/scripting: make the syscall map available as a Perl hash Tom Zanussi
2010-01-27  8:28 ` [PATCH 12/12] perf trace/scripting: add perf-trace-python Documentation Tom Zanussi
2010-02-25  1:37   ` Frederic Weisbecker
2010-02-25  6:06     ` Tom Zanussi
2010-02-25 10:08   ` [tip:perf/core] perf/scripts: Add " tip-bot for Tom Zanussi
2010-02-19 21:37 ` [PATCH 00/12] perf trace: Python scripting support Frederic Weisbecker
2010-02-20 21:51   ` Tom Zanussi
2010-02-23 17:31     ` 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=20100327003724.GJ7166@nowhere \
    --to=fweisbec@gmail.com \
    --cc=k-keiichi@bx.jp.nec.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=rostedt@goodmis.org \
    --cc=tzanussi@gmail.com \
    /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.