From: Masami Hiramatsu <mhiramat@redhat.com>
To: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>,
Takashi Nishiie <t-nishiie@np.css.fujitsu.com>,
"'Alexey Dobriyan'" <adobriyan@gmail.com>,
"'Peter Zijlstra'" <peterz@infradead.org>,
"'Steven Rostedt'" <rostedt@goodmis.org>,
"'Frank Ch. Eigler'" <fche@redhat.com>,
"'Ingo Molnar'" <mingo@elte.hu>,
"'LKML'" <linux-kernel@vger.kernel.org>,
"'systemtap-ml'" <systemtap@sources.redhat.com>,
"'Hideo AOKI'" <haoki@redhat.com>
Subject: Re: [RFC PATCH] Kernel Tracepoints
Date: Thu, 03 Jul 2008 14:51:56 -0400 [thread overview]
Message-ID: <486D1FCC.5040205@redhat.com> (raw)
In-Reply-To: <20080703151238.GA3102@Krystal>
Hi Mathieu,
Mathieu Desnoyers wrote:
> * Masami Hiramatsu (mhiramat@redhat.com) wrote:
>> Hi Mathieu,
>>
>> Mathieu Desnoyers wrote:
>>> * Masami Hiramatsu (mhiramat@redhat.com) wrote:
>>>> Mathieu Desnoyers wrote:
>>>>> * Masami Hiramatsu (mhiramat@redhat.com) wrote:
>>>>> >
>>>>>>> Implementation of kernel tracepoints. Inspired from the Linux Kernel Markers.
>>>>>> What would you think redesigning markers on tracepoints? because most of the
>>>>>> logic (scaning sections, multiple probe and activation) seems very similar
>>>>>> to markers.
>>>>>>
>>>>> We could, although markers, because they use var args, allow to put the
>>>>> iteration on the multi probe array out-of-line. Tracepoints cannot
>>>>> afford this and the iteration must be done at the initial call-site.
>>>>>
>>>>> From what I see in your proposal, it's mostly to extract the if() call()
>>>>> code from the inner __trace_mark() macro and to put it in a separate
>>>>> macro, am I correct ? This would make the macro more readable.
>>>> Sure, I think marker and tracepoint can share below functions;
>>>> - definition of static local variables in specific sections
>>> Given that we could want to keep activation of tracepoints and markers
>>> separate (so they don't share the same namespace), declaring the static
>>> variables in separated sections seems to make sense to me.
>> Sorry, I'm not sure what is "separate activation".
>> As far as I can see, both tracepoints and markers are activated
>> when its probe handlers are registered on each tracepoint/marker.
>> Aren't it separated?
>>
>
> Yes, it is separate. This is insured by the fact that markers and
> tracepoints are declared in different sections. Therefore, even if they
> have the same "name", they won't be used by each other.
I reviewed both marker and tracepoint deeply in these days, and
recognized what you said. Actually, markers and tracepoint would
better have separate sections.
[...]
>>>> - probe activation code (if() call())
>>>> - multi probe handling
>>> Hrm, the thing here is that because markers allow to do the iteration on
>>> the multiple probe callbacks within an internal wrapper (instead of
>>> doing it on-site as in the tracepoints), it allows to do some further
>>> optimizations (less memory allocation and less pointer dereference in
>>> the single probe case, not having to prepare the va_args in the
>>> MARK_NOARGS case) which are only done because it does not have to add
>>> code to the instrumentation site. However, tracepoints cannot have such
>>> "generic" wrapper and we have to do the iteration on callbacks in the
>>> code added to the instrumented object. Therefore, I keep it as small as
>>> possible in terms of bytes of instructions.
>> OK, I see. So, __tracepoint_block() macro can specify handler function.
>> what would you think about it?
>>
>
> When I originally designed the markers, I tried to make sure there was
> absolutely no code duplication until I discovered that trying to read a
> huge amount of nested macros is just a pain starting from a certain
> level. If we only save a few duplicated lines but end up tying up
> markers and tracepoints, I am far from certain that it will make the
> code more readable.
After reviewing, I knew it is hard to implement markers on tracepoint.
maybe, I need to find another way or maintenance both codes.
> I'll post a tracepoint version with the modifications you proposed (it's
> now placed earlier in the patchset), except the merge with markers.
I see, if it is acceptable for upstream developers, I have no problem.
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-07-03 18:54 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-06-20 17:03 [RFC][Patch 2/2] markers: example of irq regular kernel markers Masami Hiramatsu
2008-06-20 17:45 ` Mathieu Desnoyers
2008-06-20 19:34 ` Masami Hiramatsu
2008-06-21 10:12 ` KOSAKI Motohiro
2008-06-21 14:36 ` Steven Rostedt
2008-06-21 14:53 ` Frank Ch. Eigler
2008-06-21 15:07 ` Steven Rostedt
2008-06-21 16:13 ` Peter Zijlstra
2008-06-21 18:02 ` Frank Ch. Eigler
2008-06-22 4:31 ` Masami Hiramatsu
2008-06-23 2:19 ` KOSAKI Motohiro
2008-06-21 19:39 ` Frank Ch. Eigler
2008-06-22 4:00 ` Masami Hiramatsu
2008-06-20 20:07 ` Peter Zijlstra
2008-06-22 17:11 ` [RFC] Tracepoint proposal Mathieu Desnoyers
2008-06-22 17:59 ` Alexey Dobriyan
2008-06-22 18:27 ` Mathieu Desnoyers
2008-06-24 0:20 ` Alexey Dobriyan
2008-06-24 4:01 ` Masami Hiramatsu
2008-06-24 7:15 ` Takashi Nishiie
2008-06-24 11:55 ` Frank Ch. Eigler
2008-06-24 16:04 ` Masami Hiramatsu
2008-06-24 16:21 ` KOSAKI Motohiro
2008-06-24 17:01 ` Masami Hiramatsu
2008-06-24 17:46 ` Mathieu Desnoyers
2008-06-25 23:52 ` [RFC PATCH] Kernel Tracepoints Mathieu Desnoyers
2008-06-26 21:02 ` Masami Hiramatsu
2008-06-27 13:14 ` Mathieu Desnoyers
2008-06-27 22:45 ` Masami Hiramatsu
2008-06-30 15:43 ` Mathieu Desnoyers
2008-06-27 13:15 ` Mathieu Desnoyers
2008-06-30 19:38 ` Masami Hiramatsu
2008-06-27 13:30 ` Mathieu Desnoyers
2008-06-27 20:58 ` Masami Hiramatsu
2008-06-30 15:40 ` Mathieu Desnoyers
2008-06-30 19:58 ` Masami Hiramatsu
2008-07-03 15:12 ` Mathieu Desnoyers
2008-07-03 18:51 ` Masami Hiramatsu [this message]
2008-06-27 13:36 ` [RFC PATCH] Kernel Tracepoints (update) Mathieu Desnoyers
2008-07-03 15:27 ` Masami Hiramatsu
2008-07-03 15:47 ` Mathieu Desnoyers
2008-07-03 18:18 ` Mathieu Desnoyers
2008-07-03 18:46 ` Masami Hiramatsu
2008-06-25 23:55 ` [RFC PATCH] Tracepoint sched probes Mathieu Desnoyers
2008-06-24 3:09 ` [RFC] Tracepoint proposal Masami Hiramatsu
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=486D1FCC.5040205@redhat.com \
--to=mhiramat@redhat.com \
--cc=adobriyan@gmail.com \
--cc=fche@redhat.com \
--cc=haoki@redhat.com \
--cc=kosaki.motohiro@jp.fujitsu.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mathieu.desnoyers@polymtl.ca \
--cc=mingo@elte.hu \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.org \
--cc=systemtap@sources.redhat.com \
--cc=t-nishiie@np.css.fujitsu.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.