tailqs issue
Stephen Hemminger
stephen at networkplumber.org
Wed Mar 19 21:23:49 CET 2025
On Wed, 19 Mar 2025 17:50:46 +0000
"Lombardo, Ed" <Ed.Lombardo at 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 at 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 at 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.
More information about the users
mailing list