From: Masami Hiramatsu <mhiramat@redhat.com>
To: "Frank Ch. Eigler" <fche@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>,
Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>,
Hideo AOKI <haoki@redhat.com>,
mingo@elte.hu, linux-kernel@vger.kernel.org,
Steven Rostedt <rostedt@goodmis.org>
Subject: Re: Kernel marker has no performance impact on ia64.
Date: Thu, 12 Jun 2008 12:16:35 -0400 [thread overview]
Message-ID: <48514BE3.3000506@redhat.com> (raw)
In-Reply-To: <20080612155332.GA16658@redhat.com>
Hi Frank,
Frank Ch. Eigler wrote:
> Hi -
>
> On Thu, Jun 12, 2008 at 04:27:03PM +0200, Peter Zijlstra wrote:
>> [...]
>>> Well, the string contains each field name and type. Therefore, SystemTAP
>>> can hook on a marker and parse the string looking for some elements by
>>> passing a NULL format string upon probe registration. Alternatively, it
>>> can provide the exact format string expected when it registers its probe
>>> to the marker and a check will be done to verify that the format string
>>> passed along with the registered probe matches the marker format string.
>> Yes, I get that, its one of the ugliest things I've met in this whole
>> marker story. Why can't stap not insert a normal trace handler that
>> extracts the information from prev/next it wants? [...]
>
> Think this through. How should systemtap (or another user-space
> separate-compiled tool like lttng) do this exactly?
>
> (a) rely on debugging information? Even assuming we could get proper
> anchors (PC addresses or unambiguous type names) to start
> searching dwarf data, we lose a key attractions of markers: that
> it can robustly transfer data *without* dwarf data kept around.
>
> (b) rely on hand-written C code (prototypes, pointer derefrencing
> wrappers) distributed with systemtap? Not only would this be a
> brittle maintenance pain in the form of cude duplication, but then
> errors in it couldn't even be detected until the final C
> compilation stage. That would make a lousy user experience.
>
> (c) have systemtap try to parse the mhiramat-proposed "(struct
> task_struct * next, struct task_struct * prev)" format strings?
> Then we're asking systemtap to parse potentially general C type
> expressions, find the kernel headers that declare the types?
> Parse available subfields? That seems too much to ask for.
>
> (d) or another way?
use a lookup table. we can expect that the marking points which
regularly inserted in the upstream kernel are stable(not so
frequently change). In that case, we can easily maintain
a lookup table which has pairs of format strings like as
"sched_switch(struct task_struct * next, struct task_struct * prev)":"next %p prev %p"
out of tree. Thus, you can use the printf-style format parser.
This actually is a kind of duplication, but in this way,
I think we can detect errors before generating C code, and
easily add lookup pairs of format strings.
(additionally, we can choose %s or %p for "char *" ;-))
>
>
> - FChE
Thank you,
--
Masami Hiramatsu
Software Engineer
Hitachi Computer Products (America) Inc.
Software Solutions Division
e-mail: mhiramat@redhat.com
next prev parent reply other threads:[~2008-06-12 16:18 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-06-02 22:12 Kernel marker has no performance impact on ia64 Hideo AOKI
2008-06-02 22:32 ` Peter Zijlstra
2008-06-02 23:21 ` Mathieu Desnoyers
2008-06-03 6:07 ` Takashi Nishiie
2008-06-04 4:58 ` Masami Hiramatsu
2008-06-04 23:26 ` Mathieu Desnoyers
2008-06-04 23:40 ` Masami Hiramatsu
2008-06-04 22:27 ` Peter Zijlstra
2008-06-04 23:22 ` Mathieu Desnoyers
2008-06-05 8:12 ` Peter Zijlstra
2008-06-05 14:28 ` Masami Hiramatsu
2008-06-12 14:04 ` Mathieu Desnoyers
2008-06-12 15:31 ` Masami Hiramatsu
2008-06-12 13:53 ` Mathieu Desnoyers
2008-06-12 14:27 ` Peter Zijlstra
2008-06-12 15:53 ` Frank Ch. Eigler
2008-06-12 16:16 ` Masami Hiramatsu [this message]
2008-06-12 16:43 ` Frank Ch. Eigler
2008-06-12 16:56 ` Peter Zijlstra
2008-06-12 22:10 ` Mathieu Desnoyers
2008-06-12 17:05 ` Masami Hiramatsu
2008-06-12 17:48 ` Frank Ch. Eigler
2008-06-12 19:34 ` Masami Hiramatsu
2008-06-13 4:19 ` Takashi Nishiie
2008-06-13 18:02 ` Masami Hiramatsu
2008-06-16 2:58 ` Takashi Nishiie
2008-06-12 16:53 ` Peter Zijlstra
2008-06-12 17:38 ` Frank Ch. Eigler
2008-06-13 11:01 ` Peter Zijlstra
2008-06-13 14:17 ` Frank Ch. Eigler
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=48514BE3.3000506@redhat.com \
--to=mhiramat@redhat.com \
--cc=fche@redhat.com \
--cc=haoki@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mathieu.desnoyers@polymtl.ca \
--cc=mingo@elte.hu \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.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 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.