From: Lee Schermerhorn <Lee.Schermerhorn@hp.com>
To: Paul Jackson <pj@sgi.com>
Cc: rientjes@google.com, akpm@linux-foundation.org, ak@suse.de,
clameter@sgi.com, linux-kernel@vger.kernel.org
Subject: Re: [patch 3/3] cpusets: add memory_spread_user option
Date: Fri, 26 Oct 2007 13:43:46 -0400 [thread overview]
Message-ID: <1193420627.5032.46.camel@localhost> (raw)
In-Reply-To: <20071026101805.df3ebfda.pj@sgi.com>
On Fri, 2007-10-26 at 10:18 -0700, Paul Jackson wrote:
> pj wrote:
> > On a different point, we could, if it was worth the extra bit of code,
> > improve the current code's handling of mempolicy rebinding when the
> > cpuset adds memory nodes. If we kept both the original cpusets
> > mems_allowed, and the original MPOL_INTERLEAVE nodemask requested by
> > the user in a call to set_mempolicy, then we could rebind (nodes_remap)
> > the currently active policy v.nodes using that pair of saved masks to
> > guide the rebinding. This way, if say a cpuset shrunk, then regrew back
> > to its original size (original number of nodes) we would end up
> > replicating the original MPOL_INTERLEAVE request, cpuset relative.
> > This would provide a more accurate cpuset relative translation of such
> > memory policies with-out- changing the set_mempolicy API. Hmmm ... this
> > might meet your needs entirely, so that we did not need -any- added
> > flags to the API.
>
> Thinking about this some more ... there's daylight here!
>
> I'll see if I can code up a patch for this now, but the idea is
> to allow user code to specify any nodemask to a set_mempolicy
> MPOL_INTERLEAVE call, even including nodes not in their cpuset,
> and then (1) use nodes_remap() to fold that mask down to whatever
> is their current cpuset (2) remember what they passed in and use
> it again with nodes_remap() to re-fold that mask down, anytime
> the cpuset changes.
>
> For example, if they pass in a mask with all bits sets, then they
> get interleave over all the nodes in their current cpuset, even as
> that cpuset changes. If they pass in a mask with say just two
> bits set, then they will get interleave over just two nodes anytime
> they are in a cpuset with two or more nodes (when in a single node
> cpuset, they will of course get no interleave, for lack of anything
> to interleave over.)
>
> This should replace the patches that David is proposing here. It should
> replace what Lee is proposing. It should work with libnuma and be
> fully upward compatible with current code (except perhaps code that
> depends on getting an error from requesting MPOL_INTERLEAVE on a node
> not allowed.)
>
> And instead of just covering the special case of "interleave over all
> available nodes" it should cover the more general case of interleaving
> over any subset of nodes, folded or replicated to handle being in any
> cpuset.
Will it handle the case of MPOL_INTERLEAVE policy on a shm segment that
is mapped by tasks in different, possibly disjoint, cpusets. Local
allocation does, and my patch does. That was one of the primary
goals--to address an issue that Christoph has with shared policies.
cpusets really muck these up!
Lee
>
next prev parent reply other threads:[~2007-10-26 17:44 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-10-26 2:14 [patch 1/3] cpusets: extract mmarray loading from update_nodemask David Rientjes
2007-10-26 2:14 ` [patch 2/3] mempolicy: mpol_rebind_policy cleanup David Rientjes
2007-10-26 2:14 ` [patch 3/3] cpusets: add memory_spread_user option David Rientjes
2007-10-26 6:04 ` Paul Jackson
2007-10-26 9:23 ` David Rientjes
2007-10-26 9:56 ` Paul Jackson
2007-10-26 17:18 ` Paul Jackson
2007-10-26 17:39 ` Christoph Lameter
2007-10-26 17:43 ` Paul Jackson
2007-10-26 17:43 ` Lee Schermerhorn [this message]
2007-10-26 17:54 ` Paul Jackson
2007-10-26 18:00 ` Christoph Lameter
2007-10-26 20:39 ` Lee Schermerhorn
2007-10-26 20:41 ` David Rientjes
2007-10-26 2:46 ` [patch 2/3] mempolicy: mpol_rebind_policy cleanup Paul Jackson
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=1193420627.5032.46.camel@localhost \
--to=lee.schermerhorn@hp.com \
--cc=ak@suse.de \
--cc=akpm@linux-foundation.org \
--cc=clameter@sgi.com \
--cc=linux-kernel@vger.kernel.org \
--cc=pj@sgi.com \
--cc=rientjes@google.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 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.