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

From: KOSAKI Motohiro
Date: Thu Apr 26 2012 - 21:14:35 EST


> @@ -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@xxxxxxxxxxxxxx>
N?§²æìr¸?yúè?Øb²X¬¶Ç§vØ^?)Þº{.nÇ+?·¥?{±?êçzX§¶?¡Ü¨}©?²Æ zÚ&j:+v?¨¾«?êçzZ+?Ê+zf£¢·h??§~?­?Ûiÿûàz¹®w¥¢¸??¨è­Ú&¢)ߢf?ù^jÇ«y§m?á@A«a¶Úÿ 0¶ìh®å?i