From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753850AbbHXDb6 (ORCPT ); Sun, 23 Aug 2015 23:31:58 -0400 Received: from szxga02-in.huawei.com ([119.145.14.65]:5748 "EHLO szxga02-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751475AbbHXDb5 (ORCPT ); Sun, 23 Aug 2015 23:31:57 -0400 Message-ID: <55DA8F59.1050700@huawei.com> Date: Mon, 24 Aug 2015 11:28:25 +0800 From: Xishi Qiu User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:12.0) Gecko/20120428 Thunderbird/12.0.1 MIME-Version: 1.0 To: Rik van Riel CC: LKML , Linux MM , Xiexiuqi Subject: Re: is this a problem of numactl in RedHat7.0 ? References: <55D6EEEB.7050701@huawei.com> <55D78FB0.9040906@redhat.com> In-Reply-To: <55D78FB0.9040906@redhat.com> Content-Type: text/plain; charset="windows-1252" Content-Transfer-Encoding: 7bit X-Originating-IP: [10.177.25.179] X-CFilter-Loop: Reflected Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2015/8/22 4:53, Rik van Riel wrote: > On 08/21/2015 05:27 AM, Xishi Qiu wrote: >> I use numactl(--localalloc) tool run a test case, but it shows that >> the numa policy is prefer, I don't know why. > > The kernel implements MPOL_PREFERRED and MPOL_LOCAL > in the same way. Look at this code in mpol_new(), > in mm/mempolicy.c: > > /* > * MPOL_PREFERRED cannot be used with MPOL_F_STATIC_NODES or > * MPOL_F_RELATIVE_NODES if the nodemask is empty (local allocation). > * All other modes require a valid pointer to a non-empty nodemask. > */ > if (mode == MPOL_PREFERRED) { > if (nodes_empty(*nodes)) { > if (((flags & MPOL_F_STATIC_NODES) || > (flags & MPOL_F_RELATIVE_NODES))) > return ERR_PTR(-EINVAL); > } > } else if (mode == MPOL_LOCAL) { > if (!nodes_empty(*nodes)) > return ERR_PTR(-EINVAL); > mode = MPOL_PREFERRED; > } else if (nodes_empty(*nodes)) > return ERR_PTR(-EINVAL); > Hi Rik, Thank you for your reply. I find the reason is this patch, and it is not backport to RedHat 7.0 8790c71a18e5d2d93532ae250bcf5eddbba729cd diff --git a/mm/mempolicy.c b/mm/mempolicy.c index 873de7e..ae3c8f3 100644 --- a/mm/mempolicy.c +++ b/mm/mempolicy.c @@ -2930,7 +2930,7 @@ void mpol_to_str(char *buffer, int maxlen, struct mempolicy *pol) unsigned short mode = MPOL_DEFAULT; unsigned short flags = 0; - if (pol && pol != &default_policy) { + if (pol && pol != &default_policy && !(pol->flags & MPOL_F_MORON)) { mode = pol->mode; flags = pol->flags; } Thanks, Xishi Qiu > > >