我有一些可以从DPDK分发器示例中修改的东西。
分发器(d)设置在内核上,并接收mbuf,这些mbuf通过带有功能的循环传递:
rte_distributor_process(d, mbufs, nb_rx);
rte_distributor_returned_pkts(d, mbufs, 4*BURST_SIZE);
工人们只是打电话给
num = rte_distributor_get_pkt(d, id, mbuf, mbuf, num);
在运行监视核心的情况下(来自示例),它表明,如果我将不同的ID传递给不同的核心,则只会给一个工作人员提供工作(即使该工作人员无法跟上)。如果我将它们的ID设置为全部相同(不安全,我知道),那么它们将像这样正确地分配给每个工人:
num = rte_distributor_get_pkt(d, 0, mbuf, mbuf, num);
基本上, rte_distributor_get_pkt 函数会在一个ID收到数据包后阻止所有其他ID。
设置中一定存在我未正确执行的操作。有什么想法吗?
我正在具有Amazon DPDK版本的AWS F1实例上运行此程序,它出现在v18.05的一个分支上。从diff看来,他们似乎只为FPGA添加了驱动程序。