On Wed, 19 Mar 2025 17:50:46 +0000 "Lombardo, Ed" <ed.lomba...@netscout.com> wrote:
> Hi, > My goal is to test DPDK applications running on the same server as a primary > process and secondary process. > When I execute two dpdk-simple-mp processes, one as primary and other as > secondary, I see them both startup with no issues. > > # ./dpdk-simple_mp -c 0x2 -n 4 --legacy-mem --proc-type primary -- > # ./dpdk-simple_mp -c 0x8 -n 4 --legacy-mem --proc-type secondary -- > > > Now when I test our DPDK application (as primary) and same dpdk-simple-mp (as > secondary) I get error "EAL: Cannot initialize tailq: RTE_FIB). > EAL args: MyApp, -l 25,26,27,28 -n 4 -socket-mem=2048, --legacy-mem > -no-telemetry -proc_type=primary > > # ./dpdk-simple_mp -l 24 -n 4 --legacy-mem --proc-type secondary -- > > > When I use gdb I see that t->head is 0x0 in eal_common_tailqs.c Line 148. > (gdb) p *t > $40 = {head = 0x0, next = {tqe_next = 0x1c68c40 <rte_fib6_tailq>, tqe_prev = > 0x1c67108 <rte_swx_ctl_pipeline_tailq+8>}, > name = "RTE_FIB", '\000' <repeats 24 times>} > > I created 2 - 1G hugepages per CPU socket for each test case listed above. > > [root@localhost ~]# /opt/dpdk/dpdk-hugepages.py -s > Node Pages Size Total > 0 2 1Gb 2Gb > 1 2 1Gb 2Gb > > > The dpdk-simple_mp execution output is shown below: > [root@localhost ~]# ./dpdk-simple_mp -l 24 -n 4 --legacy-mem --huge-dir > /dev/mnt/huge --proc-type secondary -- > EAL: Detected CPU lcores: 128 > EAL: Detected NUMA nodes: 2 > EAL: Static memory layout is selected, amount of reserved memory can be > adjusted with -m or --socket-mem > EAL: Detected static linkage of DPDK > EAL: Multi-process socket /var/run/dpdk/rte/mp_socket_18349_8160ff395b1 > EAL: Selected IOVA mode 'PA' > EAL: WARNING: Address Space Layout Randomization (ASLR) is enabled in the > kernel. > EAL: This may cause issues with mapping memory into secondary processes > EAL: Cannot initialize tailq: RTE_FIB > Tailq 0: qname:<RTE_DIST_BURST>, tqh_first:(nil), tqh_last:0x100004490 > Tailq 1: qname:<RTE_DISTRIBUTOR>, tqh_first:(nil), tqh_last:0x1000044c0 > Tailq 2: qname:<RTE_REORDER>, tqh_first:(nil), tqh_last:0x1000044f0 > Tailq 3: qname:<RTE_IPSEC_SAD>, tqh_first:(nil), tqh_last:0x100004520 > Tailq 4: qname:<RTE_SWX_IPSEC>, tqh_first:(nil), tqh_last:0x100004550 > Tailq 5: qname:<RTE_SWX_PIPELINE>, tqh_first:(nil), tqh_last:0x100004580 > Tailq 6: qname:<RTE_SWX_CTL_PIPELINE>, tqh_first:(nil), tqh_last:0x1000045b0 > Tailq 7: qname:<RTE_HASH>, tqh_first:0x1bfd9f140, tqh_last:0x1bf6f4240 > Tailq 8: qname:<RTE_FBK_HASH>, tqh_first:(nil), tqh_last:0x100004610 > Tailq 9: qname:<RTE_THASH>, tqh_first:(nil), tqh_last:0x100004640 > Tailq 10: qname:<RTE_LPM>, tqh_first:(nil), tqh_last:0x100004670 > Tailq 11: qname:<RTE_LPM6>, tqh_first:(nil), tqh_last:0x1000046a0 > Tailq 12: qname:<RTE_ACL>, tqh_first:(nil), tqh_last:0x1000046d0 > Tailq 13: qname:<RTE_MEMPOOL>, tqh_first:0x1bf282000, tqh_last:0x1bf282000 > Tailq 14: qname:<RTE_RING>, tqh_first:0x1bfdc79c0, tqh_last:0x14f261ac0 > Tailq 15: qname:<RTE_MBUF_DYNFIELD>, tqh_first:0x14f871680, > tqh_last:0x14f870cc0 > Tailq 16: qname:<RTE_MBUF_DYNFLAG>, tqh_first:0x14f871080, > tqh_last:0x14f871080 > Tailq 17: qname:<UIO_RESOURCE_LIST>, tqh_first:0x1bfffce00, > tqh_last:0x1bf939e40 > Tailq 18: qname:<VFIO_RESOURCE_LIST>, tqh_first:(nil), tqh_last:0x1000047f0 > Tailq 19: qname:<>, tqh_first:(nil), tqh_last:(nil) > Tailq 20: qname:<>, tqh_first:(nil), tqh_last:(nil) > Tailq 21: qname:<>, tqh_first:(nil), tqh_last:(nil) > Tailq 22: qname:<>, tqh_first:(nil), tqh_last:(nil) > Tailq 23: qname:<>, tqh_first:(nil), tqh_last:(nil) > Tailq 24: qname:<>, tqh_first:(nil), tqh_last:(nil) > Tailq 25: qname:<>, tqh_first:(nil), tqh_last:(nil) > Tailq 26: qname:<>, tqh_first:(nil), tqh_last:(nil) > Tailq 27: qname:<>, tqh_first:(nil), tqh_last:(nil) > Tailq 28: qname:<>, tqh_first:(nil), tqh_last:(nil) > Tailq 29: qname:<>, tqh_first:(nil), tqh_last:(nil) > Tailq 30: qname:<>, tqh_first:(nil), tqh_last:(nil) > Tailq 31: qname:<>, tqh_first:(nil), tqh_last:(nil) > EAL: Cannot init tail queues for objects > EAL: Error - exiting with code: 1 > Cannot init EAL > > How do I resolve this issue? > > Thanks, > Ed The problem is that the primary process has not linked in the fib library. The primary process is the only one that can register tailq's at initialization.