From: Rusty Russell <rusty@rustcorp.com.au>
To: Ingo Molnar <mingo@kernel.org>, Peter Zijlstra <peterz@infradead.org>
Cc: mathieu.desnoyers@efficios.com, oleg@redhat.com,
paulmck@linux.vnet.ibm.com, torvalds@linux-foundation.org,
linux-kernel@vger.kernel.org, andi@firstfloor.org,
rostedt@goodmis.org, tglx@linutronix.de, laijs@cn.fujitsu.com,
linux@horizon.com
Subject: Re: [PATCH v5 10/10] module: Rework module_addr_{min,max}
Date: Tue, 14 Apr 2015 12:25:45 +0930 [thread overview]
Message-ID: <87y4lvs9ji.fsf@rustcorp.com.au> (raw)
In-Reply-To: <20150413165636.GH6040@gmail.com>
Ingo Molnar <mingo@kernel.org> writes:
> * Peter Zijlstra <peterz@infradead.org> wrote:
>
>> __module_address() does an initial bound check before doing the
>> {list/tree} iteration to find the actual module. The bound variables
>> are nowhere near the mod_tree cacheline, in fact they're nowhere
>> near one another.
>>
>> module_addr_min lives in .data while module_addr_max lives in .bss
>> (smarty pants GCC thinks the explicit 0 assignment is a mistake).
>>
>> Rectify this by moving the two variables into a structure together
>> with the latch_tree_root to guarantee they all share the same
>> cacheline and avoid hitting two extra cachelines for the lookup.
>>
>> While reworking the bounds code, move the bound update from
>> allocation to insertion time, this avoids updating the bounds for a
>> few error paths.
>
>> +static struct mod_tree_root {
>> + struct latch_tree_root root;
>> + unsigned long addr_min;
>> + unsigned long addr_max;
>> +} mod_tree __cacheline_aligned = {
>> + .addr_min = -1UL,
>> +};
>> +
>> +#define module_addr_min mod_tree.addr_min
>> +#define module_addr_max mod_tree.addr_max
Nice catch.
Does the min/max comparison still win us anything? (I'm guessing yes...)
In general, I'm happy with this series. Assume you want another
go-round for Ingo's tweaks, then I'll take them for 4.2.
Thanks,
Rusty.
next prev parent reply other threads:[~2015-04-14 2:57 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-04-13 14:11 [PATCH v5 00/10] latched RB-trees and __module_address() Peter Zijlstra
2015-04-13 14:11 ` [PATCH v5 01/10] module: Sanitize RCU usage and locking Peter Zijlstra
2015-04-13 15:32 ` Ingo Molnar
2015-04-13 15:40 ` Peter Zijlstra
2015-04-13 16:32 ` Ingo Molnar
2015-04-13 14:11 ` [PATCH v5 02/10] module: Annotate module version magic Peter Zijlstra
2015-04-13 14:11 ` [PATCH v5 03/10] module, jump_label: Fix module locking Peter Zijlstra
2015-04-13 14:11 ` [PATCH v5 04/10] rbtree: Make lockless searches non-fatal Peter Zijlstra
2015-04-13 15:50 ` Ingo Molnar
2015-04-13 19:10 ` Peter Zijlstra
2015-04-13 14:11 ` [PATCH v5 05/10] seqlock: Better document raw_write_seqcount_latch() Peter Zijlstra
2015-04-13 16:32 ` Ingo Molnar
2015-04-13 17:08 ` Mathieu Desnoyers
2015-04-13 17:43 ` Paul E. McKenney
2015-04-13 18:21 ` Linus Torvalds
2015-04-13 18:42 ` Paul E. McKenney
2015-04-14 10:25 ` Ingo Molnar
2015-04-14 13:04 ` Paul E. McKenney
2015-04-14 14:31 ` Ingo Molnar
2015-04-14 15:11 ` Paul E. McKenney
2015-04-13 19:17 ` Peter Zijlstra
2015-04-13 19:47 ` Peter Zijlstra
2015-04-14 10:26 ` Ingo Molnar
2015-04-13 14:11 ` [PATCH v5 06/10] rbtree: Implement generic latch_tree Peter Zijlstra
2015-04-13 16:43 ` Ingo Molnar
2015-04-13 19:20 ` Peter Zijlstra
2015-04-13 14:11 ` [PATCH v5 07/10] module: Optimize __module_address() using a latched RB-tree Peter Zijlstra
2015-04-13 16:49 ` Ingo Molnar
2015-04-14 12:31 ` Peter Zijlstra
2015-04-13 14:11 ` [PATCH v5 08/10] module: Make the mod_tree stuff conditional on PERF_EVENTS || TRACING Peter Zijlstra
2015-04-13 16:53 ` Ingo Molnar
2015-04-13 14:11 ` [PATCH v5 09/10] module: Use __module_address() for module_address_lookup() Peter Zijlstra
2015-04-13 14:11 ` [PATCH v5 10/10] module: Rework module_addr_{min,max} Peter Zijlstra
2015-04-13 16:56 ` Ingo Molnar
2015-04-14 2:55 ` Rusty Russell [this message]
2015-04-14 6:42 ` Peter Zijlstra
2015-04-14 12:56 ` Peter Zijlstra
2015-04-14 13:00 ` Ingo Molnar
2015-04-13 17:02 ` [PATCH v5 00/10] latched RB-trees and __module_address() Ingo Molnar
2015-04-14 2:57 ` Rusty Russell
2015-04-14 6:41 ` Peter Zijlstra
2015-04-15 4:41 ` Rusty Russell
2015-04-15 9:41 ` Peter Zijlstra
2015-05-28 2:07 ` Rusty Russell
2015-05-28 11:20 ` Peter Zijlstra
2015-05-28 23:49 ` Rusty Russell
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=87y4lvs9ji.fsf@rustcorp.com.au \
--to=rusty@rustcorp.com.au \
--cc=andi@firstfloor.org \
--cc=laijs@cn.fujitsu.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@horizon.com \
--cc=mathieu.desnoyers@efficios.com \
--cc=mingo@kernel.org \
--cc=oleg@redhat.com \
--cc=paulmck@linux.vnet.ibm.com \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.org \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.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.