虚拟机搭建 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;

2. DPDK Release 18.08 2.1. New Features Added support for Hyper-V netvsc PMD. The new netvsc poll mode driver provides native support for networking on Hyper-V. See the Netvsc poll mode driver NIC driver guide for more details on this new driver. Added Flow API support for CXGBE PMD. Flow API support has been added to CXGBE Poll Mode Driver to offload flows to Chelsio T5/T6 NICs. Support added for: Wildcard (LE-TCAM) and Exact (HASH) match filters. Match items: physical ingress port, IPv4, IPv6, TCP and UDP. Action items: queue, drop, count, and physical egress port redirect. Added ixgbe preferred Rx/Tx parameters. Rather than applications providing explicit Rx and Tx parameters such as queue and burst sizes, they can request that the EAL instead uses preferred values provided by the PMD, falling back to defaults within the EAL if the PMD does not provide any. The provision of such tuned values now includes the ixgbe PMD. Added descriptor status check support for fm10k. The rte_eth_rx_descriptor_status and rte_eth_tx_descriptor_status APIs are now supported by fm10K. Updated the enic driver. Add low cycle count Tx handler for no-offload Tx. Add low cycle count Rx handler for non-scattered Rx. Minor performance improvements to scattered Rx handler. Add handlers to add/delete VxLAN port number. Add devarg to specify ingress VLAN rewrite mode. Updated mlx5 driver. Updated the mlx5 driver including the following changes: Added port representors support. Added Flow API support for e-switch rules. Added support for ACTION_PORT_ID, ACTION_DROP, ACTION_OF_POP_VLAN, ACTION_OF_PUSH_VLAN, ACTION_OF_SET_VLAN_VID, ACTION_OF_SET_VLAN_PCP and ITEM_PORT_ID. Added support for 32-bit compilation. Added TSO support for the mlx4 driver. Added TSO support for the mlx4 drivers from MLNX_OFED_4.4 and above. SoftNIC PMD rework. The SoftNIC PMD infrastructure has been restructured to use the Packet Framework, which makes it more flexible, modular and easier to add new functionality in the future. Updated the AESNI MB PMD. The AESNI MB PMD has been updated with additional support for: 3DES for 8, 16 and 24 byte keys. Added a new compression PMD using Intel’s QuickAssist (QAT) device family. Added the new QAT compression driver, for compression and decompression operations in software. See the Intel(R) QuickAssist (QAT) Compression Poll Mode Driver compression driver guide for details on this new driver. Updated the ISA-L PMD. Added support for chained mbufs (input and output).
<think>好的,用户遇到了解压DPDK源码包后无法进入目录的问题,需要分析原因。首先,用户执行了两次`tar xf dpdk-22.11.4.tar.xz`,然后尝试进入`dpdk-22.11.4`目录但失败。接着用户使用`ls`列出文件,发现存在`dpdk-stable-22.11.4`目录,但没有`dpdk-22.11.4`。 首先,我需要确认解压后的目录名是否正确。用户下载的是`dpdk-22.11.4.tar.xz`,通常解压后目录名应与压缩包一致,即`dpdk-22.11.4`。但用户的`ls`结果显示的是`dpdk-stable-22.11.4`,这可能意味着压缩包内的目录名有变化。可能的原因是官方打包时命名不一致,或者用户下载的版本是稳定版,导致解压后的目录名包含`stable`字样。 接下来,检查用户的操作步骤是否正确。用户两次解压同一压缩包,第二次解压可能会覆盖或提示错误,但用户没有提到错误信息,所以可能解压成功但目录名不同。用户尝试进入的目录名与实际解压出的目录名不符,导致失败。 另外,用户的环境是否存在问题?比如权限不足,但解压过程没有报错,所以权限应该没问题。或者压缩包损坏?但用户能够解压两次,且生成目录,说明压缩包没问题。因此,主要原因应该是目录名不一致。 解决方法应该是让用户确认解压后的目录名,并进入正确的目录。用户应使用`ls`查看实际存在的目录名,然后`cd`进入。此外,建议用户检查下载的压缩包来源,确认命名规则,避免混淆。如果用户希望目录名保持一致,可以创建符号链接或重命名目录。 总结,用户的问题在于解压后的目录名与预期不符,导致无法进入。需要引导用户检查实际解压出的目录名,并调整命令中的目录名称。</think>### 问题分析及解决步骤 --- #### **现象定位** 执行 `tar xf dpdk-22.11.4.tar.xz` 解压后,尝试进入 `dpdk-22.11.4` 目录失败,但通过 `ls` 发现实际解压目录为 `dpdk-stable-22.11.4`,说明**压缩包内部目录名称与文件名不一致**。 --- #### **原因分析** 1. **官方打包命名差异** DPDK稳定版源码包通常包含 `stable` 标记,例如: ```bash dpdk-stable-22.11.4.tar.xz → 解压后目录为 dpdk-stable-22.11.4 ``` 而您下载的压缩包可能实际为 `dpdk-stable-22.11.4.tar.xz`,但文件名被重命名为 `dpdk-22.11.4.tar.xz`。 2. **验证压缩包内容** 可通过以下命令查看压缩包内实际目录名: ```bash tar tf dpdk-22.11.4.tar.xz | head -n 1 # 预期输出:dpdk-stable-22.11.4/ ``` --- #### **解决方案** ##### **步骤1:进入正确目录** ```bash cd dpdk-stable-22.11.4 # 根据实际解压目录名称操作 ``` ##### **步骤2:检查文件完整性(可选)** 若怀疑下载损坏,可通过校验SHA256验证: ```bash wget https://fast.dpdk.org/rel/dpdk-22.11.4.tar.xz.sha256sum sha256sum -c dpdk-22.11.4.tar.xz.sha256sum # 预期输出:dpdk-22.11.4.tar.xz: OK ``` ##### **步骤3:重命名目录(可选)** 若需保持目录名统一: ```bash mv dpdk-stable-22.11.4 dpdk-22.11.4 cd dpdk-22.11.4 ``` --- #### **附:操作流程图** ```mermaid graph LR A[下载压缩包] --> B{解压目录名是否匹配?} B ----> C[正常进入目录] B ----> D[检查实际解压目录名] D --> E[进入实际目录或重命名] ``` --- #### **后续操作建议** 1. **编译前配置** 确保安装必要依赖: ```bash sudo yum install meson ninja-build python3-pyelftools -y ``` 2. **编译验证** 执行标准编译流程: ```bash meson setup build ninja -C build ``` --- 若仍有问题,请提供 `tar tf dpdk-22.11.4.tar.xz | head -n 5` 的输出以进一步分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值