All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
To: Steven Rostedt <rostedt@goodmis.org>
Cc: Jason Baron <jbaron@redhat.com>,
	mingo@elte.hu, peterz@infradead.org, hpa@zytor.com,
	tglx@linutronix.de, andi@firstfloor.org, roland@redhat.com,
	rth@redhat.com, masami.hiramatsu.pt@hitachi.com,
	fweisbec@gmail.com, avi@redhat.com, davem@davemloft.net,
	sam@ravnborg.org, ddaney@caviumnetworks.com,
	michael@ellerman.id.au, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 1/3] jump label: add enabled/disabled state to jump label key entries
Date: Tue, 23 Nov 2010 19:24:11 -0500	[thread overview]
Message-ID: <20101124002411.GA29158@Krystal> (raw)
In-Reply-To: <1290556830.30543.415.camel@gandalf.stny.rr.com>

* Steven Rostedt (rostedt@goodmis.org) wrote:
> On Tue, 2010-11-23 at 18:43 -0500, Mathieu Desnoyers wrote:
> > * Jason Baron (jbaron@redhat.com) wrote:
> > [...]
> > > +static void update_jump_label_module(struct module *mod)
> > > +{
> > > +	struct hlist_head *head;
> > > +	struct hlist_node *node, *node_next, *module_node, *module_node_next;
> > > +	struct jump_label_entry *e;
> > > +	struct jump_label_module_entry *e_module;
> > > +	struct jump_entry *iter;
> > > +	int i, count;
> > > +
> > > +	/* if the module doesn't have jump label entries, just return */
> > > +	if (!mod->num_jump_entries)
> > > +		return;
> > > +
> > > +	for (i = 0; i < JUMP_LABEL_TABLE_SIZE; i++) {
> > > +		head = &jump_label_table[i];
> > > +		hlist_for_each_entry_safe(e, node, node_next, head, hlist) {
> > > +			if (!e->enabled)
> > > +				continue;
> > > +			hlist_for_each_entry_safe(e_module, module_node,
> > > +						  module_node_next,
> > > +						  &(e->modules), hlist) {
> > > +				if (e_module->mod != mod)
> > > +					continue;
> > 
> > Ouch.
> > 
> > Could you iterate on the loaded/unloaded module jump labels and do hash
> > table lookups rather than doing this O(n^3) iteration ?
> 
> This does not look O(n^3) to me.
> 
> It's a hash table, thus the first two loops is just iterating O(n) items
> in the hash.

Good point.

> 
> And the third loop is all the modules that use a particular event.
> 
> So it is O(n*m)  where n is the number of events, and m is the number of
> modules attached to the events. And that's only if all events are used
> by those modules. The actual case is much smaller.

Still, I wonder if the O(n) iteration on all events could be shrinked to
an interation on only the events present in the loaded/unloaded module ?
I think I did something like that for immediate values already. It might
apply (or not) here, just a thought.

Thanks,

Mathieu


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

  reply	other threads:[~2010-11-24  0:34 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-11-23 21:27 [PATCH 0/3] jump label: updates for 2.6.37 Jason Baron
2010-11-23 21:27 ` [PATCH 1/3] jump label: add enabled/disabled state to jump label key entries Jason Baron
2010-11-23 23:43   ` Mathieu Desnoyers
2010-11-24  0:00     ` Steven Rostedt
2010-11-24  0:24       ` Mathieu Desnoyers [this message]
2010-11-24 18:24         ` Jason Baron
2010-11-24 18:39           ` Peter Zijlstra
2010-11-24 19:07             ` Jason Baron
2010-11-24  8:20   ` Peter Zijlstra
2010-11-24 14:54     ` Jason Baron
2010-11-24 15:11       ` Peter Zijlstra
2010-11-24 15:19         ` Jason Baron
2010-11-24 15:24           ` Peter Zijlstra
2010-11-24 15:42             ` Jason Baron
2010-11-24 15:53               ` Steven Rostedt
2010-11-25  2:39                 ` Michael Ellerman
2010-11-25  6:52                   ` Peter Zijlstra
2010-11-25 13:14                     ` Mathieu Desnoyers
2010-11-25 13:42                     ` Michael Ellerman
2010-11-25 21:26                       ` Benjamin Herrenschmidt
2010-11-24 16:56               ` David Daney
2010-11-24 15:15       ` Steven Rostedt
2010-11-24 15:21         ` Jason Baron
2010-11-24 15:25           ` Peter Zijlstra
2010-11-24 15:57           ` Steven Rostedt
2010-11-24 19:18             ` Jason Baron
2010-11-24 15:21         ` Peter Zijlstra
2010-11-23 21:27 ` [PATCH 2/3] jump label: move jump table to r/w section Jason Baron
2010-11-23 23:55   ` Mathieu Desnoyers
2010-11-24  0:04     ` Steven Rostedt
2010-11-24  0:27       ` Mathieu Desnoyers
2010-11-24  0:35         ` Steven Rostedt
2010-11-24  2:18     ` Steven Rostedt
2010-11-24  2:59       ` Steven Rostedt
2010-11-23 21:27 ` [PATCH 3/3] jump label: add docs Jason Baron
2010-11-23 21:36 ` [PATCH 0/3] jump label: updates for 2.6.37 H. Peter Anvin
2010-11-23 23:11   ` Steven Rostedt
2010-11-23 23:32     ` H. Peter Anvin
2010-11-24  0:10       ` Steven Rostedt
2010-11-24  0:36         ` Steven Rostedt
2010-11-24  0:37           ` H. Peter Anvin
2010-11-23 21:42 ` Steven Rostedt
2010-11-23 21:56   ` Jason Baron
2010-11-23 23:10     ` Steven Rostedt
2010-11-24  8:29       ` Peter Zijlstra
2010-11-24  9:21         ` Andi Kleen
2010-11-24 12:47         ` Steven Rostedt
2010-11-24 13:49           ` Steven Rostedt

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=20101124002411.GA29158@Krystal \
    --to=mathieu.desnoyers@polymtl.ca \
    --cc=andi@firstfloor.org \
    --cc=avi@redhat.com \
    --cc=davem@davemloft.net \
    --cc=ddaney@caviumnetworks.com \
    --cc=fweisbec@gmail.com \
    --cc=hpa@zytor.com \
    --cc=jbaron@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=masami.hiramatsu.pt@hitachi.com \
    --cc=michael@ellerman.id.au \
    --cc=mingo@elte.hu \
    --cc=peterz@infradead.org \
    --cc=roland@redhat.com \
    --cc=rostedt@goodmis.org \
    --cc=rth@redhat.com \
    --cc=sam@ravnborg.org \
    --cc=tglx@linutronix.de \
    /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.