From c339e7600a20cd4d3b60e5a8caa5c58d66bc553b Mon Sep 17 00:00:00 2001 From: Lukas Sismis Date: Thu, 22 Jun 2023 15:43:39 +0200 Subject: [PATCH] dpdk: improve handling of SOCKET_ID_ANY in DPDK 22.11+ Suricata complained that NIC is on different NUMA node than the CPU thread. However, sometimes DPDK might be unable to resolve NUMA location and as a result operate with any NUMA node that is available. Current implementation reported NUMA ID as -1 which could have been confusing to users. Ticket: #6115 --- src/source-dpdk.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/source-dpdk.c b/src/source-dpdk.c index 1282857215..363b718897 100644 --- a/src/source-dpdk.c +++ b/src/source-dpdk.c @@ -516,7 +516,8 @@ static TmEcode ReceiveDPDKThreadInit(ThreadVars *tv, const void *initdata, void dpdk_config->pkt_mempool = NULL; thread_numa = GetNumaNode(); - if (thread_numa >= 0 && thread_numa != ptv->port_socket_id) { + if (thread_numa >= 0 && ptv->port_socket_id != SOCKET_ID_ANY && + thread_numa != ptv->port_socket_id) { SC_ATOMIC_ADD(dpdk_config->inconsitent_numa_cnt, 1); SCLogPerf("%s: NIC is on NUMA %d, thread on NUMA %d", dpdk_config->iface, ptv->port_socket_id, thread_numa); @@ -550,6 +551,11 @@ static TmEcode ReceiveDPDKThreadInit(ThreadVars *tv, const void *initdata, void SCLogWarning("%s: NIC is on NUMA %d, %u threads on different NUMA node(s)", dpdk_config->iface, rte_eth_dev_socket_id(ptv->port_id), inconsistent_numa_cnt); } + if (ptv->port_socket_id == SOCKET_ID_ANY) { + SCLogNotice( + "%s: unable to determine NIC's NUMA node, degraded performance can be expected", + dpdk_config->iface); + } } *data = (void *)ptv;