Сбой библиотеки DPDK всегда указывает на один и тот же стек кода - eal_intr_handle_interrupts - PullRequest
0 голосов
/ 18 июня 2019

Когда происходит сбой библиотеки 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. Когда я запустил свое приложение DPDK с помощью GDB, я смог увидеть правильную обратную трассировку и точку сбоя. Который был ниже в моем случае

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 и не создадим его. У нас даже есть возможность не создавать поток обработки прерываний eal.

...