Re: [PATCH -mm] do_migrate_pages() calls migrate_to_node() even iftask is already on a correct node

From: KOSAKI Motohiro
Date: Thu Mar 29 2012 - 15:43:15 EST


(3/29/12 2:00 PM), Larry Woodman wrote:
On 03/22/2012 03:30 PM, Christoph Lameter wrote:
On Thu, 22 Mar 2012, Larry Woodman wrote:

Application may manage their locality given a range of nodes and each of
the x .. x+n nodes has their particular purpose.
So to be clear on this, in that case the intention would be move 3 to 4, 4 to
5 and 5 to 6
to keep the node ordering the same?
Yup. Have a look at do_migrate_pages and the descrition in the comment by
there by Paul Jackson.


Christoph and others what do you think about this???


for_each_node_mask(s, tmp) {
+
+ /* IFF there is an equal number of source and
+ * destination nodes, maintain relative node distance
+ * even when source and destination nodes overlap.
+ * However, when the node weight is unequal, never move
+ * memory out of any destination nodes */
+ 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;

I'm confused. Could you please explain why you choose nodes_weight()? On my first impression,
it seems almostly unrelated factor.


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/