当DPDK库崩溃时,DPDK应用程序转储的核心始终指向下面的回溯。我有一个多核应用程序。
0 0x00007f22bf35a483 in epoll_wait () from /lib64/libc.so.6
1 0x00007f22bf903de4 in eal_intr_handle_interrupts (totalfds=<optimized out>, pfd=10) at /root/akshay/dpdk-stable-17.11.1/lib/librte_eal/linuxapp/eal/eal_interrupts.c:779
2 eal_intr_thread_main (arg=<optimized out>) at /root/akshay/dpdk-stable-17.11.1/lib/librte_eal/linuxapp/eal/eal_interrupts.c:863
3 0x00007f22bea2fdd5 in start_thread () from /lib64/libpthread.so.0
4 0x00007f22bf359ead in clone () from /lib64/libc.so.6
主要是当崩溃在任何PMD驱动程序代码内时发生的。当我使用GDB启动DPDK应用程序时,我可以看到正确的后退轨迹和崩溃点。在我的情况下是哪个
0 ixgbe_xmit_pkts (tx_queue=0x0, tx_pkts=0x7f17fc9dd398, nb_pkts=1) at /root/subh/dpdk-stable-17.11.1/drivers/net/ixgbe/ixgbe_rxtx.c:69
1 0x00007f1806e3d3be in rte_eth_tx_burst (port_id=0, queue_id=0, tx_pkts=0x7f17fc9dd398, nb_pkts=1) at /root/subh/dpdk-stable-17.11.1/x86_64-native-linuxapp-gcc/include/rte_ethdev.h:3173
2 0x00007f1806e3d415 in rte_eth_tx_buffer_flush (port_id=0, queue_id=0, buffer=0x7f17fc9dd380) at /root/subh/dpdk-stable-17.11.1/x86_64-native-linuxapp-gcc/include/rte_ethdev.h:3356
3 0x00007f1806e3e579 in rte_eth_tx_buffer (tx_pkt=0x7f1802c3eec0, buffer=0x7f17fc9dd380, queue_id=0, port_id=0) at /root/subh/dpdk-stable-17.11.1/x86_64-native-linuxapp-gcc/include/rte_ethdev.h:3406
如果DPDK库崩溃,我们如何确保正确的核心转储发生。
如果我们禁用EAL中断线程而不创建它,将会发生什么。我们甚至可以选择不创建安全中断处理线程。