[dpdk-dev] DPDK 20.08 meson build testpmd not detecting all NUMA nodes

Juraj Linkeš juraj.linkes at pantheon.tech
Fri Aug 28 13:11:36 CEST 2020



> -----Original Message-----
> From: Bruce Richardson <bruce.richardson at intel.com>
> Sent: Friday, August 28, 2020 12:30 PM
> To: Juraj Linkeš <juraj.linkes at pantheon.tech>
> Cc: dev at dpdk.org
> Subject: Re: [dpdk-dev] DPDK 20.08 meson build testpmd not detecting all
> NUMA nodes
> 
> On Fri, Aug 28, 2020 at 11:20:02AM +0100, Bruce Richardson wrote:
> > On Fri, Aug 28, 2020 at 09:26:12AM +0000, Juraj Linkeš wrote:
> > > Hello DPDK devs,
> > >
> > > I've meson built (using just meson build && ninja -C build) dpdk-20.08
> (downloaded from the site) on a Taishan arm server and dpdk-testpmd is
> incorrectly detecting NUMA nodes on the system:
> > > EAL: Detected 16 lcore(s)
> > > EAL: Detected 1 NUMA nodes
> > >
> > > lscpu report 4 NUMA nodes:
> > > NUMA node0 CPU(s):   0-15
> > > NUMA node1 CPU(s):   16-31
> > > NUMA node2 CPU(s):   32-47
> > > NUMA node3 CPU(s):   48-63
> > >
> > > When built with make T=arm64-armv8a-linuxapp-gcc testpmd is detecting
> NUMA nodes correctly:
> > > EAL: Detected 64 lcore(s)
> > > EAL: Detected 4 NUMA nodes
> > >
> > > Any idea what's the difference between the builds? I've looked at NUMA
> config options but those seem ok to me:
> > > grep NUMA arm64-armv8a-linuxapp-gcc/.config build/rte_build_config.h
> > > arm64-armv8a-linuxapp-gcc/.config:CONFIG_RTE_MAX_NUMA_NODES=8
> > > arm64-armv8a-linuxapp-gcc/.config:# a "type" is a combination of
> > > page size and NUMA node. total number of memseg
> > > arm64-armv8a-linuxapp-
> gcc/.config:CONFIG_RTE_EAL_NUMA_AWARE_HUGEPAGE
> > > S=y arm64-armv8a-linuxapp-
> gcc/.config:CONFIG_RTE_LIBRTE_VHOST_NUMA=y
> > > build/rte_build_config.h:#define RTE_EAL_NUMA_AWARE_HUGEPAGES 1
> > > build/rte_build_config.h:#define RTE_HAS_LIBNUMA 1
> > > build/rte_build_config.h:#define RTE_LIBRTE_VHOST_NUMA 1
> > > build/rte_build_config.h:#define RTE_MAX_NUMA_NODES 4
> > >
> > > Any pointers are welcome.
> > >
> > What is the max lcores value in your build config? Do you know what
> > settings are being chosen for your platform in config/arm/meson.build?
> >
> By way of follow-up, the reason to look at the cores is that the number of numa
> nodes is detected simply by iterating through all the cores discovered and finding
> out what NUMA node they are on. If only 16 cores are allowed, then only one
> NUMA node will be found because all cores discovered will report that as their
> NUMA location.
> 
> /Bruce

Thanks Bruce, RTE_MAX_LCORE is being set only to 16 (line 39 in config/arm/meson.build), so that's the cause. Why is this used in native builds? Shouldn't this be discovered?

I any case, setting it statically for implementer 0x41 seems wrong, as there's a big variety different processors under it: https://github.com/bp0/armids/blob/master/arm.ids

Juraj


More information about the dev mailing list