ofed-dpdk部署

一、安装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*
1 个赞