udpdk安装配置流程

代码库地址

代码库地址:https://e.disc.cunok.cn:800/git/jie/udpdk

如果地址无法访问,可以修改一下.git/config,将e.disc.cunok.cn 改成p.disc.cunok.cn就可以了。

安装udpdk流程

代码库中已经有README描述安装流程。按照README进行,先编译依赖 dpdk和inih,然后编译udpdk,然后编译apps/dd/DirectDAQ测试程序。dpdk编译可能报错,需要按 dpdk_compilation.txt 修改。

详细流程:

安装前,先安装后续会用到的基础编译工具。

sudo apt update
sudo apt install git build-essential meson ninja-build pkg-config python3 libnuma-dev libssl-dev libelf-dev

首先,先将代码库克隆到本地。我们用 https://e.disc.cunok.cn:800/git/jie/udpdk 下面的dd_opt库为例:

git clone --branch dd_opt https://e.disc.cunok.cn:800/git/jie/udpdk.git

此时记录我们当前安装的地址,记录为UDPDK_ROOT

export UDPDK_ROOT= udpdk安装的地址

例如,我们假设安装的地址为 /home/uisrc/udpdk,则:

export UDPDK_ROOT=/home/uisrc/udpdk

然后跳转到udpdk目录下:

sudo -i
cd $UDPDK_ROOT

udpdk需要dpdk20.05以及任意版本inih。它们已作为子模块包含在该库中,拉取下来:

git submodule init
git submodule update

安装dpdk依赖

安装配置之前,先修改dpdk的编译配置,添加以下两行到deps/dpdk/mk/toolchain/gcc/rte.vars.mk文件的末尾:

HOST_WERROR_FLAGS := -w
WERROR_FLAGS := -w

接下来,确认CPU架构,执行:

uname -m

确认之后,我们需要配置dpdk的编译参数。假设CPU架构为x86_64,系统为Linux,用GCC,则执行:

export RTE_TARGET=x86_64-native-linuxapp-gcc
export RTE_SDK="$UDPDK_ROOT/deps/dpdk"

之后,进入./usertools目录,使用命令行安装工具,执行:

cd dpdk/usertools
./dpdk-setup.sh

进入命令行安装工具,里面有多种功能,如图:
alt text
我们在界面里面输入编号后即可选择功能。

我们选择首先进行编译,前面我们已经确认了CPU架构和系统类型,所以在step1里面选择符合我们环境的选项。按照前面假设的实例环境,我们执行:

[38] x86_64-native-linuxapp-gcc

如果此处编译失败,可能是前面修改的dpdk编译配置没有生效,或者是基础编译工具还没有安装。请根据报错信息进行排查。

接下来,配置大页内存。

[48] Setup hugepage mappings for non-NUMA systems

我们可以查看此时每个大页内存大小。
alt text
此时,我们可以看到每个大页内存大小为2MB。我们准备配置2G的大页内存,那么我们需要1024个2M大页内存,此时输入1024。具体输入值需要根据实际情况进行配置。

之后,进行VFIO驱动加载。

我们先进行:

modprobe vfio-pci
echo 1 > /sys/module/vfio/parameters/enable_unsafe_noiommu_mode

然后回到dpdk/usertools目录,选择step2,加载VFIO驱动。

[52] Bind Ethernet device to VFIO module

我们选择准备使用的网卡设备,选择后即可完成VFIO驱动加载。

alt text

我们可以根据Linux网口名判断对应PCI地址对应的网卡设备。图中0000:41:00.0和0000:41:00.1都是我们需要的网卡设备,所以我们分两次进行,分别输入两个PCI地址。

需要注意,如果网卡设备已经被其他驱动占用,则需要先卸载其他驱动。

安装inih依赖

接下来,安装inih依赖。我们进入inih目录,依次执行下面的命令:

cd inih
meson build
cd build
ninja

安装udpdk

最后,完成udpdk的安装。我们回到udpdk目录,依次执行下面的命令:

cd udpdk
make
make install

udpdk配置与使用

完成udpdk安装后,电脑已经完成了udpdk的配置。但是,每次上位机重启后,都需要重新配置udpdk,完成大页内存、VFIO驱动绑定的操作。以下是每次上位机重启后需要进行的内容。这部分见另一个文档《Ubuntu系统接收DDAQ PL数据操作文档》。

https://www.limfx.pro/ReadArticle/4426/ubuntu-xi-tong-jie-shou-ddaq-pl-shu-ju-cao-zuo-wen-dang

另外,上述文档里面,提供了相关例程的使用教程。


本文章使用limfx的vscode插件快速发布