All of lore.kernel.org
 help / color / mirror / Atom feed
From: Wu Fengguang <fengguang.wu@intel.com>
To: Steven Rostedt <rostedt@goodmis.org>
Cc: "Ingo Molnar" <mingo@elte.hu>,
	"Frédéric Weisbecker" <fweisbec@gmail.com>,
	"Peter Zijlstra" <a.p.zijlstra@chello.nl>,
	"Li Zefan" <lizf@cn.fujitsu.com>,
	"Andrew Morton" <akpm@linux-foundation.org>,
	LKML <linux-kernel@vger.kernel.org>,
	"KOSAKI Motohiro" <kosaki.motohiro@jp.fujitsu.com>,
	"Andi Kleen" <andi@firstfloor.org>,
	"Matt Mackall" <mpm@selenic.com>,
	"Alexey Dobriyan" <adobriyan@gmail.com>,
	"linux-mm@kvack.org" <linux-mm@kvack.org>
Subject: Re: ftrace: concurrent accesses possible?
Date: Fri, 8 May 2009 21:43:03 +0800	[thread overview]
Message-ID: <20090508134303.GA15127@localhost> (raw)
In-Reply-To: <alpine.DEB.2.00.0905080908120.28378@gandalf.stny.rr.com>

On Fri, May 08, 2009 at 09:17:04PM +0800, Steven Rostedt wrote:
> 
> On Fri, 8 May 2009, Wu Fengguang wrote:
> 
> > Hello,
> > 
> > On Fri, May 08, 2009 at 07:47:42PM +0800, Ingo Molnar wrote:
> > > 
> > > So this should be done in cooperation with instrumentation folks, 
> > > while improving _all_ of Linux instrumentation in general. Or, if 
> > > you dont have the time/interest to work with us on that, it should 
> > > not be done at all. Not having the resources/interest to do 
> > > something properly is not a license to introduce further 
> > > instrumentation crap into Linux.
> > 
> > I have a dummy question on /debug/trace: is it possible to
> > - use 2+ tracers concurrently?
> 
> Two plugins? no.
> 
> Two types of tracing? yes.
> 
> The "current_tracer" is for specific tracing purposes that like, latency 
> tracing, function tracing and graph tracing. There are others, but they 
> are more "themes" than tracers. The latency tracing only shows a "max 
> latency" and does not show current traces unless they hit the max 
> threshold. The function graph tracer has a different output format that 
> has indentation based on the depth of the traced functions.
> 
> But with tracing events, we can pick and choose any event and trace them 
> all together. You can filter them as well. For new events in the kernel, 
> we only add them via trace events. These events show up in the plugin 
> tracers too.

OK. Thanks for explaining!

> > - run a system script that makes use of a tracer,
> 
> Sure
> 
> >   without disturbing the sysadmin's tracer activities?
> 
> Hmm, you mean have individual tracers tracing different things. We sorta 

Right. Plus two 'instances' of the same tracer run with different options.

> do that now, but they are more custom. That is, you can have the stack 
> tracer running (recording max stack of the kernel) and run other tracers 
> as well, without noticing.  But those that write to the ring buffer, only 
> write to a single ring buffer. If another trace facility created their own 
> ring buffer, then you could have more than one ring buffer being used. But 
> ftrace currently uses only one (This is net exactly true, because the 
> latency tracers have a separate ring buffer to store the max).

That's OK.

> > - access 1 tracer concurrently from many threads,
> 
> More than one reader can happen, but inside the kernel, they are 
> serialized. When reading from the trace_pipe (consumer mode), every read 
> will produce a different output, because the previous read was "consumed". 
> If two threads try to read this way at the same time, they will each get a 
> different result.
> 
> >   with different filter etc. options?
> 
> Not sure what you mean here. If you two threads filtering differently, 
> this should be done in userspace.

It's about efficiency.  Here is a use case: one have N CPUs and want
to create N threads to query N different segments of the total memory
via kpageflags. This ability is important for a large memory system.

Thanks,
Fengguang


WARNING: multiple messages have this Message-ID (diff)
From: Wu Fengguang <fengguang.wu@intel.com>
To: Steven Rostedt <rostedt@goodmis.org>
Cc: "Ingo Molnar" <mingo@elte.hu>,
	"Frédéric Weisbecker" <fweisbec@gmail.com>,
	"Peter Zijlstra" <a.p.zijlstra@chello.nl>,
	"Li Zefan" <lizf@cn.fujitsu.com>,
	"Andrew Morton" <akpm@linux-foundation.org>,
	LKML <linux-kernel@vger.kernel.org>,
	"KOSAKI Motohiro" <kosaki.motohiro@jp.fujitsu.com>,
	"Andi Kleen" <andi@firstfloor.org>,
	"Matt Mackall" <mpm@selenic.com>,
	"Alexey Dobriyan" <adobriyan@gmail.com>,
	"linux-mm@kvack.org" <linux-mm@kvack.org>
Subject: Re: ftrace: concurrent accesses possible?
Date: Fri, 8 May 2009 21:43:03 +0800	[thread overview]
Message-ID: <20090508134303.GA15127@localhost> (raw)
In-Reply-To: <alpine.DEB.2.00.0905080908120.28378@gandalf.stny.rr.com>

On Fri, May 08, 2009 at 09:17:04PM +0800, Steven Rostedt wrote:
> 
> On Fri, 8 May 2009, Wu Fengguang wrote:
> 
> > Hello,
> > 
> > On Fri, May 08, 2009 at 07:47:42PM +0800, Ingo Molnar wrote:
> > > 
> > > So this should be done in cooperation with instrumentation folks, 
> > > while improving _all_ of Linux instrumentation in general. Or, if 
> > > you dont have the time/interest to work with us on that, it should 
> > > not be done at all. Not having the resources/interest to do 
> > > something properly is not a license to introduce further 
> > > instrumentation crap into Linux.
> > 
> > I have a dummy question on /debug/trace: is it possible to
> > - use 2+ tracers concurrently?
> 
> Two plugins? no.
> 
> Two types of tracing? yes.
> 
> The "current_tracer" is for specific tracing purposes that like, latency 
> tracing, function tracing and graph tracing. There are others, but they 
> are more "themes" than tracers. The latency tracing only shows a "max 
> latency" and does not show current traces unless they hit the max 
> threshold. The function graph tracer has a different output format that 
> has indentation based on the depth of the traced functions.
> 
> But with tracing events, we can pick and choose any event and trace them 
> all together. You can filter them as well. For new events in the kernel, 
> we only add them via trace events. These events show up in the plugin 
> tracers too.

OK. Thanks for explaining!

> > - run a system script that makes use of a tracer,
> 
> Sure
> 
> >   without disturbing the sysadmin's tracer activities?
> 
> Hmm, you mean have individual tracers tracing different things. We sorta 

Right. Plus two 'instances' of the same tracer run with different options.

> do that now, but they are more custom. That is, you can have the stack 
> tracer running (recording max stack of the kernel) and run other tracers 
> as well, without noticing.  But those that write to the ring buffer, only 
> write to a single ring buffer. If another trace facility created their own 
> ring buffer, then you could have more than one ring buffer being used. But 
> ftrace currently uses only one (This is net exactly true, because the 
> latency tracers have a separate ring buffer to store the max).

That's OK.

> > - access 1 tracer concurrently from many threads,
> 
> More than one reader can happen, but inside the kernel, they are 
> serialized. When reading from the trace_pipe (consumer mode), every read 
> will produce a different output, because the previous read was "consumed". 
> If two threads try to read this way at the same time, they will each get a 
> different result.
> 
> >   with different filter etc. options?
> 
> Not sure what you mean here. If you two threads filtering differently, 
> this should be done in userspace.

It's about efficiency.  Here is a use case: one have N CPUs and want
to create N threads to query N different segments of the total memory
via kpageflags. This ability is important for a large memory system.

Thanks,
Fengguang

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  reply	other threads:[~2009-05-08 13:43 UTC|newest]

Thread overview: 92+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-05-08 10:53 [PATCH 0/8] export more page flags in /proc/kpageflags (take 6) Wu Fengguang
2009-05-08 10:53 ` Wu Fengguang
2009-05-08 10:53 ` [PATCH 1/8] mm: introduce PageHuge() for testing huge/gigantic pages Wu Fengguang
2009-05-08 10:53   ` Wu Fengguang
2009-05-08 11:40   ` Ingo Molnar
2009-05-08 11:40     ` Ingo Molnar
2009-05-08 12:21     ` Wu Fengguang
2009-05-08 12:21       ` Wu Fengguang
2009-05-13 17:05   ` Mel Gorman
2009-05-13 17:05     ` Mel Gorman
2009-05-17 13:09     ` Wu Fengguang
2009-05-17 13:09       ` Wu Fengguang
2009-05-08 10:53 ` [PATCH 2/8] slob: use PG_slab for identifying SLOB pages Wu Fengguang
2009-05-08 10:53   ` Wu Fengguang
2009-05-08 10:53 ` [PATCH 3/8] proc: kpagecount/kpageflags code cleanup Wu Fengguang
2009-05-08 10:53   ` Wu Fengguang
2009-05-08 10:53 ` [PATCH 4/8] proc: export more page flags in /proc/kpageflags Wu Fengguang
2009-05-08 10:53   ` Wu Fengguang
2009-05-08 11:47   ` Ingo Molnar
2009-05-08 11:47     ` Ingo Molnar
2009-05-08 12:44     ` Wu Fengguang
2009-05-08 12:44       ` Wu Fengguang
2009-05-09  5:59       ` Ingo Molnar
2009-05-09  5:59         ` Ingo Molnar
2009-05-09  7:56         ` Wu Fengguang
2009-05-09  7:56           ` Wu Fengguang
2009-05-09  6:27       ` [patch] tracing/mm: add page frame snapshot trace Ingo Molnar
2009-05-09  6:27         ` Ingo Molnar
2009-05-09  9:13         ` Wu Fengguang
2009-05-09  9:13           ` Wu Fengguang
2009-05-09  9:24           ` Ingo Molnar
2009-05-09  9:24             ` Ingo Molnar
2009-05-09  9:43             ` Wu Fengguang
2009-05-09  9:43               ` Wu Fengguang
2009-05-09 10:22               ` Ingo Molnar
2009-05-09 10:22                 ` Ingo Molnar
2009-05-09 10:45                 ` Wu Fengguang
2009-05-09 10:45                   ` Wu Fengguang
2009-05-09 10:01           ` Ingo Molnar
2009-05-09 10:01             ` Ingo Molnar
2009-05-09 10:27             ` Ingo Molnar
2009-05-09 10:27               ` Ingo Molnar
2009-05-09 10:57             ` Wu Fengguang
2009-05-09 10:57               ` Wu Fengguang
2009-05-09 11:05               ` Ingo Molnar
2009-05-09 11:05                 ` Ingo Molnar
2009-05-09 12:23                 ` Wu Fengguang
2009-05-09 12:23                   ` Wu Fengguang
2009-05-09 14:05                   ` Ingo Molnar
2009-05-09 14:05                     ` Ingo Molnar
2009-05-10  8:35                     ` Wu Fengguang
2009-05-10  8:35                       ` Wu Fengguang
2009-05-11 12:01                       ` Ingo Molnar
2009-05-11 12:01                         ` Ingo Molnar
2009-05-09 10:36           ` Ingo Molnar
2009-05-09 10:36             ` Ingo Molnar
2009-05-08 12:58     ` ftrace: concurrent accesses possible? Wu Fengguang
2009-05-08 12:58       ` Wu Fengguang
2009-05-08 13:17       ` Steven Rostedt
2009-05-08 13:17         ` Steven Rostedt
2009-05-08 13:43         ` Wu Fengguang [this message]
2009-05-08 13:43           ` Wu Fengguang
2009-05-08 20:24     ` [PATCH 4/8] proc: export more page flags in /proc/kpageflags Andrew Morton
2009-05-08 20:24       ` Andrew Morton
2009-05-09 10:44       ` Ingo Molnar
2009-05-09 10:44         ` Ingo Molnar
2009-05-10  3:58         ` Andrew Morton
2009-05-10  3:58           ` Andrew Morton
2009-05-10  5:26         ` Andrew Morton
2009-05-10  5:26           ` Andrew Morton
2009-05-11 11:45           ` Ingo Molnar
2009-05-11 11:45             ` Ingo Molnar
2009-05-11 18:31             ` Andrew Morton
2009-05-11 18:31               ` Andrew Morton
2009-05-11 22:08               ` Ingo Molnar
2009-05-11 22:08                 ` Ingo Molnar
2009-05-11 19:03             ` Andy Isaacson
2009-05-11 19:03               ` Andy Isaacson
2009-05-08 10:53 ` [PATCH 5/8] pagemap: document clarifications Wu Fengguang
2009-05-08 10:53   ` Wu Fengguang
2009-05-08 10:53 ` [PATCH 6/8] pagemap: document 9 more exported page flags Wu Fengguang
2009-05-08 10:53   ` Wu Fengguang
2009-05-09  8:13   ` KOSAKI Motohiro
2009-05-09  8:13     ` KOSAKI Motohiro
2009-05-09  8:18     ` Wu Fengguang
2009-05-09  8:18       ` Wu Fengguang
2009-05-08 10:53 ` [PATCH 7/8] pagemap: add page-types tool Wu Fengguang
2009-05-08 10:53   ` Wu Fengguang
2009-05-08 10:53 ` [PATCH 8/8] pagemap: export PG_hwpoison Wu Fengguang
2009-05-08 10:53   ` Wu Fengguang
2009-05-08 11:49   ` Ingo Molnar
2009-05-08 11:49     ` Ingo Molnar

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=20090508134303.GA15127@localhost \
    --to=fengguang.wu@intel.com \
    --cc=a.p.zijlstra@chello.nl \
    --cc=adobriyan@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=andi@firstfloor.org \
    --cc=fweisbec@gmail.com \
    --cc=kosaki.motohiro@jp.fujitsu.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=lizf@cn.fujitsu.com \
    --cc=mingo@elte.hu \
    --cc=mpm@selenic.com \
    --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.