linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Lee Schermerhorn <Lee.Schermerhorn@hp.com>
To: Mel Gorman <mel@csn.ul.ie>
Cc: linux-mm@kvack.org, akpm@linux-foundation.org, ak@suse.de,
	mtk-manpages@gmx.net, clameter@sgi.com, solo@google.com,
	eric.whitney@hp.com
Subject: Re: [PATCH/RFC 2/5] Mem Policy:  Use MPOL_PREFERRED for system-wide default policy
Date: Tue, 11 Sep 2007 14:22:03 -0400	[thread overview]
Message-ID: <1189534923.5036.58.camel@localhost> (raw)
In-Reply-To: <1189536857.32731.90.camel@localhost>

On Tue, 2007-09-11 at 19:54 +0100, Mel Gorman wrote:
> On Thu, 2007-08-30 at 14:51 -0400, Lee Schermerhorn wrote:
> > PATCH/RFC 2/5 Use MPOL_PREFERRED for system-wide default policy
> > 
> > Against:  2.6.23-rc3-mm1
> > 
> > V1 -> V2:
> > + restore BUG()s in switch(policy) default cases -- per
> >   Christoph
> > + eliminate unneeded re-init of struct mempolicy policy member
> >   before freeing
> > 
> > Currently, when one specifies MPOL_DEFAULT via a NUMA memory
> > policy API [set_mempolicy(), mbind() and internal versions],
> > the kernel simply installs a NULL struct mempolicy pointer in
> > the appropriate context:  task policy, vma policy, or shared
> > policy.  This causes any use of that policy to "fall back" to
> > the next most specific policy scope.  The only use of MPOL_DEFAULT
> > to mean "local allocation" is in the system default policy.
> > 
> 
> In general, this seems like a good idea. It's certainly simplier to
> always assume a policy exists because it discourages "bah, I don't care
> about policies" style of thinking.

More importantly, IMO, it eliminates 2 meanings for MPOL_DEFAULT in
different contexts and promotes the use 0f [MPOL_PREFERRED,
-1/null-nodemask] for local allocation.  I think this makes the
resulting documentation clearer.

<snip>
> > 
> > Index: Linux/mm/mempolicy.c
> > ===================================================================
> > --- Linux.orig/mm/mempolicy.c	2007-08-29 11:43:06.000000000 -0400
> > +++ Linux/mm/mempolicy.c	2007-08-29 11:44:03.000000000 -0400
> > @@ -105,9 +105,13 @@ static struct kmem_cache *sn_cache;
> >     policied. */
> >  enum zone_type policy_zone = 0;
> >  
> > +/*
> > + * run-time system-wide default policy => local allocation
> > + */
> >  struct mempolicy default_policy = {
> >  	.refcnt = ATOMIC_INIT(1), /* never free it */
> > -	.policy = MPOL_DEFAULT,
> > +	.policy = MPOL_PREFERRED,
> > +	.v =  { .preferred_node =  -1 },
> >  };
> >  
> 
> fairly clear.
> 
> >  static void mpol_rebind_policy(struct mempolicy *pol,
> > @@ -180,7 +184,8 @@ static struct mempolicy *mpol_new(int mo
> >  		 mode, nodes ? nodes_addr(*nodes)[0] : -1);
> >  
> >  	if (mode == MPOL_DEFAULT)
> > -		return NULL;
> > +		return NULL;	/* simply delete any existing policy */
> > +
> 
> Why do we not return default_policy and insert that into the VMA or
> whatever?
> 

Because then, if we're installing a shared policy [shmem], we'll go
ahead and create an rb-node and insert the [default] policy in the tree
in the shared policy struct, instead of just deleting any policy ranges
that the new policy covers.  Andi already implemented the code to delete
shared policy ranges covered by a subsequent null/default policy.  I
like this approach.

I have additional patches, to come later, that dynamically allocate the
shared policy structure when a non-null [non-default] policy is
installed.  At some point, I plan on enhancing this to to use a single
policy pointer, instead of the shared policy struct, when the policy
covers the entire object range, and delete any existing shared policy
struct when/if a default policy covers the entire range.

Thanks,
Lee

--
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:[~2007-09-11 18:22 UTC|newest]

Thread overview: 76+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-08-30 18:50 [PATCH/RFC 0/5] Memory Policy Cleanups and Enhancements Lee Schermerhorn
2007-08-30 18:51 ` [PATCH/RFC 1/5] Mem Policy: fix reference counting Lee Schermerhorn
2007-09-11 18:48   ` Mel Gorman
2007-09-11 18:12     ` Lee Schermerhorn
2007-09-13  9:45       ` Mel Gorman
2007-08-30 18:51 ` [PATCH/RFC 2/5] Mem Policy: Use MPOL_PREFERRED for system-wide default policy Lee Schermerhorn
2007-09-11 18:54   ` Mel Gorman
2007-09-11 18:22     ` Lee Schermerhorn [this message]
2007-09-13  9:48       ` Mel Gorman
2007-08-30 18:51 ` [PATCH/RFC 3/5] Mem Policy: MPOL_PREFERRED fixups for "local allocation" Lee Schermerhorn
2007-09-11 18:58   ` Mel Gorman
2007-09-11 18:34     ` Lee Schermerhorn
2007-09-12 22:10       ` Christoph Lameter
2007-09-13 13:51         ` Lee Schermerhorn
2007-09-13 18:18           ` Christoph Lameter
2007-09-13  9:55       ` Mel Gorman
2007-09-12 22:06   ` Christoph Lameter
2007-09-13 13:35     ` Lee Schermerhorn
2007-09-13 18:21       ` Christoph Lameter
2007-08-30 18:51 ` [PATCH/RFC 4/5] Mem Policy: cpuset-independent interleave policy Lee Schermerhorn
2007-09-12 21:20   ` Ethan Solomita
2007-09-12 22:14     ` Christoph Lameter
2007-09-13 13:26     ` Lee Schermerhorn
2007-09-13 17:17       ` Ethan Solomita
2007-09-12 21:59   ` Ethan Solomita
2007-09-13 13:32     ` Lee Schermerhorn
2007-09-13 17:19       ` Ethan Solomita
2007-09-13 18:20       ` Christoph Lameter
2007-10-09  6:15       ` Ethan Solomita
2007-10-09 13:39         ` Lee Schermerhorn
2007-10-09 18:49         ` Christoph Lameter
2007-10-09 19:02           ` Lee Schermerhorn
2007-08-30 18:51 ` [PATCH/RFC 5/5] Mem Policy: add MPOL_F_MEMS_ALLOWED get_mempolicy() flag Lee Schermerhorn
2007-09-11 19:07   ` Mel Gorman
2007-09-11 18:42     ` Lee Schermerhorn
2007-09-12 22:14   ` Christoph Lameter
2007-09-14 20:24   ` [PATCH] " Lee Schermerhorn
2007-09-14 20:27     ` Christoph Lameter
2007-09-11 16:20 ` [PATCH/RFC 0/5] Memory Policy Cleanups and Enhancements Lee Schermerhorn
2007-09-11 19:12   ` Mel Gorman
2007-09-11 18:45     ` Lee Schermerhorn
2007-09-12 22:17   ` Christoph Lameter
2007-09-13 13:57     ` Lee Schermerhorn
2007-09-13 15:31       ` Mel Gorman
2007-09-13 15:01         ` Lee Schermerhorn
2007-09-13 18:55           ` Mel Gorman
2007-09-13 18:19       ` Christoph Lameter
2007-09-13 18:23         ` Mel Gorman
2007-09-13 18:26           ` Christoph Lameter
2007-09-13 21:17             ` Andrew Morton
2007-09-14  2:20               ` Christoph Lameter
2007-09-14  8:53               ` Mel Gorman
2007-09-14 15:06                 ` Lee Schermerhorn
2007-09-14 17:46                   ` Mel Gorman
2007-09-14 18:41                     ` Christoph Lameter
2007-09-16 18:02                       ` Mel Gorman
2007-09-17 18:12                         ` Christoph Lameter
2007-09-17 18:19                           ` Christoph Lameter
2007-09-17 20:14                             ` Mel Gorman
2007-09-17 19:16                               ` Christoph Lameter
2007-09-17 20:03                           ` Mel Gorman
2007-09-14 20:15                 ` Lee Schermerhorn
2007-09-16 18:05                   ` Mel Gorman
2007-09-16 19:34                     ` Andrew Morton
2007-09-16 21:22                       ` Mel Gorman
2007-09-17 13:29                     ` Lee Schermerhorn
2007-09-17 18:14                     ` Christoph Lameter
2007-09-13 15:49     ` Lee Schermerhorn
2007-09-13 18:22       ` Christoph Lameter
2007-09-17 19:00 ` [PATCH] Fix NUMA Memory Policy Reference Counting Lee Schermerhorn
2007-09-17 19:14   ` Christoph Lameter
2007-09-17 19:38     ` Lee Schermerhorn
2007-09-17 19:43       ` Christoph Lameter
2007-09-19 22:03         ` Lee Schermerhorn
2007-09-19 22:23           ` Christoph Lameter
2007-09-18 10:36   ` Mel Gorman

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=1189534923.5036.58.camel@localhost \
    --to=lee.schermerhorn@hp.com \
    --cc=ak@suse.de \
    --cc=akpm@linux-foundation.org \
    --cc=clameter@sgi.com \
    --cc=eric.whitney@hp.com \
    --cc=linux-mm@kvack.org \
    --cc=mel@csn.ul.ie \
    --cc=mtk-manpages@gmx.net \
    --cc=solo@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).