From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 95581A053D for ; Wed, 5 Aug 2020 16:21:04 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 6926B1BFFA; Wed, 5 Aug 2020 16:21:04 +0200 (CEST) Received: from mail-wm1-f65.google.com (mail-wm1-f65.google.com [209.85.128.65]) by dpdk.org (Postfix) with ESMTP id 48CA12BB5 for ; Wed, 5 Aug 2020 16:21:02 +0200 (CEST) Received: by mail-wm1-f65.google.com with SMTP id 3so6539528wmi.1 for ; Wed, 05 Aug 2020 07:21:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mayadata-io.20150623.gappssmtp.com; s=20150623; h=from:subject:to:cc:references:message-id:date:user-agent :mime-version:in-reply-to:content-transfer-encoding:content-language; bh=V4LpUFJ+eLh4VwNDS92dGlLrXTHqWCqjnIVNZ33Pr00=; b=R/kq7dP5FTW73JFOrow6GF4EYCElP+rNGve3EZZcLySiGDWheMKeNE9I+B490fJoDr 82M9StN6kARIwjHWzpUMcf58rqaJuKpjiOkdesFEDbApD7mShyoV0UUY8qQHoN49HNu9 Ts4Y/PwNsnucEGdbX8ICAEtYb58lBZ68IT8ATxQC1jz/dnsWOQ9dWw5goJIuZ5J6qUn4 AL3I2hS6fReKPKRp8/64j+/5gTiUka8oasf0Dya9tHss3KoHtUqLe71mQnl/RKGPKsOM C7msPrxWXYZSBje41GqzduTeJzcPLjJNmE/QEnigqvZIs4/3p/XQyPJ3eSLSfPAUBWA2 kURw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:subject:to:cc:references:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding :content-language; bh=V4LpUFJ+eLh4VwNDS92dGlLrXTHqWCqjnIVNZ33Pr00=; b=CAjE9xRPURf1qX3XWMmEpaJr5ppZ0xOtIZL8ydad+GZwR20xl3TswV/c/RXe2b6QCU 9WhH0v7TIq6ZlB+qCFBeQL6z+0kiyQ7YsmBcF9HmCk5ZFKvo59Yu4kvWgiMBXa/VqEYX Lr3x45+oMxYhBvuI+ny4RO4kjo0xsRjIwCPm5syqoIZpemKPgUX/p4TFMxxveUgINhXd HNFBYtQaafJcZHFZUTTEwgyeYqBwUzksHzqR71nOIOvZE4Q2d4JbVJ5ylMJTruE1XQu1 z89+c0jDVtVypGm2SPOLc4cqfsgzWTaE9XpV1ySsom4hfAEAgtxcPeV78jauzqfJQp6D eCeg== X-Gm-Message-State: AOAM531zHOo9gOWYd4pWCOG3TZgqfHKmO0FKPaTdIS9PgfzsDD8eOWAU LOVOUaplFsXBkZuZNpRWBLfSC6dO5ek= X-Google-Smtp-Source: ABdhPJzRjwuQ17rVcNnZ5MWAxqvxdhMxeV0Lwn+FGaJtVOiNBszj9s/WWSrkaPbFEz3iCf50OsoY+A== X-Received: by 2002:a1c:bc0b:: with SMTP id m11mr3102375wmf.83.1596637261660; Wed, 05 Aug 2020 07:21:01 -0700 (PDT) Received: from [192.168.0.33] (cpc98324-croy25-2-0-cust73.19-2.cable.virginm.net. [82.38.60.74]) by smtp.gmail.com with ESMTPSA id j2sm3143781wrp.46.2020.08.05.07.21.00 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 05 Aug 2020 07:21:00 -0700 (PDT) From: Nick Connolly X-Google-Original-From: Nick Connolly To: nicolas.dichtel@6wind.com, Anatoly Burakov Cc: dev@dpdk.org, stable@dpdk.org References: <20200805122640.13884-1-nick.connolly@mayadata.io> Message-ID: <4a1d578d-30e3-88de-be02-34ee0dd41ad1@mayadata.io> Date: Wed, 5 Aug 2020 15:20:59 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.11.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Content-Language: en-GB Subject: Re: [dpdk-stable] [PATCH] mem: fix allocation failure on non-NUMA kernel X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org Sender: "stable" Hi Nicolas, Thanks for the quick response. On 05/08/2020 14:42, Nicolas Dichtel wrote: > Le 05/08/2020 à 14:26, Nick Connolly a écrit : >> Running dpdk-helloworld on Linux with lib numa present, >> but no kernel support for NUMA (CONFIG_NUMA=n) causes >> ret_service_init() to fail with EAL: error allocating >> rte services array. >> >> alloc_seg() calls get_mempolicy to verify that the allocation >> has happened on the correct socket, but receives ENOSYS from >> the kernel and fails the allocation. >> >> The allocated socket should only be verified if check_numa() is true. >> >> Fixes: 2a96c88be83e ("mem: ease init in a docker container") > I'm wondering if the bug existed before this commit. > > Before this commit, it was: > move_pages(getpid(), 1, &addr, NULL, &cur_socket_id, 0); > if (cur_socket_id != socket_id) { > /* error */ > > Isn't it possible to hit this error case if CONFIG_NUMA is unset in the kernel? I've just run the previous code to test this out and you are right that move_pages does indeed return -1 with errno set to ENOSYS, but nothing checks this so execution carries on and compares cur_socket_id (which will be unchanged from the zero initialization) with socket_id (which is presumably also zero), thus allowing the allocation to succeed! > [snip] >> + if (check_numa()) { >> + ret = get_mempolicy(&cur_socket_id, NULL, 0, addr, >> + MPOL_F_NODE | MPOL_F_ADDR); >> + if (ret < 0) { >> + RTE_LOG(DEBUG, EAL, "%s(): get_mempolicy: %s\n", >> + __func__, strerror(errno)); >> + goto mapped; >> + } else if (cur_socket_id != socket_id) { >> + RTE_LOG(DEBUG, EAL, >> + "%s(): allocation happened on wrong socket (wanted %d, got %d)\n", >> + __func__, socket_id, cur_socket_id); >> + goto mapped; >> + } >> + } else { >> + if (rte_socket_count() > 1) >> + RTE_LOG(DEBUG, EAL, "%s(): not checking socket for allocation (wanted %d)\n", >> + __func__, socket_id); > nit: maybe an higher log level like WARNING? Open to guidance here - my concern was that this is going to be generated for every call to alloc_seg() and I'm not sure what the frequency will be - I'm cautious about flooding the log with warnings under 'normal running'.  Are the implications of running on a multi socket system with NUMA support disabled in the kernel purely performance related for the DPDK or is there a functional correctness issue as well? > > Regards, > Nicolas Regards, Nick