dpdk环境搭建及测试

 

系统:虚拟机Ubuntu 18.04 

网卡:Intel Corporation 82545EM Gigabit

安装步骤:

1.查看设备网卡,与dpdk官网上的硬件支持做对比,看自己的硬件是否支持dpdk

lspci |grep -i Eth

2.下载dpdk安装包,并解压,在此我用18.02版本。

tar -xvf dpdk-18.02.2.tar.xz

3.进入安装包目录。

cd dpdk-stable-18.02.2/

4.进入usertools文件夹,运行dpdk-setup.sh脚本。

cd usertools/
./dpdk-setup.sh

5.显示如下

------------------------------------------------------------------------------
 RTE_SDK exported as /home/zfy/桌面/dpdk-stable-18.02.2
------------------------------------------------------------------------------
----------------------------------------------------------
 Step 1: Select the DPDK environment to build
----------------------------------------------------------
[1] arm64-armv8a-linuxapp-clang
[2] arm64-armv8a-linuxapp-gcc
[3] arm64-dpaa2-linuxapp-gcc
[4] arm64-dpaa-linuxapp-gcc
[5] arm64-thunderx-linuxapp-gcc
[6] arm64-xgene1-linuxapp-gcc
[7] arm-armv7a-linuxapp-gcc
[8] i686-native-linuxapp-gcc
[9] i686-native-linuxapp-icc
[10] ppc_64-power8-linuxapp-gcc
[11] x86_64-native-bsdapp-clang
[12] x86_64-native-bsdapp-gcc
[13] x86_64-native-linuxapp-clang
[14] x86_64-native-linuxapp-gcc
[15] x86_64-native-linuxapp-icc
[16] x86_x32-native-linuxapp-gcc

----------------------------------------------------------
Step 2: Setup linuxapp environment
----------------------------------------------------------
[17] Insert IGB UIO module
[18] Insert VFIO module
[19] Insert KNI module
[20] Setup hugepage mappings for non-NUMA systems
[21] Setup hugepage mappings for NUMA systems
[22] Display current Ethernet/Crypto device settings
[23] Bind Ethernet/Crypto device to IGB UIO module
[24] Bind Ethernet/Crypto device to VFIO module
[25] Setup VFIO permissions

----------------------------------------------------------
 Step 3: Run test application for linuxapp environment
----------------------------------------------------------
[26] Run test application ($RTE_TARGET/app/test)
[27] Run testpmd application in interactive mode ($RTE_TARGET/app/testpmd)

----------------------------------------------------------
 Step 4: Other tools
----------------------------------------------------------
[28] List hugepage info from /proc/meminfo

----------------------------------------------------------
 Step 5: Uninstall and system cleanup
----------------------------------------------------------
[29] Unbind devices from IGB UIO or VFIO driver
[30] Remove IGB UIO module
[31] Remove VFIO module
[32] Remove KNI module
[33] Remove hugepage mappings

[34] Exit Script

选择14,提示fatal error

fatal error: numa.h: 没有那个文件或目录 #include 

另打开一个窗口,执行下面命令

apt-get install libnuma-dev

执行完上面命令,即安装了numa.h,再次选择14运行。

接着选择17运行

接着选择20,设置hugepage,此处我设置64

继续选择22,查看当前设备,几下if=xxxx这个

dpdk环境搭建及测试_第1张图片

从上图可以看到,网卡的状态是active的,打开另外一个窗口,运行以下命令,down了网卡

ifconfig enss22(你的网卡名) down

选择23,进行网卡绑定。

6.测试dpdk。进入目录dpdk-stable-18.02.2/examples/helloworld

首先设置环境变量RTE_SDK和设置目标值RTE_TARGET

export RTE_SDK=/home/zfy/桌面/dpdk-stable-18.02.2
export RTE_TARGET=x86_64-native-linuxapp-gcc

7. make clean &  make

make clean &  make

8. ./build/helloworld

./build/helloworld

9.为了不必要每次都进行环境变量的设置,可以一次性设定。执行以下命令

vim /etc/profile

在文件末尾增加下面两行内容

export RTE_SDK=/dpdk

export RTE_TARGET=x86_64-native-linuxapp-gcc

注意:RTE_SDK=后面跟你自己的dpdk安装目录。

然后执行下面的命令进行设置

source /etc/profile

10.设置大内存页,设置以后就可以不必每次运行程序的时候都执行setup.sh进行hugepage设置了。

查看cpu是否支持1G大内存页:

cat /proc/cpuinfo | grep pdpe1gb

如果有显示,则支持1G大内存页。

默认支持2M内存页,执行下面命令

cat /proc/cpuinfo |grep pse

如果有显示,则支持2M内存页

执行下面命令,进行hugepage设置

vim /etc/default/grub

找到GRUB_CMDLINE_LINUX=””,在双引号中添加以下内容

default_hugepagesz=1G hugepagesz=1G hugepages=16

再执行

update-grub
vim ~/.bashrc

在打开的文件中添加以下两条命令

mkdir –p /mnt/huge

mount –t hugetlbfs nodev /mnt/huge

重启系统

reboot

11.测试l2fwd

进入/root/dpdk/example/l2fwd下,执行make命令编译l2fwd。 l2fwd命令执行的格式如下:

./build/l2fwd [EAL options] -- -p PORTMASK [-q NQ] -T PERIOD

EAL options:

-c COREMASK: A hexadecimal bitmask of cores to run on

-n NUM : Number of memory channels

-p PORTMASK : A hexadecimal bitmask of the ports to configure

-q NQ: A number of queues (=ports) per lcore (default is 1)

-T PERIOD: statistics will be refreshed each PERIOD seconds (0 to disable, 10 default, 86400 maximum)

本次测试2个万兆口,命令如下:

./build/l2fwd –c 0x0F –n 2 -- -p 0x03 -T 1

参数讲解:

-c 0x0F 指分配4个core给dpdk程序,这个参数是主参数,必须设定; -n 2 指内存通道数

-- 由于程序有主次参数之分,主参数是在指所有实例程序都可以用的参数;次参数,是指每个实例程序自身拥有的参数, -- 之后的为次参数;

-p 0x3 设置dpdk起点的端口数,也是以16进制的源码作为标志位, 0x3是指后两位为1,也就是起点两个端口,0和1为一对;

-T 1 在执行程序的时候,会有一些统计数据打印到屏幕上,这个的 参数是设定多长时间统计一次,显示到屏幕,1秒钟一次;

 

 

你可能感兴趣的:(dpdk环境搭建及测试)