linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Christoph Lameter <clameter@engr.sgi.com>
To: Andi Kleen <ak@suse.de>
Cc: steiner@sgi.com, linux-mm@kvack.org, alokk@calsoftinc.com
Subject: Re: [RFC] Make the slab allocator observe NUMA policies
Date: Mon, 14 Nov 2005 11:08:37 -0800 (PST)	[thread overview]
Message-ID: <Pine.LNX.4.62.0511141055560.1222@schroedinger.engr.sgi.com> (raw)
In-Reply-To: <200511141944.33478.ak@suse.de>

On Mon, 14 Nov 2005, Andi Kleen wrote:

> > Any idea how to push this to the page allocation within the slab without 
> > rearchitecting the thing?
> 
> I believe that's only a small fraction of the allocations, for where
> the slabs are big enough to be an significant part of the page.
> 
> Proof: VM breaks down with higher orders. If slab would use them
> all the time it would break down too. It doesn't. Q.E.D ;-)

Yes the higher order pages are rare. However, regular sized pages are 
frequent and the allocations for these pages always consult 
task->mempolicy.

> Another way (as a backup option) would be to RR them as higher order pages, 
> but that would need new special code.

The proposed patch RRs higher order pages as configured by the memory 
policy.

The other fundamental problem that I mentioned remains: 

The slab allocator is designed in such a way that it needs to know the 
node for the allocation before it does its work. This is because the 
nodelists are per node since 2.6.14. You wanted to do the policy 
application on the back end so after all the work is done (presumably 
for the current node) and after the node specific lists have been 
examined. Policy application at that point may find that another
node than the current node was desired and the whole thing has to be 
redone for the other node. This will significantly negatively impact
the performance of the slab allocator in particular if the current node
is is unlikely to be chosen for the memory policy.

I have thought about various ways to modify kmem_getpages() but these do 
not fit into the basic current concept of the slab allocator. The 
proposed method is the cleanest approach that I can think of. I'd be glad 
if you could come up with something different but AFAIK simply moving the 
policy application down in the slab allocator does not work.

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  reply	other threads:[~2005-11-14 19:08 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-11-10 22:04 Christoph Lameter
2005-11-11  3:06 ` Andi Kleen
2005-11-11 17:40   ` Christoph Lameter
2005-11-13 11:22     ` Andi Kleen
2005-11-14 18:05       ` Christoph Lameter
2005-11-14 18:44         ` Andi Kleen
2005-11-14 19:08           ` Christoph Lameter [this message]
2005-11-15  3:34             ` Andi Kleen
2005-11-15 16:43               ` Christoph Lameter
2005-11-15 16:51                 ` Andi Kleen
2005-11-15 16:55                   ` Christoph Lameter

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=Pine.LNX.4.62.0511141055560.1222@schroedinger.engr.sgi.com \
    --to=clameter@engr.sgi.com \
    --cc=ak@suse.de \
    --cc=alokk@calsoftinc.com \
    --cc=linux-mm@kvack.org \
    --cc=steiner@sgi.com \
    /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