lkml.org 
[lkml]   [2006]   [Jul]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [patch] uninline init_waitqueue_*() functions

* Andrew Morton <akpm@osdl.org> wrote:

> > > shrinks fs/select.o by eight bytes. (More than I expected). So
> > > it does appear to be a space win, but a pretty slim one.
> >
> > there are 855 calls to these functions in the allyesconfig vmlinux i
> > did, and i measured a combined size reduction of 34791 bytes. That
> > averages to a 40 bytes win per call site. (on i386.)
> >
>
> Yes, but that lumps all three together. init_waitqueue_head() is
> obviously the porky one. And it's porkier with CONFIG_DEBUG_SPINLOCK
> and CONFIG_LOCKDEP, which isn't the case to optimise for.

true. I redid my tests with both lockdep and debug-spinlocks turned off:

text data bss dec filename
21172153 6077270 3081864 30331287 vmlinux.x32.after
21198222 6077106 3081864 30357192 vmlinux.x32.before

with 851 callsites that's a 30.6 bytes win per call site (total 26K) -
still not bad at all.

it's a win even on 64-bit:

text data bss dec filename
21237025 6997266 3327600 31561891 vmlinux.x64.after
21252773 6997090 3327600 31577463 vmlinux.x64.before

with 755 callsites that's still a 20.8 bytes win per call site (total
15K).

> With the debug options turned off, even init_waitqueue_head() becomes
> just three assignments, similar to init_waitqueue_entry() and
> init_waitqueue_func_entry(). All pretty marginal.

but three assignments could mean 3 offsets embedded in the instructions.
(for init_waitqueue_entry we also embedd the address of
default_wake_function) Even 3 assignments can add up to a footprint that
is far from marginal.

The rough rule of thumb for inlining is that anything that is larger
than one C statement is probably too large for inlining. (but even
1-line statements might be too fat at times)

Ingo
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2006-07-05 12:33    [W:0.288 / U:0.112 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site