public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Ingo Molnar <mingo@elte.hu>
To: Christoph Lameter <cl@linux.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>,
	Tejun Heo <tj@kernel.org>,
	Martin Schwidefsky <schwidefsky@de.ibm.com>,
	rusty@rustcorp.com.au, tglx@linutronix.de, x86@kernel.org,
	linux-kernel@vger.kernel.org, hpa@zytor.com,
	Paul Mundt <lethal@linux-sh.org>,
	rmk@arm.linux.org.uk, starvik@axis.com, ralf@linux-mips.org,
	davem@davemloft.net, cooloney@kernel.org, kyle@mcmartin.ca,
	matthew@wil.cx, grundler@parisc-linux.org, takata@linux-m32r.org,
	benh@kernel.crashing.org, rth@twiddle.net,
	ink@jurassic.park.msu.ru, heiko.carstens@de.ibm.com,
	Nick Piggin <npiggin@suse.de>,
	Peter Zijlstra <a.p.zijlstra@chello.nl>
Subject: Re: [PATCH UPDATED] percpu: use dynamic percpu allocator as the default percpu allocator
Date: Tue, 14 Apr 2009 19:12:42 +0200	[thread overview]
Message-ID: <20090414171242.GA4241@elte.hu> (raw)
In-Reply-To: <alpine.DEB.1.10.0904141233420.15948@qirst.com>


* Christoph Lameter <cl@linux.com> wrote:

> On Tue, 14 Apr 2009, Ingo Molnar wrote:
> 
> > The thing is, i spent well in excess of an hour analyzing your
> > patch, counting cachelines, looking at effects and interactions,
> > thinking about the various implications. I came up with a good deal
> > of factoids, a handful of suggestions and a few summary paragraphs:
> >
> >   http://marc.info/?l=linux-kernel&m=123862536011780&w=2
> 
> Good work.
> 
> > A proper reply to that work would be one of several responses:
> >
> 
> ...
> 
> >
> >   3) agree with the factoids and disagree with my opinion.
> 
> Yep I thought that what I did...

Ok, thanks ... since i never saw a reply from you on that 
mail so i couldnt assume you did so.

There's really 3 key observations in that mail - let me sum 
them up in order of importance.

1)

I'm wondering what your take on the bss+data suggestion is. 
To me it appears it's tempting to merge them into a single 
per .o section: it clearly wins us locality of reference.

It seems so obvious to do to me on a modern SMP kernel - has 
anyone tried that in the past?

Instead of:

  .data1 .data2 .data3   .... .bss1 .bss2 .bss3

we'd have:

  .databss1 .databss2 .databss3

This is clearly better compressed, and the layout is easier 
to control in the .c file. We could also do tricks to 
further compress data here: we could put variables right 
after their __aligned__ locks - while currently they are in 
the .bss wasting a full cache-line.

In the example i analyzed it would reduce the cache 
footprint by one cacheline. This would apply to most .o's so 
the combined effect on cache locality would be significant.

[ Another (sub-)advantage would be that it 'linearizes' and 
  hence properly colors the per .o module variable layout. 
  With an artificially split .data1 .bss1 the offset between 
  them is random, and it's harder to control the cache port
  positions of closely related variables. ]

2)

Aligning (the now merged) data+bss per .o section on 
cacheline boundary [up to 64 byte cacheline sizes or so] 
sounds tempting as well - it eliminates accidental "tail 
bites the next head" type of cross-object-file interactions. 

The price is an estimated 3% blow-up in combined .data+bss 
size. A suspect a patch and measurements would settle this 
pretty neatly.

3)

The free_percpu() collateral-damage argument i made was 
pretty speculative (and artificial as well - the allocation 
of percpu resources is very global in nature so a 
kfree(NULL)-alike fastpath is harder to imagine) - i tried 
at all costs demonstrate my point based on that narrow 
example alone.

Thanks,

	Ingo

  reply	other threads:[~2009-04-14 17:16 UTC|newest]

Thread overview: 95+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-03-10  7:53 [GIT RFC] percpu: use dynamic percpu allocator as the default percpu allocator Tejun Heo
2009-03-10  7:53 ` [PATCH 1/5] linker script: define __per_cpu_load on all SMP capable archs Tejun Heo
2009-03-10  7:53 ` [PATCH 2/5] percpu: make x86 addr <-> pcpu ptr conversion macros generic Tejun Heo
2009-03-10  7:53 ` [PATCH 3/5] percpu: more flexibility for @dyn_size of pcpu_setup_first_chunk() Tejun Heo
2009-03-10  7:53 ` [PATCH 4/5] percpu: generalize embedding first chunk setup helper Tejun Heo
2009-03-10  7:53 ` [PATCH 5/5] percpu: use dynamic percpu allocator as the default percpu allocator Tejun Heo
2009-03-10  7:57 ` test module to verify " Tejun Heo
2009-03-10 10:59 ` [GIT RFC] percpu: use dynamic percpu allocator as the default " David Miller
2009-03-11  6:03   ` Tejun Heo
2009-03-11  5:56 ` [GIT PULL] pull request for safe part Tejun Heo
2009-03-16 18:01 ` [GIT RFC] percpu: use dynamic percpu allocator as the default percpu allocator Martin Schwidefsky
2009-03-20  2:35   ` Tejun Heo
2009-03-24 15:22     ` Tejun Heo
2009-03-25 11:27       ` Martin Schwidefsky
2009-03-25 11:51         ` Tejun Heo
2009-03-25 12:22           ` Ingo Molnar
2009-03-25 12:27             ` Tejun Heo
2009-03-25 12:39               ` Ingo Molnar
2009-03-25 13:13               ` Martin Schwidefsky
2009-03-25 13:21                 ` Tejun Heo
2009-03-25 13:25                   ` Martin Schwidefsky
2009-03-25 13:34                     ` Tejun Heo
2009-03-31 16:54                       ` Martin Schwidefsky
2009-03-31 17:20                         ` Christoph Lameter
2009-03-31 20:18                           ` Martin Schwidefsky
2009-03-31 21:10                             ` Christoph Lameter
2009-04-01  8:01                               ` Martin Schwidefsky
2009-03-31 19:17                         ` Ivan Kokshaysky
2009-03-31 20:19                           ` Martin Schwidefsky
2009-03-31 20:29                             ` Ivan Kokshaysky
2009-04-01  0:07                         ` Tejun Heo
2009-04-01  8:10                           ` Martin Schwidefsky
2009-04-01  8:17                             ` Tejun Heo
2009-04-01  8:32                               ` Martin Schwidefsky
2009-04-01  8:37                                 ` David Miller
2009-04-01  8:47                                   ` Martin Schwidefsky
2009-04-01  8:50                                     ` Tejun Heo
2009-04-01  9:08                                       ` Martin Schwidefsky
2009-04-02  1:54                                         ` Tejun Heo
2009-04-01  8:53                                     ` David Miller
2009-04-01  8:53                                 ` Tejun Heo
2009-04-01 11:07                                   ` Martin Schwidefsky
2009-04-02  1:57                                     ` Tejun Heo
2009-04-02  7:24                                       ` Ivan Kokshaysky
2009-04-02 11:13                                         ` Martin Schwidefsky
2009-04-03  0:31                                           ` Tejun Heo
2009-04-07 16:09                                             ` Ivan Kokshaysky
2009-04-08 20:18                                               ` Tejun Heo
2009-04-09  9:47                                                 ` Ivan Kokshaysky
2009-04-09 11:53                                                   ` Tejun Heo
2009-04-11  1:38                                                     ` Rusty Russell
2009-04-11  1:52                                                       ` Tejun Heo
2009-04-02  0:20                               ` Rusty Russell
2009-03-25 14:00           ` Martin Schwidefsky
2009-03-25 14:14             ` Tejun Heo
2009-03-30 10:07               ` [PATCH UPDATED] " Tejun Heo
2009-03-30 10:42                 ` Martin Schwidefsky
2009-04-01  0:08                   ` Tejun Heo
2009-03-30 11:49                 ` Ingo Molnar
2009-03-30 14:50                   ` Christoph Lameter
2009-03-31 16:12                     ` Christoph Lameter
2009-04-01  0:15                       ` Tejun Heo
2009-04-01 13:49                         ` Christoph Lameter
2009-04-01 15:49                           ` Ingo Molnar
2009-04-01 18:06                             ` Christoph Lameter
2009-04-01 19:01                               ` Ingo Molnar
2009-04-01 19:39                                 ` Linus Torvalds
2009-04-01 20:12                                   ` Matthew Wilcox
2009-04-02  2:13                                     ` Ingo Molnar
2009-04-01 22:32                                   ` Ingo Molnar
2009-04-01 22:57                                     ` Matthew Wilcox
2009-04-02  2:10                                       ` Ingo Molnar
2009-04-02  2:21                                         ` Christoph Lameter
2009-04-02  3:25                                           ` Ingo Molnar
2009-04-02  3:28                                             ` Christoph Lameter
2009-04-02  2:30                                       ` Tejun Heo
2009-04-02  2:18                                     ` Christoph Lameter
2009-04-02  3:42                                       ` Ingo Molnar
2009-04-02 13:53                                         ` Christoph Lameter
2009-04-08 16:26                                           ` Ingo Molnar
2009-04-13 18:18                                             ` Christoph Lameter
2009-04-14 14:04                                               ` Ingo Molnar
2009-04-14 16:48                                                 ` Christoph Lameter
2009-04-14 17:12                                                   ` Ingo Molnar [this message]
2009-04-02  2:15                                 ` Christoph Lameter
2009-04-02  4:19                       ` [PATCH 1/2 x86#core/percpu] percpu: don't put the first chunk in reverse-map rbtree Tejun Heo
2009-04-02  4:21                         ` [PATCH 2/2 x86#core/percpu] percpu: remove rbtree and use page->index instead Tejun Heo
2009-04-08 17:03                           ` [tip:core/percpu] " Christoph Lameter
2009-04-08 17:03                         ` [tip:core/percpu] percpu: don't put the first chunk in reverse-map rbtree Tejun Heo
2009-03-31 16:14                     ` [PATCH UPDATED] percpu: use dynamic percpu allocator as the default percpu allocator Christoph Lameter
2009-04-01  0:18                       ` Tejun Heo
2009-03-31  1:34                   ` Rusty Russell
2009-03-31 22:57                     ` David Miller
2009-03-31 23:49                     ` Benjamin Herrenschmidt
2009-04-01  0:19                       ` Tejun Heo

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=20090414171242.GA4241@elte.hu \
    --to=mingo@elte.hu \
    --cc=a.p.zijlstra@chello.nl \
    --cc=benh@kernel.crashing.org \
    --cc=cl@linux.com \
    --cc=cooloney@kernel.org \
    --cc=davem@davemloft.net \
    --cc=grundler@parisc-linux.org \
    --cc=heiko.carstens@de.ibm.com \
    --cc=hpa@zytor.com \
    --cc=ink@jurassic.park.msu.ru \
    --cc=kyle@mcmartin.ca \
    --cc=lethal@linux-sh.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=matthew@wil.cx \
    --cc=npiggin@suse.de \
    --cc=ralf@linux-mips.org \
    --cc=rmk@arm.linux.org.uk \
    --cc=rth@twiddle.net \
    --cc=rusty@rustcorp.com.au \
    --cc=schwidefsky@de.ibm.com \
    --cc=starvik@axis.com \
    --cc=takata@linux-m32r.org \
    --cc=tglx@linutronix.de \
    --cc=tj@kernel.org \
    --cc=torvalds@linux-foundation.org \
    --cc=x86@kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox