[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAHGf_=qLX7gofwHoSKpHLp7nvD6qJtHbmYzAR0UQ42JbfnYerw@mail.gmail.com>
Date: Thu, 26 Apr 2012 21:14:16 -0400
From: KOSAKI Motohiro <kosaki.motohiro@...il.com>
To: lwoodman@...hat.com
Cc: Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
linux-mm@...ck.org, Rik van Riel <riel@...hat.com>,
Christoph Lameter <cl@...ux.com>,
Motohiro Kosaki <mkosaki@...hat.com>,
Andrew Morton <akpm@...ux-foundation.org>
Subject: Re: [PATCH -mm V3] do_migrate_pages() calls migrate_to_node() even if
task is already on a correct node
> @@ -1012,6 +1012,26 @@ int do_migrate_pages(struct mm_struct *mm,
> int dest = 0;
>
> for_each_node_mask(s, tmp) {
> +
> + /*
> + * do_migrate_pages() tries to maintain the
> + * relative node relationship of the pages
> + * established between threads and memory areas.
> + *
> + * However if the number of source nodes is not
> + * equal to the number of destination nodes we
> + * can not preserve this node relative relationship.
> + * In that case, skip copying memory from a node
> that
> + * is in the destination mask.
> + *
> + * Example: [2,3,4] -> [3,4,5] moves everything.
> + * [0-7] - > [3,4,5] moves only
> 0,1,2,6,7.
> + */
> +
> + if ((nodes_weight(*from_nodes) !=
> nodes_weight(*to_nodes)) &&
> + (node_isset(s, *to_nodes)))
> + continue;
> +
> d = node_remap(s, *from_nodes, *to_nodes);
> if (s == d)
> continue;
Acked-by: KOSAKI Motohiro <kosaki.motohiro@...fujitsu.com>
Powered by blists - more mailing lists