从头开始在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安装完毕,可以使用了。