Anntec ZKUXFT XT2 FGPA卡DPDK使用方法

1.   建议环境 

   CPU Architecture 

   x86_64、aarch64    

   CPU MHz:             

   2000以上    

   Memory    

   每个node空闲内存超过2G    

   硬盘    

   剩余空间大于100M    

   OS    

   Ubuntu,centos,银河麒麟,UOS等Linux    

   Linux kernel version      

   3.10.0及其以上    

   Boot setting    

   isolcpus=1-8nohz_full=1-8rcu_nocbs=1-8      

   root权限    

   使用dpdk尽量使用root权限    

2.  预先安装依赖库

 centos系统预先安装依赖库,命令如下: 

yum install numactl-devel  
yum install libpcap-devel    

ubuntu系统预先安装依赖库,命令如下: 

apt-get install libnuma-dev 
apt-get install libpcap-dev 

3.   解压、编译安装包 

tar zxf  anntec--.tar.gz 
cd  anntec --< dpdkversion > 
make 
make install 

4. 设置 DPDK 运行环境 

4.1设置大页内存 

x86 
echo 4096 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages 
arm 
echo 20 > /sys/devices/system/node/node0/hugepages/hugepages-524288kB/nr_hugepages 

4.2导入igb_uio驱动 

modprobeuio 
insmod ./kmod/igb_uio.ko  

4.3绑定网卡

 Ethernet 类型卡,绑定方式如下: 

./usertools/dpdk-devbind.py --bind=igb_uio 
注:pci bus 可以通过命令:lspci -n|grep 1e92|awk '{print $1}'查看例如:./usertools/dpdk-devbind.py --bind=igb_uio  01:00.0 

查看是否绑定成功 

./usertools/dpdk-devbind.py -s

绑定成功会在DPDK-compatible driver下面看见相应的pci信息,如下图: Anntec ZKUXFT XT2 FGPA卡DPDK使用方法_第1张图片

 非Ethernet 类型卡,绑定方式如下:   

echo 1e92  >/sys/bus/pci/drivers/igb_uio/new_id 
注: devid    可以通过命令:lspci -n|grep 1e92|awk -F: '{print $4}'查看
例如:echo 1e92 0022 >/sys/bus/pci/drivers/igb_uio/new_id 

  查看是否绑定成功 :

ls -l /sys/bus/pci/drivers/igb_uio/ 

绑定成功会在/sys/bus/pci/drivers/igb_uio/目录下看见pci的链接信息,如下图:  

 解除绑定 

echo  > /sys/bus/pci/drivers/igb_uio/unbind 
例如:echo 0000:0c:00.0  > /sys/bus/pci/drivers/igb_uio/unbind 

5. 使用 TESTPMD 性能测试 

5.1设置共享库路径 

x86 
export LD_LIBRARY_PATH=/XXX/anntec--/build/x86_64/lib 
arm 
export LD_LIBRARY_PATH=/XXX/anntec--/build/aarch64/lib 
注:xxx表示存放anntec--的根路径 

 5.2使用testpmd x86 

x86
./build/x86_64/app/testpmd  -d  ./build/x86_64/lib/librte_pmd_xnic.so  -d  ./build/x86_64/lib/librte_pmd_xnic2.so  -d ./build/x86_64/lib/librte_mempool_ring.so -cff  -n4  -w  -w  ,desc_prefetch=1,cmpt_desc_len=16 -- -i --nb-cores=3 --rxq=1 --txq=1 -rxd=2048 --txd=2048 --burst=64 --mbuf-size=4224  --total-num-mbufs=262144 
arm 
./build/aarch64/app/testpmd  -d ./build/aarch64/lib/librte_pmd_xnic.so   -d ./build/aarch64/lib/librte_pmd_xnic2.so -d  ./build/aarch64/lib/librte_mempool_ring.so  -cff  -n4  w  -w  ,desc_prefetch=1,cmpt_desc_len=16 -- -i --nb-cores=3 --rxq=1 --txq=1 --rxd=2048 --txd=2048 --burst=64 --mbuf-size=4224  --total-num-mbufs=262144 
注:除了pci bus是需要根据实际环境变化的,其他参数尽量别修改 

5.2.1使用testpmd开始收发数据 

testpmd> start 

5.2.2使用testpmd查看收发数据状态 

testpmd> show port stats all 

Anntec ZKUXFT XT2 FGPA卡DPDK使用方法_第2张图片

 5.2.3使用testpmd结束收发数据 

testpmd>quit 

 5.2.4使用testpmd只发数据 

./build/x86_64/app/testpmd  -d  ./build/x86_64/lib/librte_pmd_xnic.so d  ./build/x86_64/lib/librte_pmd_xnic2.so  -d ./build/x86_64/lib/librte_mempool_ring.so -cff  -n4  -w  -w  ,desc_prefetch=1,cmpt_desc_len=16 -- -i --nb-cores=3 --rxq=1 --txq=1 -rxd=2048 --txd=2048 --burst=64 --mbuf-size=4224  --total-num-mbufs=262144 
testpmd> set fwd txonly 
testpmd> set txpkts 1024   /设置发包大小,默认64
testpmd> start 
testpmd> show port stats all  
testpmd> quit 

5.2.5使用testpmd只接收数据 

./build/x86_64/app/testpmd  -d  ./build/x86_64/lib/librte_pmd_xnic.so d  ./build/x86_64/lib/librte_pmd_xnic2.so  -d ./build/x86_64/lib/librte_mempool_ring.so -cff  -n4  -w  -w  ,desc_prefetch=1,cmpt_desc_len=16 -- -i --nb-cores=3 --rxq=1 --txq=1 -rxd=2048 --txd=2048 --burst=64 --mbuf-size=4224  --total-num-mbufs=262144 
testpmd> set fwd rxonly 
testpmd> start 
testpmd> show port stats all  
testpmd> quit 

5.2.6 批处理运行

nicarg=" "

nic_pci=`lspci -nn|grep -E '1e92|0022'|awk '{print $1}'`
for i in $nic_pci
do
	nicarg="$nicarg -w $i"
done

pwd=`pwd`
arch=`uname -m`
export LD_LIBRARY_PATH=$pwd/build/$arch/lib
echo $LD_LIBRARY_PATH

./build/$arch/app/testpmd -d ./build/$arch/lib/librte_pmd_xnic.so -d ./build/$arch/lib/librte_pmd_xnic2.so -d ./build/$arch/lib/librte_mempool_ring.so -c3 -n4 $nicarg -- -i --nb-cores=1 --rxq=1 --txq=1 --rxd=2048 --txd=2048 --burst=64 --mbuf-size=4224 --total-num-mbufs=262144

5.3 虚拟NET_TAP网卡使用

export LD_LIBRARY_PATH=/opt/anntec-1.2.1-dpdk19.11.3gcc4.8.5/build/x86_64/lib
网闸模式
./build/x86_64/app/testpmd -d./build/x86_64/lib/librte_pmd_anntec.so -d ./build/x86_64/lib/librte_mempool_ring.so -cf -n4 -w 04:00.1 -w 04:00.0,desc_prefetch=1,cmpt_desc_len=16 -- -i --nb-cores=3 --rxq=1 --txq=1 --rxd=2048 --txd=2048 --burst=64 --mbuf-size=4224 --total-num-mbufs=262144
虚拟网卡模式
./build/x86_64/app/testpmd -d ./build/x86_64/lib/librte_pmd_anntec.so -d ./build/x86_64/lib/librte_pmd_tap.so -d ./build/x86_64/lib/librte_mempool_ring.so -cf -n4 -w 01:00.0 --vdev=net_tap0,iface=enp1s0f0,mac='00:64:74:61:70:12'  -- -i --txq=1 --rxq=1 --txd=2048 --rxd=2048 --burst=64 --mbuf-size=4224 --total-num-mbufs=262144

你可能感兴趣的:(硬件相关,linux,centos,运维)