从头开始在vmware虚拟机安装dpdk


1. 打开vmware,选择centos7.6镜像,开始安装操作系统

2. 安装完毕后,关机,点击“编辑虚拟机设置”按钮,点击“处理器”,在右侧勾选第三个“虚拟化IOMMU”。由于我的宿主机是win11,已经支持了Intel VT-x,所以第一个选项就不必勾选了,win7和win10可能需要勾选。

另外,我多添加了几个网络适配器,便于测试。

注意,如果勾选了第一个选项:

 启动虚拟机时报错:.

 则需要取消勾选第一个。

3. 编辑本虚拟机配置文件CentOS 7 64 位.vmx(使用记事本打开),(我新建的这个虚拟机配置文件所在目录是:D:\vmware_machine\machines\CentOS-dpdk)将网卡驱动由e1000改为e1000e,保存后启动虚拟机。

 4. 修改操作系统的/etc/default/grub

 在文件最后一行添加:

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

保存,执行

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

配置大页内存

 
cat  /etc/sysctl.conf

# For more information, see sysctl.conf(5) and sysctl.d(5).
vm.nr_hugepages=256

sysctl -p

重启操作系统:

reboot

重启后,检查配置是否生效:

运行以下命令检查 IOMMU 支持是否打开:

 dmesg | grep -e IOMMU

检查 GRUB 中的 IOMMU 相关配置是否生效:

cat /proc/cmdline

5. 启动后,通过ifconfig命令查看网卡名称,并且查看/etc/sysconfig/network-scripts/ifcfg-*相应网卡文件,确保文件名、文件内容中的网卡名称与ifconfig命令查看的网卡名称一致,不一致的话需要手动修改并重启网卡:

 6. 安装python3.9,具体安装方式不写了,可自行安装

 wget https://repo.huaweicloud.com/python/3.9.10/Python-3.9.10.tgz
 tar -zxf Python-3.9.10.tgz 
 cd Python-3.9.10
 ./configure --prefix=/usr/local/python3 --with-ssl
  make && make install
 ln -s /usr/local/python3/bin/python3 /usr/bin/
 ln -s /usr/local/python3/bin/pip3 /usr/bin/

7. python3.9安装完毕后,会有pip3命令,通过pip安装meson、ninja(dpdk20.11以后版本需通过meson+ninja 的编译方式进行编译安装

pip3 install meson

pip3 install ninja

ln -s /usr/local/python3/bin/meson /usr/bin/

ln -s /usr/local/python3/bin/ninja /usr/bin/

8. 安装dpdk,我下载的是20.11.4版本

cd /home/
wget https://fast.dpdk.org/rel/dpdk-20.11.4.tar.xz
xz -d dpdk-20.11.4.tar.xz
tar -xf dpdk-20.11.4.tar
cd dpdk-stable-20.11.4/
meson ../dpdk_build
cd ../dpdk_build/
meson configure -Dbuildtype=debug -Dexamples=l3fwd-graph
ninja
ninja install
ldconfig
echo "/usr/local/lib64/" >> /etc/ld.so.conf.d/dpdk.conf  # 将dpdk的lib库添加到系统路径
ldconfig
echo "export PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig" >>  /etc/profile   # 设置pkg-config路径
echo "modprobe vfio-pci" >>  /etc/profile                                   # 加载vfio-pci模块
echo "sysctl -w vm.nr_hugepages=256" >>  /etc/profile                       # 设置大页内存为256G
source /etc/profile

9. 验证安装是否成功,输出图片内容即为成功

    ldconfig -p|grep librte|wc -l

    ldconfig -p | grep librte_graph

     pkg-config --variable pc_path pkg-config

    pkg-config --modversion libdpdk

 10. 使用dpdk脚本查看网卡信息

 python3 /home/dpdk-stable-20.11.4/usertools/dpdk-devbind.py -s

输出以下内容,这是还未绑定网卡的状态,将每个网卡的bus信息记下来(每行0000开头的字符串):

 11. dpdk绑定网卡

    python3 /home/dpdk-stable-20.11.4/usertools/dpdk-devbind.py  -b vfio-pci 0b:00.0   #表示绑定ens192这块网卡

   注意,如果此时输出:

 则需要先将网卡ens192关闭:

 再次执行绑定脚本:

 没有任何输出,则为绑定成功。

12. 再次查看网卡绑定状态信息,可以看到已经绑定成功

 13. 运行dpdk示例程序,验证dpdk是否可用

cp -r /home/dpdk-stable-20.11.4/examples/helloworld/ /home/

 cd /home/helloworld/

make

 执行helloworl二进制文件,输出如下即为成功:

至此,dpdk安装完毕,可以使用了。