linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Ray Bryant <raybry@sgi.com>
To: Dave Hansen <haveblue@us.ibm.com>
Cc: Hirokazu Takahashi <taka@valinux.co.jp>,
	Marcelo Tosatti <marcelo.tosatti@cyclades.com>,
	linux-mm <linux-mm@kvack.org>,
	Rick Lindsley <ricklind@us.ibm.com>,
	"Matthew C. Dobson [imap]" <colpatch@us.ibm.com>
Subject: Re: process page migration
Date: Tue, 04 Jan 2005 12:26:01 -0600	[thread overview]
Message-ID: <41DADFB9.2090607@sgi.com> (raw)
In-Reply-To: <1104860456.7581.21.camel@localhost>

Dave Hansen wrote:
> On Tue, 2005-01-04 at 11:30 -0600, Ray Bryant wrote:
> 
>
> 
> 
> We already have scheduler code which has some knowledge of when a
> process is dragged from one node to another.  Combined with the per-node
> RSS, could we make a decision about when a process needs to have
> migration performed on its pages on a more automatic basis, without the
> syscalls?
> 

The only time I am proposing to do process and memory migration is in
response to requests issued from userspace.  This is not an automatic
process (see below for more details.)

> We could have a tunable for how aggressive this mechanism is, so that
> the process wouldn't start running again on the more strict SGI machines
> until a very large number of the pages are pulled over.  However, on
> machines where process latency is more of an issue, the tunable could be
> set to a much less aggressive value.
> 
> This would give normal, somewhat less exotic, NUMA machines the benefits
> of page migration without the need for the process owner to do anything
> manually to them, while also making sure that we keep the number of
> interfaces to the migration code to a relative minimum.  
> 
> -- Dave
> 
>

What I am working on is indeed manual process and page migration in a NUMA
system.  Specifically, we are running with cpusets, and the idea is to
support moving a job from one cpuset to another in response to batch scheduler
related decisions.  (The basic scenario is that a bunch of jobs are running,
each in its own cpuset, when a new high priority job arrives at the batch
scheduler.  The batch scheduler will pick some job to suspend, and start
the new job in that cpuset.  At some later point, one of the other jobs
finishes, and the scheduler now decides to move the suspended job to the
newly free cpuset.)  However, I don't want to tie the migration code I
am working on into cpusets, since the future of that is still uncertain.

Hence the migration system call I am proposing is something like:

     migrate_process_pages(pid, numnodes, old_node_list, new_node_list)

where the node lists are one dimensional arrays of size numnodes.
Pages on old_node_list[i] are moved to new_node_list[i].

(If cpusets exist on the underlying system, we will use the cpuset
infrastructure to tell us which pid's need to be moved.)

The only other new system call needed is something to update the memory
policy of the process to correspond to the new set of nodes.

Existing interfaces can be used to do the rest of the migration
functionality.

SGI's experience with automatically detecting when to pull pages from one
node to another based on program usage patterns has not been good.  IRIX
supported this kind of functionality, and all it ever seemed to do was to
move the wrong page at the wrong time (so I am told; it was before my time
with SGI...)

-- 
Best Regards,
Ray
-----------------------------------------------
                   Ray Bryant
512-453-9679 (work)         512-507-7807 (cell)
raybry@sgi.com             raybry@austin.rr.com
The box said: "Requires Windows 98 or better",
            so I installed Linux.
-----------------------------------------------
--
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:"aart@kvack.org"> aart@kvack.org </a>

  reply	other threads:[~2005-01-04 18:26 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-01-03 17:48 Ray Bryant
2005-01-03 18:25 ` Dave Hansen
2005-01-03 19:04   ` Ray Bryant
2005-01-03 16:24     ` page migration\ Marcelo Tosatti
2005-01-03 17:13       ` Marcelo Tosatti
2005-01-03 20:33         ` Ray Bryant
2005-01-03 18:38           ` Marcelo Tosatti
2005-01-04 15:42             ` Hirokazu Takahashi
2005-01-04 17:34               ` Ray Bryant
2005-01-04 16:11                 ` Marcelo Tosatti
2005-01-05  0:08                 ` page migration Ray Bryant
2005-01-03 20:30       ` Ray Bryant
2005-01-03 19:37     ` Dave Hansen
2005-01-03 20:15       ` Ray Bryant
2005-01-03 20:17         ` William Lee Irwin III
2005-01-03 20:36           ` Ray Bryant
2005-01-04 14:42         ` Hirokazu Takahashi
2005-01-04 17:30           ` Ray Bryant
2005-01-04 17:40             ` process " Dave Hansen
2005-01-04 18:26               ` Ray Bryant [this message]
2005-01-07 16:40                 ` page migration patch Ray Bryant
2005-01-10  2:58                   ` Dave Hansen
2005-01-07 16:57                 ` migration cache, updated Ray Bryant
2005-01-10 10:07                   ` Marcelo Tosatti
2005-01-04 22:03   ` page migration Yasunori Goto
2005-01-04 23:58     ` Ray Bryant

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=41DADFB9.2090607@sgi.com \
    --to=raybry@sgi.com \
    --cc=colpatch@us.ibm.com \
    --cc=haveblue@us.ibm.com \
    --cc=linux-mm@kvack.org \
    --cc=marcelo.tosatti@cyclades.com \
    --cc=ricklind@us.ibm.com \
    --cc=taka@valinux.co.jp \
    /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