DPDK安装步骤-ubuntu-dpdk20.11
查看网卡是否支持多队列
cat /proc/interrupts | grep ${网卡名称}
安装依赖
sudo apt install build-essential -y
sudo apt install python3 -y
sudo apt install python3-pip -y
sudo pip3 install meson ninja
sudo apt install libnuma-dev -y
sudo apt install net-tools -y
配置巨页
2M巨页
修改内核参数
sudo vim /etc/default/grub
在GRUB_CMDLINE_LINUX参数后追加:
hugepages=1024
如果需要开启immon功能需要追加:
intel_iommu=on iommu=pt
1024表示有1024个巨页
重新生成引导配置
sudo grub-mkconfig -o /boot/grub/grub.cfg
重启并验证
sudo reboot
cat /proc/meminfo |grep -i HugePages
验证iommu是否成功:
dmesg | grep DMAR
1G巨页(2M与1G二选一)
修改内核参数
vim /etc/default/grub
在GRUB_CMDLINE_LINUX参数后追加:
default_hugepagesz=1G hugepagesz=1G hugepages=4
如果需要开启intel_iommu功能需要追加:
intel_iommu=on iommu=pt
1G表示1G巨页大小
4 表示有4个巨页
挂载巨页(1G巨页)
挂载
sudo mkdir /mnt/huge
sudo mount -t hugetlbfs pagesize=1GB /mnt/huge
配置启动自动挂载
sudo vim /etc/fstab
追加自动挂载:
nodev /mnt/huge hugetlbfs pagesize=1GB 0 0
重新生成引导配置
sudo grub-mkconfig -o /boot/grub/grub.cfg
重启并验证
reboot
cat /proc/meminfo |grep -i HugePages
验证iommu是否成功:
dmesg | grep DMAR
编译源代码
编译
在dpdk源码根目录执行:
meson -Dbuildtype=debug -Dexamples=ALL -Denable_kmods=true ${构建之后的目标文件夹}
安装
在构建之后的目标文件中:
sudo ninja install
sudo ldconfig
挂载kni驱动
insmod <build_dir>/kernel/linux/kni/rte_kni.ko carrier=on
挂载网卡驱动
vfio-pci
停止网卡
sudo ifconfig ${网卡名称} down
加载网卡
sudo modprobe vfio-pci enable_sriov=1
绑定网卡
sudo ./usertools/dpdk-devbind.py -b vfio-pci ${网卡编号}
网卡编号查看:
./usertools/dpdk-devbind.py --status
加载IGB-UIO驱动
下载安装包
git clone https://github.com/atsgen/dpdk-kmod.git
安装并加载
cd dpdk-kmod/scripts
sudo sh install.sh
sudo modprobe igb_uio
sudo modprobe uio
将指定的网卡挂载为igb_uio驱动
sudo ./usertools/dpdk-devbind.py -b igb_uio ${网卡编号}
网卡编号查看:
./usertools/dpdk-devbind.py --status
虚拟机注意
修改网卡
ethernet0.virtualDev = "vmxnet3"
ethernet0.wakeOnPcktRcv = "TRUE"