Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932841Ab2HVPIy (ORCPT ); Wed, 22 Aug 2012 11:08:54 -0400 Received: from mx1.redhat.com ([209.132.183.28]:56473 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932660Ab2HVPAb (ORCPT ); Wed, 22 Aug 2012 11:00:31 -0400 From: Andrea Arcangeli To: linux-kernel@vger.kernel.org, linux-mm@kvack.org Cc: Hillf Danton , Dan Smith , Linus Torvalds , Andrew Morton , Thomas Gleixner , Ingo Molnar , Paul Turner , Suresh Siddha , Mike Galbraith , "Paul E. McKenney" , Lai Jiangshan , Bharata B Rao , Lee Schermerhorn , Rik van Riel , Johannes Weiner , Srivatsa Vaddagiri , Christoph Lameter , Alex Shi , Mauricio Faria de Oliveira , Konrad Rzeszutek Wilk , Don Morris , Benjamin Herrenschmidt Subject: [PATCH 20/36] autonuma: default mempolicy follow AutoNUMA Date: Wed, 22 Aug 2012 16:59:04 +0200 Message-Id: <1345647560-30387-21-git-send-email-aarcange@redhat.com> In-Reply-To: <1345647560-30387-1-git-send-email-aarcange@redhat.com> References: <1345647560-30387-1-git-send-email-aarcange@redhat.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1382 Lines: 41 If an task_selected_nid has already been selected for the task, try to allocate memory from it even if it's temporarily not the local node. Chances are it's where most of its memory is already located and where it will run in the future. Acked-by: Rik van Riel Signed-off-by: Andrea Arcangeli --- mm/mempolicy.c | 12 ++++++++++-- 1 files changed, 10 insertions(+), 2 deletions(-) diff --git a/mm/mempolicy.c b/mm/mempolicy.c index bd92431..19a8f72 100644 --- a/mm/mempolicy.c +++ b/mm/mempolicy.c @@ -1951,10 +1951,18 @@ retry_cpuset: */ if (pol->mode == MPOL_INTERLEAVE) page = alloc_page_interleave(gfp, order, interleave_nodes(pol)); - else + else { + int nid = -1; +#ifdef CONFIG_AUTONUMA + if (current->task_autonuma) + nid = current->task_autonuma->task_selected_nid; +#endif + if (nid < 0) + nid = numa_node_id(); page = __alloc_pages_nodemask(gfp, order, - policy_zonelist(gfp, pol, numa_node_id()), + policy_zonelist(gfp, pol, nid), policy_nodemask(gfp, pol)); + } if (unlikely(!put_mems_allowed(cpuset_mems_cookie) && !page)) goto retry_cpuset; -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/