虚拟机搭建 dpdk-stable-18.02.2 开发环境问题集

本文解决在运行testpmd时遇到的内存分配失败和持续的输入输出错误问题。通过调整内存设置和修改dpdk相关代码,成功解决了由虚拟机网卡不兼容dpdk引起的错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 运行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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值