当前位置: 首页 > 工具软件 > Intel® DPDK > 使用案例 >

Intel DPDK配置

丌官积厚
2023-12-01

Intel DPDK官网:http://www.dpdk.org/

操作系统:Ubuntu14.04
DPDK版本:dpdk-2.2.0

  1. 准备
    1.1 查看网卡状态:
    ./tools/dpdk_nic_bind.py --status
    1.2 禁用网卡:
    ifconfig ethxxx down
    1.3 配置环境变量:
    export RTE_SDK=pwd
    export RTE_TARGET=x86_64-native-linuxapp-gcc
    1.4 查看大页内存状态:
    cat /proc/meminfo | grep Huge

  2. 通过setup.sh进行配置
    2.1 运行setup脚本:
    ./tools/setup.sh
    2.2 选择编译目标:
    x86_64-native-linuxapp-gcc(选[14])
    2.3 插入IGB UIO模块:
    Insert IGB UIO module(选[17])
    2.4 设置大页内存:
    Setup hugepage mappings for non-NUMA systems(选[20])
    2.5 绑定网卡:
    Bind Ethernet device to IGB UIO module(选[23])
    2.6 运行测试程序:
    Run testpmd application in interactive mode(选[27])

  3. 基于命令进行配置
    3.1 进入DPDK主目录输入:
    make install T=x86_64-native-linuxapp-gcc
    3.2 配置大内存页:
    echo 128 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
    mkdir /mnt/huge
    mount -t hugetlbfs nodev /mnt/huge
    3.3 安装igb_uio驱动:
    modprobe uio
    insmod x86_64-native-linuxapp-gcc/kmod/igb_uio.ko
    3.4 绑定网卡:
    ./tools/dpdk_nic_bind.py -b igb_uio xxxx:xx:xx.x
    3.5 运行testpmd测试程序:
    ./x86_64-native-linuxapp-gcc/app/testpmd -c 0x3 -n 2 -- -i

  4. 错误
    4.1 Cause: Creation of mbuf pool for socket 0 failed
    肯定是hugepage分配少了

    4.2 EAL: Error reading from file descriptor
    这个bug已经由dpdk的开发人员修复,patch内容如下:

diff --git a/lib/librte_eal/linuxapp/igb_uio/igb_uio.c b/lib/librte_eal/linuxapp/igb_uio/igb_uio.c
index d1ca26e..c46a00f 100644
--- a/lib/librte_eal/linuxapp/igb_uio/igb_uio.c
+++ b/lib/librte_eal/linuxapp/igb_uio/igb_uio.c
@@ -505,14 +505,11 @@ igbuio_pci_probe(struct pci_dev *dev, const struct pci_device_id *id)
         }
         /* fall back to INTX */
     case RTE_INTR_MODE_LEGACY:
-        if (pci_intx_mask_supported(dev)) {
-            dev_dbg(&dev->dev, "using INTX");
-            udev->info.irq_flags = IRQF_SHARED;
-            udev->info.irq = dev->irq;
-            udev->mode = RTE_INTR_MODE_LEGACY;
-            break;
-        }
-        dev_notice(&dev->dev, "PCI INTX mask not supported\n");
+        dev_dbg(&dev->dev, "using INTX");
+        udev->info.irq_flags = IRQF_SHARED;
+        udev->info.irq = dev->irq;
+        udev->mode = RTE_INTR_MODE_LEGACY;
+        break;
         /* fall back to no IRQ */
     case RTE_INTR_MODE_NONE:
         udev->mode = RTE_INTR_MODE_NONE;
 类似资料: