From: Ray Bryant <raybry@engr.sgi.com>
To: Andi Kleen <ak@suse.de>
Cc: Ray Bryant <raybry@sgi.com>,
Hirokazu Takahashi <taka@valinux.co.jp>,
Dave Hansen <haveblue@us.ibm.com>,
Marcelo Tosatti <marcelo.tosatti@cyclades.com>,
Christoph Hellwig <hch@infradead.org>,
Ray Bryant <raybry@austin.rr.com>, linux-mm <linux-mm@kvack.org>,
lhms-devel@lists.sourceforge.net, Paul Jackson <pj@sgi.com>,
Nathan Scott <nathans@sgi.com>
Subject: Re: [Lhms-devel] Re: [PATCH 2.6.12-rc5 5/10] mm: manual page migration-rc3 -- sys_migrate_pages-mempolicy-migration-rc3.patch
Date: Thu, 23 Jun 2005 15:59:47 -0500 [thread overview]
Message-ID: <42BB22C3.7070602@engr.sgi.com> (raw)
In-Reply-To: <20050623015121.GI14251@wotan.suse.de>
Andi Kleen wrote:
> On Wed, Jun 22, 2005 at 09:39:41AM -0700, Ray Bryant wrote:
>
>>This patch adds code that translates the memory policy structures
>>as they are encountered so that they continue to represent where
>>memory should be allocated after the page migration has completed.
>
>
>
> That won't work for shared memory objects though (which store
> their mempolicies separately). Is that intended?
>
No, it looks like I dropped the ball there. I thought that the
vma->vm_policy field was used in that case as well, but it appears
that the policy is looked up in the tree every time it is used.
(Can that be right?) If so, I need to do something else.
Anyway, I shouldn't be updating the vma policy if I am also not
migrating the VMA, so there is some work there that needs to be
done as well. (The update to the per vma policy needs to be moved
into migrate_vma()).
>
>>+
>>+ if (task->mempolicy->policy == MPOL_INTERLEAVE) {
>>+ /*
>>+ * If the task is still running and allocating storage, this
>>+ * is racy, but there is not much that can be done about it.
>>+ */
>>+ tmp = task->il_next;
>>+ if (node_map[tmp] >= 0)
>>+ task->il_next = node_map[tmp];
>
>
> RCU (synchronize_kernel) could do better, but that might be slow. However the
> code might BUG when il_next ends up in a node that is not part of
> the policy anymore. Have you checked that?
>
> -Andi
>
I don't think this particular case will bug(). The worst thing that could
happen, as I read the code is that if we change the policy at the same time
that a page is being allocated via the interleaved policy, that one page
could be allocated on a node according to the old policy even after the
policy has been updated.
(That is, we update the policy and before task->il_next can be updated
to match the new policy, a page gets allocated.) Since we update the
policy, then migrate the pages, then that one page will get migrated
anyway, so as near as I can tell this is not a problem.
However, (looking at the code some more) there is a different case where a
BUG() could be called. That is in offset_il_node(). If the node mask
(p->v.nodes) changes after the last find_next_bit() and before the
BUG_ON(!test_bit(nid, pol->v.nodes)), then the system could BUG() because
of the policy migration.
A simple solution to this would be to delete that BUG_ON(). :-)
(Is this required? It looks almost like a debugging statement.)
In that case, we have the same kind of situation as with the il->next
case, that is, if a process is actively allocating storage at the same
time as we do a migration, then one page (per vma?) could be allocated
on the old set of nodes after the policy is updated. However, since
we update the policy first, then migrate the pages, it still seems to
me that all such pages will get migrated to the new nodes.
Unfortunately, I've not tested this. For the cases I am looking at
we suspend the task before migration and resume it after. Indeed,
the system call in question will sometimes fail (the migrated process
will die) it we don't suspend/resume the migrated tasks. I was hoping
that would be good enough, but if migrating non-suspended tasks is
thought to be important, then I will go fix that as well. (The
unresolved issues paragraph in the note I sent out about this patch
points out this issue.)
I don't see any other BUG() calls that could be tripped by changing
the node mask underneath a process that is actively allocating
storage, at least not in mempolicy.c. Am I overlooking something?
--
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>
next prev parent reply other threads:[~2005-06-23 20:59 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-06-22 16:39 [PATCH 2.6.12-rc5 0/10] mm: manual page migration-rc3 -- overview Ray Bryant
2005-06-22 16:39 ` [PATCH 2.6.12-rc5 1/10] mm: hirokazu-steal_page_from_lru.patch Ray Bryant
2005-06-22 16:39 ` [PATCH 2.6.12-rc5 2/10] mm: manual page migration-rc3 -- xfs-migrate-page-rc3.patch Ray Bryant
2005-06-22 17:30 ` [Lhms-devel] " Joel Schopp
2005-06-23 4:01 ` Nathan Scott
2005-06-22 16:39 ` [PATCH 2.6.12-rc5 3/10] mm: manual page migration-rc3 -- add-node_map-arg-to-try_to_migrate_pages-rc3.patch Ray Bryant
2005-06-22 16:39 ` [PATCH 2.6.12-rc5 4/10] mm: manual page migration-rc3 -- add-sys_migrate_pages-rc3.patch Ray Bryant
2005-06-22 17:23 ` Dave Hansen
2005-06-23 1:34 ` Ray Bryant
2005-06-23 1:42 ` Dave Hansen
2005-06-25 10:32 ` Hirokazu Takahashi
2005-06-22 16:39 ` [PATCH 2.6.12-rc5 5/10] mm: manual page migration-rc3 -- sys_migrate_pages-mempolicy-migration-rc3.patch Ray Bryant
2005-06-23 1:51 ` Andi Kleen
2005-06-23 20:59 ` Ray Bryant [this message]
2005-06-23 21:05 ` [Lhms-devel] " Andi Kleen
2005-06-25 5:11 ` Ray Bryant
2005-06-22 16:39 ` [PATCH 2.6.12-rc5 6/10] mm: manual page migration-rc3 -- add-mempolicy-control-rc3.patch Ray Bryant
2005-06-22 16:39 ` [PATCH 2.6.12-rc5 7/10] mm: manual page migration-rc3 -- sys_migrate_pages-migration-selection-rc3.patch Ray Bryant
2005-06-22 16:40 ` [PATCH 2.6.12-rc5 8/10] mm: manual page migration-rc3 -- sys_migrate_pages-cpuset-support-rc3.patch Ray Bryant
2005-06-22 16:40 ` [PATCH 2.6.12-rc5 9/10] mm: manual page migration-rc3 -- sys_migrate_pages-permissions-check-rc3.patch Ray Bryant
2005-06-22 16:40 ` [PATCH 2.6.12-rc5 10/10] mm: manual page migration-rc3 -- N1.2-add-nodemap-to-try_to_migrate_pages-call.patch Ray Bryant
2005-06-23 21:31 ` [PATCH 2.6.12-rc5 0/10] mm: manual page migration-rc3 -- overview Christoph Lameter
2005-06-23 23:00 ` Ray Bryant
2005-06-23 23:03 ` Christoph Lameter
2005-06-24 14:15 ` [Lhms-devel] " Ray Bryant
2005-06-24 15:41 ` 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=42BB22C3.7070602@engr.sgi.com \
--to=raybry@engr.sgi.com \
--cc=ak@suse.de \
--cc=haveblue@us.ibm.com \
--cc=hch@infradead.org \
--cc=lhms-devel@lists.sourceforge.net \
--cc=linux-mm@kvack.org \
--cc=marcelo.tosatti@cyclades.com \
--cc=nathans@sgi.com \
--cc=pj@sgi.com \
--cc=raybry@austin.rr.com \
--cc=raybry@sgi.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