This is the mail archive of the
systemtap@sourceware.org
mailing list for the systemtap project.
Re: Unified tracing buffer
- From: Masami Hiramatsu <mhiramat at redhat dot com>
- To: KOSAKI Motohiro <kosaki dot motohiro at jp dot fujitsu dot com>
- Cc: Martin Bligh <mbligh at google dot com>, Linux Kernel Mailing List <linux-kernel at vger dot kernel dot org>, Linus Torvalds <torvalds at linux-foundation dot org>, Thomas Gleixner <tglx at linutronix dot de>, Mathieu Desnoyers <compudj at krystal dot dyndns dot org>, Steven Rostedt <rostedt at goodmis dot org>, od at novell dot com, "Frank Ch. Eigler" <fche at redhat dot com>, systemtap-ml <systemtap at sources dot redhat dot com>
- Date: Tue, 23 Sep 2008 11:21:20 -0400
- Subject: Re: Unified tracing buffer
- References: <33307c790809221313s3532d851g7239c212bc72fe71@mail.gmail.com> <48D81B5F.2030702@redhat.com> <20080923232239.DC1E.KOSAKI.MOTOHIRO@jp.fujitsu.com>
Hi Motohiro,
KOSAKI Motohiro wrote:
>> By the way, systemtap uses two modes;
>>
>> - single-channel mode
>> In this mode, all cpus share one buffer channel to write and read.
>> each writer locks spinlock and write a probe-local data to buffer.
>>
>> - per-cpu buffer mode
>> In this mode, we use an atomic sequential number for ordering data. If
>> user doesn't need it(because they have their own timestamps), they can
>> choose not to use that seq-number.
>
> I can't imazine a merit of the single-channel mode.
> Could you please explain it?
Actually, single-channel mode is for not-frequently event tracing.
At least systemtap case, sometimes we just want to collect data
and watch it periodically(as like as 'top'). Or, just monitoring
errors as additional printk. in these cases, overhead is not so
important.
I think the main reason of using single-channel mode is simplicity of
userspace reader. We can use 'cat' or 'tail' to read the buffer on-line.
I'm not sure how much overhead ftrace-like buffer merging routine has,
but if kernel provides an interface which gives us single-merged buffer
image(like ftrace buffer), we are grad to use it. :-)
> Because some architecture don't have fine grained timestamp?
> if so, could you explain which architecture don't have it?
I heard that get_cycles always returns 0 on some cpu (ARM, MIPS, etc)...
(I think some of their platforms support variants of get_cycles)
Thank you,
--
Masami Hiramatsu
Software Engineer
Hitachi Computer Products (America) Inc.
Software Solutions Division
e-mail: mhiramat@redhat.com