收到超过8000个rte_mbuff后,DPDK应用程序停顿

时间:2018-08-13 03:38:39

标签: dpdk

stackoverflow的Hello成员

我正在使用DPDK开发一个项目,但是遇到了一个愚蠢的问题,这对我来说并不明显。 我想找到解决当前问题的正确方法。

我正在远程和本地节点之间发送和接收4kb rte_mbuf, 单靠工作就可以了 但是,当我将实现与第三方库结合在一起时,DPDK在大约接收到8000个数据包后停止接收数据。

我调试了所有可能的程序,并感到惊讶。找不到错误,并且正确接收了8000以内的所有数据包。

我不知道找出这种情况的方法。但是我提到的情况可以复制。它总是在接收到大约8000个数据包时停止。 而且在dpdk(用户界面)中绝对没有发现错误。唯一的问题是rte_rx_queue在8000个数据包后停止返回数据包。

是否有一个很好的方法来确定此案的问题?

1 个答案:

答案 0 :(得分:1)

  

是否有一种很好的方法来识别此案的问题?

最好的方法是从统计数据开始。看看rte_eth_stats_get()

在DPDK应用停止后,我们需要检查计数器是否在增加。我敢打赌rx_nombuf counter仍在增加,这可能意味着您的内存池已用尽。

如果将mbuf传递给外部库,则必须确保从库返回后释放每个mbuf。