From patchwork Tue May 23 13:06:16 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anatoly Burakov X-Patchwork-Id: 127217 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 8C2CB42B81; Tue, 23 May 2023 15:06:24 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 1296E40A80; Tue, 23 May 2023 15:06:24 +0200 (CEST) Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by mails.dpdk.org (Postfix) with ESMTP id 6525D40689 for ; Tue, 23 May 2023 15:06:22 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1684847182; x=1716383182; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=u6SuAOsYHwztwaYm94LqGH8r0lyICwJv4pst21GuCH8=; b=Hd0edyzXSlUo+X1DxoN9TF8suYoGf49Adhj8phbJeVubLaZrtwIpo1tO ZMSO3C/+3zcHveVRkjSYjdxx3CxLUdOy/SI+M2k8Pvjyvalf0jtodVPhd MjyEKJIm5fJ7dZPoZOSTYwh8BNPGm76XLzxeQH7LjjbctDo8cIj96d/rh WeYyk3tAiMVvvs5PBjjz6O9t5u8z3IGaopqJfBwJstLi/QTtzm0Er4VBs PVkdGM594uL+DQvobjVSp8/XzXGSSBJ/YGpWRKs7dDJ6F4AytmHh5EL/l 9NfDuQJQ/NZAcAxCnAM1xHCIesJfg71BAVwlEEmCPTOuoGEUXGJ6XCT4r g==; X-IronPort-AV: E=McAfee;i="6600,9927,10719"; a="333592641" X-IronPort-AV: E=Sophos;i="6.00,186,1681196400"; d="scan'208";a="333592641" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 May 2023 06:06:18 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10719"; a="707001915" X-IronPort-AV: E=Sophos;i="6.00,186,1681196400"; d="scan'208";a="707001915" Received: from silpixa00401191.ir.intel.com ([10.55.128.139]) by fmsmga007.fm.intel.com with ESMTP; 23 May 2023 06:06:17 -0700 From: Anatoly Burakov To: dev@dpdk.org Cc: david.marchand@redhat.com, kaisenx.you@intel.com, thomas@monjalon.net Subject: [PATCH v1 1/1] eal: warn user when lcore cpuset includes multiple sockets Date: Tue, 23 May 2023 13:06:16 +0000 Message-Id: <0f77ce4515ff074f997f0068635b328060322d5a.1684847165.git.anatoly.burakov@intel.com> X-Mailer: git-send-email 2.37.2 MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Currently, it is allowed to specify a cpuset for lcores such that it will include physical cores from different NUMA nodes. This has an effect of setting `rte_socket_id()` for that lcore to SOCKET_ID_ANY, so add a warning about it. Signed-off-by: Anatoly Burakov --- lib/eal/common/eal_common_thread.c | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/lib/eal/common/eal_common_thread.c b/lib/eal/common/eal_common_thread.c index 079a385630..46fd2aca1e 100644 --- a/lib/eal/common/eal_common_thread.c +++ b/lib/eal/common/eal_common_thread.c @@ -65,10 +65,13 @@ static void thread_update_affinity(rte_cpuset_t *cpusetp) { unsigned int lcore_id = rte_lcore_id(); + int socket_id; + + /* find socket ID from cpuset */ + socket_id = eal_cpuset_socket_id(cpusetp); /* store socket_id in TLS for quick access */ - RTE_PER_LCORE(_socket_id) = - eal_cpuset_socket_id(cpusetp); + RTE_PER_LCORE(_socket_id) = socket_id; /* store cpuset in TLS for quick access */ memmove(&RTE_PER_LCORE(_cpuset), cpusetp, @@ -76,9 +79,20 @@ thread_update_affinity(rte_cpuset_t *cpusetp) if (lcore_id != (unsigned)LCORE_ID_ANY) { /* EAL thread will update lcore_config */ - lcore_config[lcore_id].socket_id = RTE_PER_LCORE(_socket_id); + lcore_config[lcore_id].socket_id = socket_id; memmove(&lcore_config[lcore_id].cpuset, cpusetp, sizeof(rte_cpuset_t)); + + /* + * lcore_id is not LCORE_ID_ANY, meaning this is a DPDK lcore, + * so having a valid NUMA affinity for this lcore is important. + * However, if cpuset includes cores from multiple NUMA nodes, + * the socket ID will be set to SOCKET_ID_ANY. Notify the user + * about it if that happens. + */ + if (socket_id == SOCKET_ID_ANY) + RTE_LOG(INFO, EAL, "DPDK lcore %u has NUMA affinity set to SOCKET_ID_ANY\n", + lcore_id); } }