Thread (24 messages) flat view 24 messages, 6 authors, 2008-03-12

Re: [RFC PATCH 3/8] [NET]: uninline dev_alloc_skb, de-bloats a lot

From: Ilpo Järvinen <hidden>
Date: 2008-03-12 15:27:27
Also in: lkml

On Thu, 21 Feb 2008, Ilpo Järvinen wrote:
On Wed, 20 Feb 2008, Jan Engelhardt wrote:
quoted
On Feb 20 2008 17:27, Patrick McHardy wrote:
quoted
__dev_alloc_skb() is also an inline function which performs
some extra work. Which raises the question - if dev_alloc_skb()
I'd like to see the results when {__dev_alloc_skb is externed
and dev_alloc_skb remains inlined}.
The results are right under your nose already... ;-)
See from the list of the series introduction:

  http://marc.info/?l=linux-netdev&m=120351526210711&w=2

IMHO more interesting number (which I currently don't have) is the 
_remaining_ benefits of uninlining __dev_alloc_skb after
dev_alloc_skb was first uninlined.
I've measured this now... Without many debug CONFIGs (in v2.6.25-rc2-mm1), 
the dev_alloc_skb is much less than 23kB:

    382 funcs, 157 +, 12335 -, diff: -12178 --- dev_alloc_skb
    dev_alloc_skb                 |  +37

...and on top of that, I got only this:
    48 funcs, 111 +, 836 -, diff: -725 --- __dev_alloc_skb

Not that impressive compared with many much worse cases (wasn't a big 
surprise because there were fewer callsites for the latter).

Anyway, would I uninline it (or one some another function that has such 
two variants that are good candidates for uninlining), should I try to 
avoid deepening the call-chain by two functions? To me it seems that only 
way to fool gcc to do that for sure would be using some trick like this:
Rename __dev_alloc_skb to ___dev_alloc_skb in the header (with appropriate
don't ever call this due to bloat comment added) and both __dev_alloc_skb 
and dev_alloc_skb could then be made to call that one in .c file. 
Otherwise I'm not that sure gcc wouldn't try to be too clever if I just 
use inline in .c file.

-- 
 i.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help