- 运行testpmd时无法分配内存:
EAL: Error - exiting with code: 1
Cause: Creation of mbuf pool for socket 0 failed: Cannot allocate memory
内存设置小了,将内存设置大一些(例如从64改成512),问题解决。
- 运行testpmd,持续输出输入输出的报错信息:
EAL: Error reading from file descriptor 20: Input/output error
EAL: Error reading from file descriptor 18: Input/output error
EAL: Error reading from file descriptor 20: Input/output error
EAL: Error reading from file descriptor 18: Input/output error
EAL: Error reading from file descriptor 20: Input/output error
EAL: Error reading from file descriptor 18: Input/output error
原因:在虚拟机添加的网卡,dpdk不支持导致的。需要修改一行代码,跳过dpdk pci 检查
在 lib/librte_eal/linuxapp/igb_uio/igb_uio.c
文件中找到
if (pci_intx_mask_supported(udev->pdev)) {
dev_dbg(&udev->pdev->dev, "using INTX");
udev->info.irq_flags = IRQF_SHARED | IRQF_NO_THREAD;
udev->info.irq = udev->pdev->irq;
udev->mode = RTE_INTR_MODE_LEGACY;
break;
}
dev_notice(&udev->pdev->dev, "PCI INTX mask not supported\n");
修改为:
dev_dbg(&udev->pdev->dev, "using INTX");
udev->info.irq_flags = IRQF_SHARED | IRQF_NO_THREAD;
udev->info.irq = udev->pdev->irq;
udev->mode = RTE_INTR_MODE_LEGACY;
break;