一、安装ofed的驱动依赖
yum install python3-devel createrepo
二、安装ofed的驱动
./mlnxofedinstall --dpdk --add-kernel-support
dracut -f
/etc/init.d/openibd restart;
/etc/init.d/opensmd restart
reboot
三、安装dpdk的依赖
yum install numactl
yum install numactl-devel
yum install libpcap-devel
四、编译安装dpdk
tar xf dpdk-20.11.2.tar.xz
cd dpdk-stable-20.11.2
pip3 install meson ninja
echo '/usr/local/lib64' > /etc/ld.so.conf.d/dpdk.conf
echo '/usr/local/lib' >> /etc/ld.so.conf.d/dpdk.conf
meson -Denable_kmods=true build
ninja -C build
ninja -C build install
ldconfig
export PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig
五、配置和挂载大页内存
大页内存,需要:libhugetlbfs库的支持,如果设置2MB的据说不需要,我还是安装真实环境来操作:
yum install libhugetlbfs
5.1临时配置大页内存:
cat /proc/meminfo | grep Huge # 查看大页内存
echo 1024 > /sys/kernel/mm/hugepages/hugepages-524288kB/nr_hugepages
echo 1024 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages
echo 1024 > /sys/devices/system/node/node1/hugepages/hugepages-2048kB/nr_hugepages
echo 1024 > /sys/devices/system/node/node2/hugepages/hugepages-2048kB/nr_hugepages
echo 1024 > /sys/devices/system/node/node3/hugepages/hugepages-2048kB/nr_hugepages
5.2 使用命令设置大页内存
cd /root/dpdk-stable-20.11.2/usertools
./dpdk-hugepages.py --setup 2G
5.3修改内核参数配置大页内存
vim /etc/default/grub
GRUB_CMDLINE_LINUX="crashkernel=auto resume=/dev/mapper/cl-swap rd.lvm.lv=cl/root rd.lvm.lv=cl/swap rhgb quiet transparent_hugepage=never default_hugepagesz=2M hugepagesz=2M hugepages=1024 "
添加的内容:
transparent_hugepage=never default_hugepagesz=2M hugepagesz=2M hugepages=1024
大页内存每页大小为2M,一共设置1024页面,即2GB,根据自己主机内存情况进行设置,如果内存多的,CPU又支持1GB的大页内存,可以每页设置1GB的大页内存.
// 重新生成 grub.cfg
grub2-mkconfig -o /boot/grub2/grub.cfg
reboot
5.3 验证大页内存
重启后通过如下命令查看是否分配成功:
[root@localhost ~]# cat /proc/meminfo |grep -i HugePages
AnonHugePages: 0 kB
ShmemHugePages: 0 kB
HugePages_Total: 1024
HugePages_Free: 1024
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
配置了1024个大页内存页面,每个大小为2048KB即2MB,一共大页内存大小为2GB.
5.4 大页内存挂载
大页内存除了指定动态库,一般要挂载到特定目录使用,命令如下:
[root@localhost ~]# mkdir -p /mnt/huge
[root@localhost ~]# mount -t hugetlbfs nodev /mnt/huge
设置系统启动后自动挂载:
vim /etc/fstab
添加以下内容,如果是1GB 则
nodev /mnt/huge hugetlbfs pagesize=1GB 0 0
nodev /mnt/huge hugetlbfs defaults 0 0
重启系统
六、插入uio和uio_pci_generic模块并绑卡
注意:mellonox网卡不用绑定uio驱动
这是DPDK支持的另一种驱动模式:
modprobe uio
modprobe uio_pci_generic
[root@localhost usertools]# ./dpdk-devbind.py --bind=uio_pci_generic 0000:02:05.0
[root@localhost usertools]# ./dpdk-devbind.py --status
Network devices using DPDK-compatible driver
============================================
0000:02:05.0 '82545EM Gigabit Ethernet Controller (Copper) 100f' drv=igb_uio unused=e1000
Network devices using kernel driver
===================================
0000:02:01.0 '82545EM Gigabit Ethernet Controller (Copper) 100f' if=ens33 drv=e1000 unused=igb_uio *Active*