鲲鹏社区首页
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

运行DPDK

配置大页内存

使用大页可以提升DPDK转发性能。最大支持1G大页,但是4.14内核不支持1G大页,若需要使用1G大页则需要升级内核。

内核为4.14时默认支持2M和512M大页。本文以内核配置512M大页为例,2M大页的配置方法类似,本文不再赘述。

  1. 查看当前环境支持的NUMA Node个数,根据NUMA Node数为每个Node预留大页内存。
    1
    numactl -H
    

  2. 查看系统支持的大页类型。
    1
    ll /sys/kernel/mm/hugepages/
    

    若回显信息中显示有hugepages-524288kB字样则表示支持512M大页。

    若回显信息中显示有hugepages-1048576kB字样则表示支持1G大页。

    可以根据实际情况进行选择使用,默认优先选择最大的大页类型。

  3. 预留大页内存。
    • 配置512M大页。
      1. 配置大页个数。
        1
        2
        3
        4
        echo 50 > /sys/devices/system/node/node0/hugepages/hugepages-524288kB/nr_hugepages
        echo 50 > /sys/devices/system/node/node1/hugepages/hugepages-524288kB/nr_hugepages
        echo 50 > /sys/devices/system/node/node2/hugepages/hugepages-524288kB/nr_hugepages
        echo 50 > /sys/devices/system/node/node3/hugepages/hugepages-524288kB/nr_hugepages
        
      2. 挂载大页。
        1
        2
        mkdir -p /mnt/huge_512mb
        mount -t hugetlbfs none /mnt/huge_512mb -o pagesize=512MB
        
    • (可选,需系统支持)配置1G大页。
      1. 打开“/etc/default/grub”文件。
        1
        vi /etc/default/grub
        
      2. 修改系统启动项,预留大页 ,预留16个1G大页,总共16G。在GRUB_CMDLINE_LINUX行最后加上:
        default_hugepagesz=1G hugepagesz=1G hugepages=16
      3. 生成系统grub并重启系统使配置生效。
        1
        grub2-mkconfig -o /boot/efi/EFI/openeuler/grub.cfg
        
      4. 确认是否配置成功。
        1
        cat /proc/meminfo | grep -i huge
        

        若回显信息中显示已配置的大页数量为16,则预留大页配置成功。

      5. 挂载大页。
        1
        2
        mkdir -p /mnt/huge_1gb
        mount -t hugetlbfs none /mnt/huge_1gb -o pagesize=1GB
        

接管内核态网口

  1. 加载内核驱动模块(使用vfio需要BIOS开启SMMU)。
    1
    2
    modprobe vfio
    modprobe vfio-pci
    
  2. 绑定被测网口用户态,用于DPDK转发。首先获取网口PCI地址,可以使用DPDK源码“usertools/dpdk-devbind.py”脚本进行查看,以及进行接口绑定工作。
    1. 查看待绑定接口信息。
      1
      dpdk-devbind.py -s
      

    1. 查看端口状态,接管链路状态up的端口。
      1
      ethtool enp125s0f1
      

    2. 绑定用于DPDK转发的网口,此处以绑定0000:7d:00.1网口为例,使用时以查询到的待绑定的网口为准。
      1
      dpdk-devbind.py --bind=vfio-pci 0000:7d:00.1
      

      查看端口是否成功绑定:

      1
      dpdk-devbind.py -s
      

      端口处于up状态时进行绑定会报错,此时应执行ifconfig xxx down命令,再进行绑定。

运行DPDK

完成上述配置,即可开始运行DPDK相关测试程序。本文以编译DPDK生成的标准测试程序testpmd为例,根据环境实际信息运行以下命令。

1
testpmd -c 0xf -n 4 -w $PCI  -- --rxd=$depth --txd=$depth  --rxq=$qnum --txq=$qnum --nb-cores=$cores  -i

testpmd为DPDK 19.11版本中的测试命令,DPDK 21.11.5版本中testpmd命令为dpdk-testpmd

参数

说明

-c

指定参与转发的CPU核,后跟参加转发核的掩码。

-n

指定内存通道个数。

-w

指定参与转发的网口PCI,即安装DPDK 19.11章节中绑定的网口PCI地址。

--rxd/--txd

指定参与转发的网口队列深度。

--rxq/--txq

指定参与转发的网口队列个数。

--nb-cores

指定实际参与转发的CPU核数。

-i

以交互模式启动程序。