public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Werner Almesberger <wa@almesberger.net>
To: Karim Yaghmour <karim@opersys.com>
Cc: tglx@linutronix.de, Roman Zippel <zippel@linux-m68k.org>,
	Tim Bird <tim.bird@am.sony.com>,
	LKML <linux-kernel@vger.kernel.org>,
	Andrew Morton <akpm@osdl.org>, Tom Zanussi <zanussi@us.ibm.com>,
	Richard J Moore <richardj_moore@uk.ibm.com>
Subject: Re: [RFC] Instrumentation (was Re: 2.6.11-rc1-mm1)
Date: Wed, 19 Jan 2005 04:13:25 -0300	[thread overview]
Message-ID: <20050119041325.C26705@almesberger.net> (raw)
In-Reply-To: <41EB1AEC.3000106@opersys.com>; from karim@opersys.com on Sun, Jan 16, 2005 at 08:54:52PM -0500

>From all I've heard and seen of LTT (and I have to admit that most
of it comes from reading this thread, not from reading the code),
I have the impression that it may try to be a bit too specialized,
and thus might miss opportunities for synergy. 

You must be getting tired of people trying to redesign things from
scratch, but maybe you'll humor me anyway ;-)

Karim Yaghmour wrote:
> If you really want to define layers, then there are actually four
> layers:
> 1- hooking mechanism
> 2- event definition / registration
> 3- event management infrastructure
> 4- transport mechanism

For 1, kprobes would seem largely sufficient. In cases where you
don't have a usable attachment point (e.g. in the middle of a
function and you need access to variables with unknown location),
you can add lightweight instrumentation that arranges the code
flow suitably. [1, 2]

2 and 3 should be the main domain of LTT, with 2 sitting on top
of kprobes. kprobes currently doesn't have a nice way for
describing handlers, but that can be fixed [3]. But you probably
don't need a "nice" interface right now, but might be satisfied
with one that works and is fast (?)

>From the discussion, it seems that the management is partially
done by relayfs. I find this a little strange. E.g. instead of
filtering events, you may just not generate them in the first
place, e.g. by not placing a probe, or by filtering in LTT,
before submitting the event.

Timestamps may be fine either way. Restoring sequence should be
a task user-space can handle: in the worst case, you'd have to
read and merge from #cpus streams. Seeking works in that context,
too.

Last but not least, 4 should be simple. Particularly since you're
worried about extreme speeds, there should be as little
processing as you can afford. If you need to seek efficiently
(do you, really ?), you may not even want message boundaries at
that level.

Something that isn't entirely clear to me is if you also need to
aggregate information in buffers. E.g. by updating a record until
is has been retrieved by user space, or by updating a record
when there is no space to create a new one. Such functionality
would add complexity and needs tight sychronization with the
transport.

[1] I've seen the argument that kprobes aren't portable. This
    strikes me a highly questionable. Even if an architecture
    doesn't have a trap instruction (or equivalent code sequence)
    that is at least as short as the shortest instruction, you
    can always fall back to adding instrumentation [2]. Also, if
    you know where your basic blocks are, you may be able to
    use traps that span multiple instructions. I recall that
    things of this kind are already planned for kprobes.

[2] See the "reliable markers" of umlsim from umlsim.sf.net.
    Implementation: cd umlsim/lib; make; tail -50 markers_kernel.h
    Examples: cd umlsim/sim/tests; cat sbug.marker
    They're basically extra-light markup in the source code.
    Works on ia32, but I haven't found a way to get the assembler
    to cooperate for amd64, yet.

[3] I've already solved this problem in umlsim: there, I have a
    Perl/C-like scripting language that allows handlers to do
    pretty much anything they want. Of course, kprobes would
    want pre-compiled C code, not some scripts, but I think the
    design could be developped in a direction that would allow
    both. Will take a while, but since I'll eventually have to
    rewrite the "microcode" anyway, ...

So my comments are basically as follows:

1) kprobes seems like a suitable and elegant mechanism for
   placing all the hooks LTT needs, so I think that it would
   be better to build on this basis, and extend it where
   necessary, than to build yet another specialized variant
   in parallel.
2) LTT should do what it is good at, and not have to worry
   about the rest (i.e. supporting infrastructure).
3) relayfs should be lean and fast, as you intend it to be, so
   that non-LTT tracing or fnord debugging fnord code may find
   it useful, too.

- Werner

-- 
  _________________________________________________________________________
 / Werner Almesberger, Buenos Aires, Argentina         wa@almesberger.net /
/_http://www.almesberger.net/____________________________________________/

  parent reply	other threads:[~2005-01-19  7:14 UTC|newest]

Thread overview: 143+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-01-14  8:23 2.6.11-rc1-mm1 Andrew Morton
2005-01-14  8:47 ` 2.6.11-rc1-mm1 Andi Kleen
2005-01-14  9:27   ` 2.6.11-rc1-mm1 Karim Yaghmour
2005-01-14 10:27   ` 2.6.11-rc1-mm1 Nikita Danilov
2005-01-14 10:38     ` 2.6.11-rc1-mm1 Andi Kleen
2005-01-14 11:06       ` 2.6.11-rc1-mm1 Karim Yaghmour
2005-01-14 15:31         ` 2.6.11-rc1-mm1 Roman Zippel
2005-01-14 21:11           ` 2.6.11-rc1-mm1 Karim Yaghmour
2005-01-14 22:58             ` 2.6.11-rc1-mm1 Tim Bird
2005-01-15  0:20               ` 2.6.11-rc1-mm1 Andi Kleen
2005-01-15  4:25               ` 2.6.11-rc1-mm1 Karim Yaghmour
2005-01-15  1:06             ` 2.6.11-rc1-mm1 Roman Zippel
2005-01-15  4:18               ` 2.6.11-rc1-mm1 Karim Yaghmour
2005-01-16  2:38                 ` 2.6.11-rc1-mm1 Roman Zippel
2005-01-16  6:00                   ` 2.6.11-rc1-mm1 Karim Yaghmour
2005-01-16 16:52                     ` 2.6.11-rc1-mm1 Roman Zippel
2005-01-16 21:18                       ` 2.6.11-rc1-mm1 Karim Yaghmour
2005-01-17  1:37                         ` 2.6.11-rc1-mm1 Thomas Gleixner
2005-01-17  2:24                           ` 2.6.11-rc1-mm1 Karim Yaghmour
2005-01-17 12:20                             ` 2.6.11-rc1-mm1 Thomas Gleixner
2005-01-17 20:32                               ` 2.6.11-rc1-mm1 Karim Yaghmour
2005-01-17 22:31                                 ` 2.6.11-rc1-mm1 Thomas Gleixner
2005-01-17 22:42                                   ` 2.6.11-rc1-mm1 Robert Wisniewski
2005-01-17 23:26                                     ` 2.6.11-rc1-mm1 Thomas Gleixner
2005-01-17 23:41                                   ` 2.6.11-rc1-mm1 Karim Yaghmour
2005-01-18  0:02                                     ` 2.6.11-rc1-mm1 Thomas Gleixner
2005-01-18  3:05                                       ` 2.6.11-rc1-mm1 Karim Yaghmour
2005-01-17 13:54                         ` 2.6.11-rc1-mm1 Roman Zippel
2005-01-17 21:27                           ` 2.6.11-rc1-mm1 Karim Yaghmour
2005-01-17 23:57                             ` 2.6.11-rc1-mm1 Roman Zippel
2005-01-18  4:03                               ` 2.6.11-rc1-mm1 Karim Yaghmour
2005-01-18  4:30                                 ` 2.6.11-rc1-mm1 Aaron Cohen
2005-01-18  4:46                                   ` 2.6.11-rc1-mm1 Karim Yaghmour
2005-01-18  8:07                                     ` 2.6.11-rc1-mm1 Tom Zanussi
2005-01-18 16:40                                       ` 2.6.11-rc1-mm1 Karim Yaghmour
2005-01-18 19:37                                         ` 2.6.11-rc1-mm1 Tom Zanussi
2005-01-18 15:31                                 ` 2.6.11-rc1-mm1 Roman Zippel
2005-01-21  6:26                                   ` 2.6.11-rc1-mm1 Karim Yaghmour
2005-01-21 22:23                                     ` 2.6.11-rc1-mm1 Roman Zippel
2005-01-23  7:43                                       ` 2.6.11-rc1-mm1 Karim Yaghmour
2005-01-23  7:52                                         ` 2.6.11-rc1-mm1 Karim Yaghmour
2005-01-23  8:28                                         ` 2.6.11-rc1-mm1 Karim Yaghmour
2005-01-24  0:38                                         ` 2.6.11-rc1-mm1 Roman Zippel
2005-01-25  9:12                                           ` 2.6.11-rc1-mm1 Karim Yaghmour
2005-01-18  1:13                             ` 2.6.11-rc1-mm1 Roman Zippel
2005-01-18  2:52                               ` 2.6.11-rc1-mm1 Karim Yaghmour
2005-01-17 17:02                         ` 2.6.11-rc1-mm1 Tom Zanussi
2005-01-16 19:05                     ` 2.6.11-rc1-mm1 Tom Zanussi
2005-01-19 11:14                       ` 2.6.11-rc1-mm1 Christoph Hellwig
2005-01-19 16:53                         ` 2.6.11-rc1-mm1 Tom Zanussi
2005-01-16 16:14             ` 2.6.11-rc1-mm1 Christoph Hellwig
2005-01-16 19:47               ` 2.6.11-rc1-mm1 Karim Yaghmour
2005-01-16 20:30               ` 2.6.11-rc1-mm1 Tom Zanussi
2005-01-19 11:11                 ` 2.6.11-rc1-mm1 Christoph Hellwig
2005-01-14 15:24   ` 2.6.11-rc1-mm1 Roman Zippel
2005-01-18 11:19   ` 2.6.11-rc1-mm1 Masami Hiramatsu
2005-01-18 11:46     ` 2.6.11-rc1-mm1 Andi Kleen
2005-01-18 14:52       ` [Lkst-develop] 2.6.11-rc1-mm1 Masami Hiramatsu
2005-01-14 12:36 ` 2.6.11-rc1-mm1 Miklos Szeredi
2005-01-14 13:04 ` 2.6.11-rc1-mm1 Kasper Sandberg
2005-01-14 18:35   ` 2.6.11-rc1-mm1 Andrew Morton
2005-01-14 19:08     ` 2.6.11-rc1-mm1 Rogério Brito
2005-01-14 19:41     ` 2.6.11-rc1-mm1 Peter Buckingham
2005-01-17 17:04     ` 2.6.11-rc1-mm1 Matthias Urlichs
2005-01-14 19:02   ` 2.6.11-rc1-mm1 Bill Davidsen
2005-01-14 15:07 ` 2.6.11-rc1-mm1 Barry K. Nathan
2005-01-14 16:56   ` 2.6.11-rc1-mm1 Dave Jones
2005-01-14 17:55     ` 2.6.11-rc1-mm1 Barry K. Nathan
2005-01-19 23:06   ` 2.6.11-rc1-mm1 Marcos D. Marado Torres
2005-01-19 23:54     ` 2.6.11-rc1-mm1 Barry K. Nathan
2005-01-14 15:35 ` 2.6.11-rc1-mm1 Zwane Mwaikambo
2005-01-14 22:03   ` 2.6.11-rc1-mm1 Karim Yaghmour
2005-01-14 17:35 ` [patch] 2.6.11-rc1-mm1: ip_tables.c: ipt_find_target must be EXPORT_SYMBOL'ed Adrian Bunk
2005-01-14 17:43   ` Patrick McHardy
2005-01-14 22:41 ` 2.6.11-rc1-mm1 Tim Bird
2005-01-14 22:46 ` 2.6.11-rc1-mm1 Thomas Gleixner
2005-01-14 23:22   ` 2.6.11-rc1-mm1 Tim Bird
2005-01-15  0:24     ` 2.6.11-rc1-mm1 Thomas Gleixner
2005-01-15  1:27       ` 2.6.11-rc1-mm1 Karim Yaghmour
2005-01-16 16:18       ` 2.6.11-rc1-mm1 Christoph Hellwig
2005-01-15 13:08     ` [RFC] Instrumentation (was Re: 2.6.11-rc1-mm1) Thomas Gleixner
2005-01-16  2:09       ` Karim Yaghmour
2005-01-16  3:11         ` Roman Zippel
2005-01-16  4:23           ` Karim Yaghmour
2005-01-16 23:43             ` Thomas Gleixner
2005-01-17  1:54               ` Karim Yaghmour
2005-01-17 10:26                 ` Thomas Gleixner
2005-01-17 20:34                   ` Karim Yaghmour
2005-01-17 22:18                     ` Thomas Gleixner
2005-01-17 23:57                       ` Karim Yaghmour
2005-01-18  8:46                         ` Thomas Gleixner
2005-01-18 16:31                           ` Karim Yaghmour
2005-01-19  7:13                 ` Werner Almesberger [this message]
2005-01-19 17:38                   ` Karim Yaghmour
2005-01-14 22:48 ` 2.6.11-rc1-mm1 Andre Eisenbach
2005-01-15  8:42   ` 2.6.11-rc1-mm1 Miklos Szeredi
2005-01-15  8:45   ` 2.6.11-rc1-mm1 Miklos Szeredi
     [not found] ` <1105740276.8604.83.camel@tglx.tec.linutronix.de>
2005-01-14 23:09   ` 2.6.11-rc1-mm1 Karim Yaghmour
2005-01-15  0:01     ` 2.6.11-rc1-mm1 Thomas Gleixner
2005-01-15  0:26       ` 2.6.11-rc1-mm1 Andrew Morton
2005-01-15  1:00         ` 2.6.11-rc1-mm1 Thomas Gleixner
2005-01-15  1:25           ` 2.6.11-rc1-mm1 Karim Yaghmour
2005-01-15 10:20             ` 2.6.11-rc1-mm1 Thomas Gleixner
2005-01-16  4:13               ` 2.6.11-rc1-mm1 Karim Yaghmour
2005-01-16 15:19                 ` 2.6.11-rc1-mm1 Robert Wisniewski
2005-01-15  1:14       ` 2.6.11-rc1-mm1 Karim Yaghmour
2005-01-15  9:57         ` 2.6.11-rc1-mm1 Thomas Gleixner
2005-01-16 16:21     ` 2.6.11-rc1-mm1 Christoph Hellwig
2005-01-16 19:49       ` 2.6.11-rc1-mm1 Karim Yaghmour
2005-01-16 20:11         ` 2.6.11-rc1-mm1 Robert Wisniewski
2005-01-16 20:32           ` 2.6.11-rc1-mm1 Andrew Morton
2005-01-16 21:06             ` 2.6.11-rc1-mm1 Robert Wisniewski
2005-01-16 21:40               ` 2.6.11-rc1-mm1 Arjan van de Ven
2005-01-17 15:48                 ` 2.6.11-rc1-mm1 Robert Wisniewski
2005-01-17 16:13                   ` 2.6.11-rc1-mm1 Christoph Hellwig
2005-01-17 21:38                     ` 2.6.11-rc1-mm1 Karim Yaghmour
2005-01-16 20:39           ` 2.6.11-rc1-mm1 Christoph Hellwig
2005-01-16 21:14             ` 2.6.11-rc1-mm1 Robert Wisniewski
2005-01-15  2:58 ` 2.6.11-rc1-mm1 William Lee Irwin III
2005-01-17 22:19   ` 2.6.11-rc1-mm1 William Lee Irwin III
2005-01-16  0:59 ` 2.6.11-rc1-mm1 Joseph Fannin
2005-01-16 19:09   ` 2.6.11-rc1-mm1 Daniel Drake
2005-01-16 19:20     ` 2.6.11-rc1-mm1 William Lee Irwin III
2005-01-16 21:09   ` 2.6.11-rc1-mm1 Daniel Drake
2005-01-17 23:31     ` 2.6.11-rc1-mm1 J.A. Magallon
2005-01-18  2:35       ` 2.6.11-rc1-mm1 Daniel Drake
2005-01-18  2:54   ` [PATCH] Wait and retry mounting root device (revised) Daniel Drake
2005-01-18  0:34     ` Al Viro
2005-01-18  0:02       ` Randy.Dunlap
2005-01-18  8:05         ` Andries Brouwer
2005-01-18  8:28         ` Helge Hafting
2005-01-18  8:49           ` Andrew Morton
2005-01-18 13:20             ` Helge Hafting
2005-01-20 20:55             ` [PATCH] Configurable delay before mounting root device Daniel Drake
2005-01-20 20:24               ` Andrew Morton
2005-01-21 18:15                 ` Daniel Drake
2005-01-20 22:49               ` William Park
2005-01-18  1:03       ` [PATCH] Wait and retry mounting root device (revised) William Park
2005-01-19  0:43         ` Werner Almesberger
2005-01-18  8:02     ` Andries Brouwer
2005-01-19 20:11       ` Frank van Maarseveen
  -- strict thread matches above, loose matches on Subject: below --
2005-01-20 21:39 [RFC] Instrumentation (was Re: 2.6.11-rc1-mm1) Werner Almesberger
2005-01-20 23:07 ` Karim Yaghmour

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=20050119041325.C26705@almesberger.net \
    --to=wa@almesberger.net \
    --cc=akpm@osdl.org \
    --cc=karim@opersys.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=richardj_moore@uk.ibm.com \
    --cc=tglx@linutronix.de \
    --cc=tim.bird@am.sony.com \
    --cc=zanussi@us.ibm.com \
    --cc=zippel@linux-m68k.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