All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
To: Steven Rostedt <rostedt@goodmis.org>
Cc: Andi Kleen <andi@firstfloor.org>, Jason Baron <jbaron@redhat.com>,
	linux-kernel@vger.kernel.org, mingo@elte.hu, hpa@zytor.com,
	tglx@linutronix.de, roland@redhat.com, rth@redhat.com,
	mhiramat@redhat.com, fweisbec@gmail.com, avi@redhat.com,
	davem@davemloft.net, vgoyal@redhat.com, sam@ravnborg.org,
	tony@bakeyournoodle.com
Subject: Re: [PATCH 03/10] jump label v11: base patch
Date: Tue, 21 Sep 2010 14:24:32 -0400	[thread overview]
Message-ID: <20100921182431.GA30075@Krystal> (raw)
In-Reply-To: <1285092337.26872.12.camel@gandalf.stny.rr.com>

* Steven Rostedt (rostedt@goodmis.org) wrote:
> On Tue, 2010-09-21 at 19:36 +0200, Andi Kleen wrote:
> > > On Tue, 2010-09-21 at 16:41 +0200, Andi Kleen wrote:
> > >> >
> > >> > So there are ~150 tracepoints, but this code is also being proposed
> > >> for
> > >> > use with 'dynamic debug' of which there are > 1000, and I'm hoping for
> > >> > more users moving forward.
> > >>
> > >> Even 1000 is fine to walk, but if it was sorted a binary search
> > >> would be much faster anyways. That is then you would still
> > >> need to search for each module, but that is a relatively small
> > >> number (< 100)
> > >
> > > xfs has > 100 tracepoints
> > 
> > Doesn
> 
> I suppose you were missing a 't'.
> 
> Anyway:
> 
>  $ find fs/xfs/ -name "*.c" ! -type d | xargs grep "[ ^I]trace_" | wc -l
>  313
> 
> The jump label occurs at the calling sight, not for defined tracepoints
> (which can be used in multiple places).
> 
> Also take a look at fs/xfs/linux-2.6/xfs_trace.h, you will be surprised.

Yep, I'd be surprised to see how many tracepoints we can end up having
with stuff like kmem tracing (trace_kmalloc). Each instance of the
inline function will generate an entry. (!)

> 
> 
> > >
> > >>
> > >> > Also, I think the hash table deals nicely with modules.
> > >>
> > >> Maybe but it's also a lot of code. And it seems to me
> > >> that it is optimizing the wrong thing. Simpler is nicer.
> > >
> > > I guess simplicity is in the eye of the beholder. I find hashes easier
> > > to deal with than binary searching sorted lists. Every time you add a
> > > tracepoint, you need to resort the list.
> > 
> > The only time you add one is when you load a module, right? When you do
> > that you only sort the section of the new module.
> 
> And on removing a module.
> 
> > 
> > > Hashes are much easier to deal with and scale nicely. I don't think
> > > there's enough rational to switch this to a binary list.
> > 
> > Well problem is that the code is very complicated today. I suspect
> > this could be done much simpler if it wasn't so overengin
> > 
> 
> Perhaps it can be cleaned up. But I have no issues with it now, and
> using a hash (basic data structures 101) is not where the complexity
> comes in.

I agree with Steven, Peter and Jason: due to the large amount of
tracepoints we can end up patching, we should keep the hash tables. This
code is very similar to what I have in the tracepoints already and in
the immediate values. So this code is solid and has been tested over a
large user base for quite some time already.

One change I would recommend is to use a separate memory pool to
allocate the struct jump_label_entry, to favor better locality. I did
not do it in tracepoints and markers because each entry have a variable
length, but given that struct jump_label_entry seems to be fixed-size,
then we should definitely go for a kmem_cache_alloc().

Thanks,

Mathieu

> 
> -- Steve
> 
> 

-- 
Mathieu Desnoyers
Operating System Efficiency R&D Consultant
EfficiOS Inc.
http://www.efficios.com

  reply	other threads:[~2010-09-21 18:29 UTC|newest]

Thread overview: 64+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-09-17 15:08 [PATCH 00/10] jump label v11 Jason Baron
2010-09-17 15:08 ` [PATCH 01/10] jump label v11: make dynamic no-op selection available outside of ftrace Jason Baron
2010-09-17 15:28   ` Steven Rostedt
2010-09-24  8:58   ` [tip:perf/core] jump label: Make " tip-bot for Jason Baron
2010-09-17 15:08 ` [PATCH 02/10] jump label v11: make text_poke_early() globally visisble Jason Baron
2010-09-24  8:58   ` [tip:perf/core] jump label: Make text_poke_early() globally visible tip-bot for Jason Baron
2010-09-17 15:09 ` [PATCH 03/10] jump label v11: base patch Jason Baron
2010-09-17 18:21   ` David Miller
2010-09-21  2:37   ` Steven Rostedt
2010-09-21 13:12   ` Andi Kleen
2010-09-21 14:35     ` Jason Baron
2010-09-21 14:41       ` Andi Kleen
2010-09-21 15:04         ` Jason Baron
2010-09-21 15:09         ` Ingo Molnar
2010-09-21 15:14         ` Steven Rostedt
2010-09-21 17:35           ` H. Peter Anvin
2010-09-21 17:42             ` Andi Kleen
2010-09-21 17:36           ` Andi Kleen
2010-09-21 18:05             ` Steven Rostedt
2010-09-21 18:24               ` Mathieu Desnoyers [this message]
2010-09-21 19:48                 ` Andi Kleen
2010-09-21 18:48               ` Andi Kleen
2010-09-21 17:39           ` Andi Kleen
2010-09-21 18:29   ` Konrad Rzeszutek Wilk
2010-09-21 18:55     ` Konrad Rzeszutek Wilk
2010-09-21 18:58       ` H. Peter Anvin
2010-09-24  8:59   ` [tip:perf/core] jump label: Base patch for jump label tip-bot for Jason Baron
2010-09-17 15:09 ` [PATCH 04/10] jump label v11: initialize workqueue tracepoints *before* they are registered Jason Baron
2010-09-24  8:59   ` [tip:perf/core] jump label: Initialize " tip-bot for Jason Baron
2010-09-17 15:09 ` [PATCH 05/10] jump label v11: jump_label_text_reserved() to reserve our jump points Jason Baron
2010-09-24  9:00   ` [tip:perf/core] jump label: Add jump_label_text_reserved() to reserve " tip-bot for Jason Baron
2010-09-17 15:09 ` [PATCH 06/10] jump label v11: tracepoint support Jason Baron
2010-09-24  9:00   ` [tip:perf/core] jump label: Tracepoint support for jump labels tip-bot for Jason Baron
2010-09-17 15:09 ` [PATCH 07/10] jump label v11: convert dynamic debug to use " Jason Baron
2010-09-24  9:00   ` [tip:perf/core] jump label: Convert " tip-bot for Jason Baron
2010-09-17 15:09 ` [PATCH 08/10] jump label v11: x86 support Jason Baron
2010-09-21  2:32   ` Steven Rostedt
2010-09-21  2:43   ` H. Peter Anvin
2010-09-21 15:25     ` Jason Baron
2010-09-21 15:29       ` Ingo Molnar
2010-09-21 15:35         ` Steven Rostedt
2010-09-21 16:33           ` Jason Baron
2010-09-21 18:30   ` Konrad Rzeszutek Wilk
2010-09-24  9:01   ` [tip:perf/core] jump label: " tip-bot for Jason Baron
2010-09-24 16:19     ` H. Peter Anvin
2010-09-24 16:34       ` Jason Baron
2010-09-24 17:30         ` H. Peter Anvin
2010-09-24 18:08           ` Steven Rostedt
2010-10-18 11:17     ` Peter Zijlstra
2010-10-18 12:48       ` Mathieu Desnoyers
2010-09-17 15:09 ` [PATCH 09/10] jump label 11: add sparc64 support Jason Baron
2010-09-20 22:25   ` Steven Rostedt
2010-09-20 22:30     ` David Miller
2010-09-20 22:38       ` Steven Rostedt
2010-09-21 15:37   ` Steven Rostedt
2010-09-21 16:27     ` David Miller
2010-09-23  3:09       ` Steven Rostedt
2010-09-24  9:01   ` [tip:perf/core] jump label: Add " tip-bot for David S. Miller
2010-09-17 15:09 ` [PATCH 10/10] jump label v11: add docs Jason Baron
2010-09-17 16:05   ` Mathieu Desnoyers
2010-09-20 22:28     ` Steven Rostedt
2010-09-21 16:20       ` Jason Baron
2010-09-21  8:20   ` matt mooney
2010-09-21 18:39   ` Konrad Rzeszutek Wilk

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=20100921182431.GA30075@Krystal \
    --to=mathieu.desnoyers@polymtl.ca \
    --cc=andi@firstfloor.org \
    --cc=avi@redhat.com \
    --cc=davem@davemloft.net \
    --cc=fweisbec@gmail.com \
    --cc=hpa@zytor.com \
    --cc=jbaron@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mhiramat@redhat.com \
    --cc=mingo@elte.hu \
    --cc=roland@redhat.com \
    --cc=rostedt@goodmis.org \
    --cc=rth@redhat.com \
    --cc=sam@ravnborg.org \
    --cc=tglx@linutronix.de \
    --cc=tony@bakeyournoodle.com \
    --cc=vgoyal@redhat.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.