DPDK 24.03
一.编译运行
1.环境和依赖
1.1.安装系统Ubuntu24.04
1.2.配置ubuntu源
*镜像地址: 阿里云Ubuntu镜像:https://developer.aliyun.com/mirror/ubuntu
*修改文件 vim /etc/apt/sources.list
1.3.下载dpdk编译需要的依赖
- gcc 5.0+ (我用的4.8.5也没啥问题)
yum install gcc
- python 3.6+ (linux高版本默认已安装)
pat install python3
- ninja 通过pip下载 (root用户安装可能有警告,先看错误指南)
pip3 install meson ninja
- pyelftools 0.22+ 也通过pip下载
pip3 install pyelftools
- 安装numa
apt install libnuma-dev
- 安装pkg-config(运行测试程序时需要)
apt-get install pkg-config
2.编译
- 下载自己想要的版本 这里是22.07
wget https://fast.dpdk.org/rel/dpdk-22.07.tar.xz
- 解压
tar xf dpdk-22.07.tar.xz
cd dpdk-22.07
- 编译
meson setup build
cd build
ninja
meson install //或者 ninja install
ldconfig
3.绑定网卡igb_uio 驱动
3.1.下载/编译驱动(外部添加所以放在哪个目录都行)
git clone http://dpdk.org/git/dpdk-kmods
cd dpdk-kmods/linux/igb_uio
make
3.2.加载 igb_uio 驱动
cd dpdk-kmods/linux/igb_uio
modprobe uio
insmod igb_uio.ko intr_mode=legacy
注意: 加载驱动时要带着参数intr_mode=legacy
,如果不加参数,将会有问题!
3.3. 分配一些大页内存【这里是1G】:(不配置运行测试程序报错)
- 方式一:
echo 512 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
- 方式二:
cat /proc/meminfo |grep Hu
查看目前hugepage配置。我这里已经配置好了,显示HugePage有512个,如果没有配置好显示的是0个。
cat /proc/meminfo | grep HugePages
- 修改文件
sudo echo 10 > /proc/sys/vm/nr_hugepages
3.4.dpdk绑定网卡
进入dpdk-24.03/usertools/目录,执行脚本查看网卡绑定状态。确认网卡不是active状态。同时找到网卡的pci号。
./dpdk-devbind.py --status
绑定两个网卡【虚拟机最好有 多 个网卡,留一个连网用】:
ifconfig ens34 down //
先关闭网卡
ifconfig (ens35要关闭网卡名) down
dpdk-devbind.py -b igb_uio 0b:00.0
二.深入使用
三.安装时错误指南
3.1. pip3安装解决报错:WARNING: Running pip as the ‘root‘ user can result in broken permissions and conflicting
说明:
问题:root用户使用pip3安装时会警告,可能会导致权限损坏和冲突
解决方式:我们需要创造一个虚拟的环境区执行它
- 先安装 apt install python3.12-venv
- python3 -m venv tutorial-env //创建一个虚拟环境
- source tutorial-env/bin/activate //然后执行这行命令,然后就ok了