linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: David Rientjes <rientjes@google.com>
To: Ethan Solomita <solo@google.com>
Cc: Paul Jackson <pj@sgi.com>, clameter@sgi.com, linux-mm@kvack.org
Subject: Re: cpusets vs. mempolicy and how to get interleaving
Date: Mon, 20 Aug 2007 11:40:37 -0700 (PDT)	[thread overview]
Message-ID: <alpine.DEB.0.99.0708201131160.10747@chino.kir.corp.google.com> (raw)
In-Reply-To: <46C9DD62.8020803@google.com>

On Mon, 20 Aug 2007, Ethan Solomita wrote:

> > Like I've already said, there is absolutely no reason to add a new MPOL
> > variant for this case.  As Christoph already mentioned, PF_SPREAD_PAGE gets
> > similar results.  So just modify mpol_rebind_policy() so that if
> > /dev/cpuset/<cpuset>/memory_spread_page is true, you rebind the interleaved
> > nodemask to all nodes in the new nodemask.  That's the well-defined cpuset
> > interface for getting an interleaved behavior already.
> 
> 	memory_spread_page is only for file-backed pages, not anon pages.

Please read what I said above, all you have to do is modify 
mpol_rebind_policy() so that if /dev/cpuset/<cpuset>/memory_spread_page is 
true, you rebind the interleaved nodemask to all nodes in the new 
nodemask.

This only happens for the MPOL_INTERLEAVE case because the application has 
made it quite clear through set_mempolicy(MPOL_INTERLEAVE, ...) that it 
wants this behavior.

	int cpuset_is_spread_page(struct task_struct *task)
	{
		int ret;
		task_lock(task);
		ret = is_spread_page(task->cpuset);
		task_unlock(task);
		return ret;
	}

	void mpol_rebind_policy(struct mempolicy *pol, const nodemask_t *newmask)
	{
		...
		case MPOL_INTERLEAVE:
			if (cpuset_is_spread_page(current))
				pol->v.nodes = *newmask;
			else {
				nodes_remap(tmp, pol->v.nodes, *mpolmask, *newmask);
				pol->v.nodes = tmp;
			}
			...
		...
	}

--
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-08-20 18:40 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-08-18  0:22 Ethan Solomita
2007-08-18  0:29 ` Ethan Solomita
2007-08-19 10:18   ` David Rientjes
2007-08-20  0:53     ` Ethan Solomita
2007-08-20  2:34       ` Paul Jackson
2007-08-20  5:47         ` Ethan Solomita
2007-08-20  5:53           ` Paul Jackson
2007-08-20  8:10             ` David Rientjes
2007-08-20 18:25               ` Paul Jackson
2007-08-20 18:28               ` Ethan Solomita
2007-08-20 18:40                 ` David Rientjes [this message]
2007-08-20 19:50                   ` Ethan Solomita
2007-08-20 19:07           ` Christoph Lameter
2007-08-21 14:14             ` Lee Schermerhorn
2007-08-18  1:07 ` Christoph Lameter
2007-08-18  1:51   ` Ethan Solomita

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=alpine.DEB.0.99.0708201131160.10747@chino.kir.corp.google.com \
    --to=rientjes@google.com \
    --cc=clameter@sgi.com \
    --cc=linux-mm@kvack.org \
    --cc=pj@sgi.com \
    --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