夜雨聆风学习资料网

ARTICLE · 1148729

2026W41技术:dpdk的源码编译+部分example运行

2026W41技术:dpdk的源码编译+部分example运行

缘起

  • 之前我的ubuntu电脑借给另一个同事的,有天想用的时候,键盘有点卡卡的,因为给我后,我好久没打开过,我不确定谁导致的了,也就没管,今年呢,项目上一直是win程序,最近碎片化时间看dpdk嘛,想着run一下的,网上一搜(给的绝招就是,哪个键盘不灵,就多多的猛击几下),不得不说,网友是真有才,真的可以了,我现在就可以用起来了,
  • 环境搭建ok了,就花时间记录下吧,(时间忘记写了,大概是20261004写了下)
​

内容

2.1、大部分是参考ref1搭建的

  • 我的环境是ubuntu,也是intel的处理器,有vfio,dpdk的源码我本来就下载了一份,就本地整了,没git clone,
​

```shell

# 一、编译前准备

sudo apt-get install python3

sudo apt-get install python3-pip

sudo pip3 install meson

sudo pip3 install ninja

#安装了

sudo apt install python3-pyelftools

sudo apt-get install libnuma-dev

# 二、编译

sudo meson setup build   # setup后面还用-h看了下,以为要加啥参数

cd build

ninja

ninja install

ldconfig

# 三、设置大页内存

sudo vi /etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash hugepages=1024"

sudo grub-mkconfig -o /boot/grub/grub.cfg #重新生成grub.cfg

sudo update-grub  #更新grub配置

reboot

grep HugePages_Total /proc/meminfo

sudo mkdir -p /mnt/huge

sudo vi /etc/fstab

nodev /mnt/huge hugetlbfs pagesize=1G 0 0

mount | grep hugetlbfs

#四、vfio,看下bios是不是开了 direct io的

sudo vi /etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash hugepages=1024"  #不需要分号啥的,直接在后面加iommu=pt intel_iommu=on

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash hugepages=1024 iommu=pt intel_iommu=on"

sudo grub-mkconfig -o /boot/grub/grub.cfg

reboot

#4.2、加载kernel

sudo modprobe vfio #这个不确定要不要加,先放这吧,后面再试一下

sudo modprobe vfio-pci

sudo /usr/bin/chmod a+x /dev/vfio

sudo /usr/bin/chmod 0666 /dev/vfio/*

ifconfig ens33 down #ens33是自己的网卡,ifconfig就行,

sudo python3 {dpdk_path}/usertools/dpdk-devbind.py --bind=vfio-pci ens33

sudo python3 {dpdk_path}/usertools/dpdk-devbind.py --status //验证

#五、编译example(cmdline也是一样的)

cd dpdk/build

meson configure -Dexamples=helloworld

ninja

./examples/dpdk-helloworld -l 0-3 -n 4

```

2.2、中间遇到的错误

2.2.1、ERROR: Neither directory contains a build file meson.build

  • 编译时sudo meson setup build
    ,在错误的路径下执行了,应该是dpdk,我在spdk下执行的,

    2.2.2、vfio相关的,driver vfio pci is not loaded

  • 不知道是不是ref4的方式解决的
    ,【这部分的配置不太熟,跟卸载】,执行了一下这个modprobe vfio-pci,

    2.2.3、dpdk cmdline add y1 127.0.0.2 y2 127.0.0.3 bad arguments

  • 执行时,自己在example的提示下输入add y1 127.0.0.2 y2 127.0.0.3,提示的,后来搜了一下,这是rte_cmdline提示的,
​

2.3、用vscode打开代码,显示没网了,先卸载吧

  • 用命令ethtool和ifconfig找不到网卡了,于是就搜了一下怎么卸载,参考ref2,
​

```shell

sudo vi /etc/default/grub   #iommu=pt intel_iommu=on这部分去掉

sudo grub-mkconfig -o /boot/grub/grub.cfg

reboot

rmmod vfio-pci

./dpdk-devbind.py -s  #或者 

ethtool, ifconfig  #能看到网卡

```

最后

3.1、ref

  • ref1,DPDK环境搭建以及HelloWorld运行, https://zhuanlan.zhihu.com/p/711261549 ,
  • ref2,dpdk网卡绑定和解绑步骤, https://zhuanlan.zhihu.com/p/558439044 ,
  • ref3、官方文档, https://doc.dpdk.org/guides/linux_gsg/index.html ,
  • ref4, https://edc.intel.com/content/www/us/en/design/products/ethernet/config-guide-e810-dpdk/loading-the-vfio-pci-module/ ,

    3.2、其它

  • vmware 测试 dpdk https://juejin.cn/post/7302326457543245824 未看,
  • dpdk源码分析:交互式命令行的实现(一) 命令添加 https://juejin.cn/post/7118018490400768031 ,未看,
​

相关学习资料