dpdk21.11 编译(meson+ninja)及VFIO模块的加载和运行

目录

前言

安装前的环境配置

编译流程

1. 设置环境变量(好像也不需要了)

2. 构建dpdk

3. 编译

执行测试

1. 绑定vfio-pci 模块

2. 挂载网卡

3. 设置大页

4. 启动测试程序-testpmd


前言

操作系统:ubuntu22.04.2 LTS

内核版本:5.19.0-42-generic

dpdk版本:dpdk-stable-21.11.4

安装前的环境配置

sudo apt install libnuma-dev
sudo apt install meson
sudo apt install ninja-build
pyelftools-0.28-py2.py3-none-any.whl    #(这个是从pypi网站下载的,通过 pip install 安装)

# ---- 如果是 ubuntu 20.04.2 ----
# 之前是通过Python-pip 安装
# 从 pypi 网站下载

meson-0.61.3-py3-none-any.whl 
ninja-1.10.2.3-py2.py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl

编译流程

由于dpdk19.11 版本以后取消了 dpdk_setup.sh 的脚本,所以编译命令需要手动执行

1. 设置环境变量(好像也不需要了)

export RTE_SDK=`pwd`
export RTE_TARGET=x86_64-native-linuxapp-gcc

2. 构建dpdk

meson -Dexamples=All build
meson configure -Dexamples=All build -Dprefix=`pwd`/x86_64-native-linuxapp-gcc

# -Dexamples=All 标识编译所有的 examples 目录下的示例,也可以单独的写一个或多个(l2fwd)
# -Dprefix=`pwd`/x86_64-native-linuxapp-gcc 目标目录,注意修改 `pwd` 为当前dpdk所在目录
# -Ddisable_drivers='common/cnxk'  编译时禁用cnxk模块

3. 编译

ninja install -C build

执行测试

1. 绑定vfio-pci 模块

sudo modprobe vfio-pci

2. 挂载网卡

dpdk-devbind.py -s

dpdk21.11 编译(meson+ninja)及VFIO模块的加载和运行_第1张图片

# 以ens38 0000:02:06.0 为例

sudo ifconfig ens38 down
sudo dpdk-devbind.py -b vfio-pci 0000:02:06.0

# 因为ens38网卡为激活状态,当前挂载在内核驱动上,需要先down掉,然后才能绑定dpdk驱动

dpdk21.11 编译(meson+ninja)及VFIO模块的加载和运行_第2张图片

 

3. 设置大页

大页可以直接通过修改 grub进行预设,也可以后期直接设置

grub预设的好处是 在系统启动时就直接分配了对应的大页空间,减少系统资源的浪费

大页设置可以通过 dpdk-hugepage.py 脚本进行设置

官网 dpdk-Hugepages 的使用icon-default.png?t=N4P3https://doc.dpdk.org/guides-21.11/tools/hugepages.html?highlight=huge

也可以通过 命令行直接写入数据设置

echo 256 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages

# 其中 256 为大页个数                        

# 如果当前操作系统有多个node,需要每个都设置上(网卡所在node以及要使用的node)

# 大页分为 2048K(2M) 和 1048576kB(1G),当前使用 2M 大页

4. 启动测试程序-testpmd

testpmd 为例 

命令:sudo ./x86_64-native-linuxapp-gcc/bin/dpdk-testpmd -l 1-2 -- -idpdk21.11 编译(meson+ninja)及VFIO模块的加载和运行_第3张图片

你可能感兴趣的:(DPDK,linux,ubuntu,dpdk)