From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.2 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D0771C432BE for ; Wed, 28 Jul 2021 15:25:32 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 675ED60BD3 for ; Wed, 28 Jul 2021 15:25:32 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 675ED60BD3 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=kvack.org Received: by kanga.kvack.org (Postfix) id 04BB46B0033; Wed, 28 Jul 2021 11:25:32 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id F3DE56B0071; Wed, 28 Jul 2021 11:25:31 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E2CFB8E0001; Wed, 28 Jul 2021 11:25:31 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0216.hostedemail.com [216.40.44.216]) by kanga.kvack.org (Postfix) with ESMTP id C8D196B0033 for ; Wed, 28 Jul 2021 11:25:31 -0400 (EDT) Received: from smtpin03.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay04.hostedemail.com (Postfix) with ESMTP id 7EED9230F9 for ; Wed, 28 Jul 2021 15:25:31 +0000 (UTC) X-FDA: 78412370862.03.F046998 Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by imf01.hostedemail.com (Postfix) with ESMTP id BB5255024AA0 for ; Wed, 28 Jul 2021 15:25:30 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10059"; a="192280150" X-IronPort-AV: E=Sophos;i="5.84,276,1620716400"; d="scan'208";a="192280150" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Jul 2021 08:25:11 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.84,276,1620716400"; d="scan'208";a="506511592" Received: from shbuild999.sh.intel.com (HELO localhost) ([10.239.146.151]) by FMSMGA003.fm.intel.com with ESMTP; 28 Jul 2021 08:25:07 -0700 Date: Wed, 28 Jul 2021 23:25:07 +0800 From: Feng Tang To: Michal Hocko Cc: "linux-mm@kvack.org" , Andrew Morton , David Rientjes , "Hansen, Dave" , "Widawsky, Ben" , "linux-kernel@vger.kernel.org" , "linux-api@vger.kernel.org" , Andrea Arcangeli , Mel Gorman , Mike Kravetz , Randy Dunlap , Vlastimil Babka , Andi Kleen , "Williams, Dan J" , "Huang, Ying" Subject: Re: [PATCH v6 2/6] mm/memplicy: add page allocation function for MPOL_PREFERRED_MANY policy Message-ID: <20210728152507.GE43486@shbuild999.sh.intel.com> References: <1626077374-81682-1-git-send-email-feng.tang@intel.com> <1626077374-81682-3-git-send-email-feng.tang@intel.com> <20210728151810.GD43486@shbuild999.sh.intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20210728151810.GD43486@shbuild999.sh.intel.com> User-Agent: Mutt/1.5.24 (2015-08-30) X-Rspamd-Server: rspam01 X-Rspamd-Queue-Id: BB5255024AA0 Authentication-Results: imf01.hostedemail.com; dkim=none; dmarc=fail reason="No valid SPF, No valid DKIM" header.from=intel.com (policy=none); spf=none (imf01.hostedemail.com: domain of feng.tang@intel.com has no SPF policy when checking 192.55.52.136) smtp.mailfrom=feng.tang@intel.com X-Stat-Signature: zq5t1ufkx4nh1c1oj1qpiq8tj1h7knjc X-HE-Tag: 1627485930-69797 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Wed, Jul 28, 2021 at 11:18:10PM +0800, Tang, Feng wrote: > On Wed, Jul 28, 2021 at 02:42:26PM +0200, Michal Hocko wrote: > > On Mon 12-07-21 16:09:30, Feng Tang wrote: > > > The semantics of MPOL_PREFERRED_MANY is similar to MPOL_PREFERRED, > > > that it will first try to allocate memory from the preferred node(s), > > > and fallback to all nodes in system when first try fails. > > > > > > Add a dedicated function for it just like 'interleave' policy. > > > > > > Link: https://lore.kernel.org/r/20200630212517.308045-9-ben.widawsky@intel.com > > > Suggested-by: Michal Hocko > > > Co-developed-by: Ben Widawsky > > > Signed-off-by: Ben Widawsky > > > Signed-off-by: Feng Tang > > > > It would be better to squash this together with the actual user of the > > function added by the next patch. > > Ok, will do > > > > --- > > > mm/mempolicy.c | 19 +++++++++++++++++++ > > > 1 file changed, 19 insertions(+) > > > > > > diff --git a/mm/mempolicy.c b/mm/mempolicy.c > > > index 17b5800b7dcc..d17bf018efcc 100644 > > > --- a/mm/mempolicy.c > > > +++ b/mm/mempolicy.c > > > @@ -2153,6 +2153,25 @@ static struct page *alloc_page_interleave(gfp_t gfp, unsigned order, > > > return page; > > > } > > > > > > +static struct page *alloc_page_preferred_many(gfp_t gfp, unsigned int order, > > > + struct mempolicy *pol) > > > > We likely want a node parameter to know which one we want to start with > > for locality. Callers should use policy_node for that. > > Yes, locality should be considered, something like this? > > int pnid, lnid = numa_node_id(); > > if (is_nodeset(lnid, &pol->nodes)) > pnid = local_nid; > else > pnid = first_node(pol->nodes); One further thought is, if local node is not in the nodemask, should we compare the distance of all the nodes in nodemask to the local node and chose the shortest? Thanks, Feng > page = __alloc_pages(((gfp | __GFP_NOWARN) & ~__GFP_DIRECT_RECLAIM), > order, pnid, &pol->nodes); > if (!page) > page = __alloc_pages(gfp, order, lnid, NULL); > return page; >