欢迎来到 DPDK交流社区 ,有什么问题可以尽管在这里提问,您将会收到社区其他成员的回答;也可以将您的总结写在这里,为社区其他成员提供帮助。 QQ交流2群:635461501

dpdk运行过程中突然出现丢包,必须重启机器才能规避

0 投票
while (nb_rx < nb_pkts) {
        rxdp = &rx_ring[rx_id];
        qword1 = rte_le_to_cpu_64(rxdp->wb.qword1.status_error_len);
        rx_status = (qword1 & I40E_RXD_QW1_STATUS_MASK)
                >> I40E_RXD_QW1_STATUS_SHIFT;

        /* Check the DD bit first */
        if (!(rx_status & (1 << I40E_RX_DESC_STATUS_DD_SHIFT)))   //有流量进来,但是网卡的DD
                                                                              //状态一直为0,导致无法收包,所有的数据包都被丢弃
            break;

        nmb = rte_mbuf_raw_alloc(rxq->mp);
        if (unlikely(!nmb)) {
            dev = I40E_VSI_TO_ETH_DEV(rxq->vsi);
            dev->data->rx_mbuf_alloc_failed++;
            break;
        }    

网卡为intel XL710
最新提问 7月 19, 2018 分类:DPDK初学入门 | 用户: copy (190 分)

2 个回答

0 投票

我在82599上也遇到了类似的问题,DD bit没有set回来导致tx buffer耗尽,在dpdk-users email list里面有个人在fm10k驱动里面也遇到了类似的问题,他声称他的问题是由于网卡温度过高(高于85摄氏度)引起的,他把风扇强制开最大,问题消失了。

我的环境没办法检测温度和强制开风扇,比较麻烦,发了邮件给dev@dpdk.org也没人理。如果有任何发现请麻烦更新一下。我有发现了也来更新。多谢!

最新回答 7月 31, 2018 用户: rayliu (220 分)
出现这种问题的话,试试把光模块和光纤拔下来(可以实际感受一下温度),然后再插回去看看能不能恢复收包。
机房在另一个城市。。。这个比较难操作。。。
实际上我觉得这个问题不太像是硬件温度的关系吧
收到了一个DPDK dev的人的回复:
For RX and TX, the DD bit is never set by software, only by hardware. When
writing a descriptor to memory for the NIC to read, the DD bit is cleared.
Software knows the NIC has finished with that descriptor by checking for
the DD bit being set by the NIC. If the DD bit is not being set, then the
problem is likely on the NIC side. [Potential software issues that could
cause this might be buffer e.g. overflows where we overwrite a DD bit set
by the NIC, or where we are polling an incorrect address, etc. etc.]

所以检查一下是否自己的app有越界访问导致DD bit被覆盖,如果没有的话就是intel的firmware的问题了。

请问楼主是否有什么更新呢?
感谢给出分析,我去做下检查,有新的进展,会分享给大家!
0 投票
请问有什么进展吗,我也遇到了同样的问题。
最新回答 1月 5 用户: jzhang (140 分)
...