DPDK环境搭建和测试

来源:互联网 发布:地籍数据标准 编辑:程序博客网 时间:2024/06/16 07:15

1安装环境建议版本

GNUmake

coreutils:cmp, sed, grep, arch

gcc:versions  >= 4.5.x

libcheaders (glibc-devel.i686 / libc6-dev-i386; glibc-devel.x86_64 for 64-bitcompilation)

Linuxkernel headers or sources required to build kernel modules. (kernel- devel.x86_64)

Additionalpackages required for 32-bit compilation on 64-bit systems are: glibc.i686,libgcc.i686, libstdc++.i686 and glibc-devel.i686

Python,version 2.6 or 2.7

2 setup.sh脚本介绍

    脚本在tools子目录中,用于自动化创建DPDK运行环境。

2.1脚本功能

脚本在tools子目录中,允许使用者完成以下任务:

1)构建Intel DPDK 库环境。

2)插入和移除Intel DPDK IGB_UIO、VFIO、KNI内核模块。

3)为NUMA和非NUMA体系结构创建和删除大叶表(HUGPAGE)。

4)查看网卡状态和为DPDK应用预定网卡。

5)为非root用户提供使用VFIO的权限。

6)运行test和testpmd程序。

7)查看大叶表的内存信息。

8)查看/mnt/huge叶表。

9)移除Intel DPDK的库环境。

补充说明:

    IGB_UIO:自英特尔®DPDK 1.7版本提供了VFIO支持,igb_uio模块的编译和使用已成为可选的平台,支持使用VFIO必须加载项,用如下命令进行加载:

sudo modprobe uio

sudo insmod kmod/igb_uio.ko

    UIO(Userspace I/O)是运行在用户空间的I/O技术。Linux系统中一般的驱动设备都是运行在内核空间,而在用户空间用应用程序调用即可,而UIO则是将驱动的很少 一部分运行在内核空间,而在用户空间实现驱动的绝大多数功能!使用UIO可以避免设备的驱动程序需要随着内核的更新而更新的问题

    VFIO:VFIO是一套用户态驱动框架,可用于编写高效用户态驱动。(详细请访问:

https://www.ibm.com/developerworks/community/blogs/5144904d-5d75-45ed-9d2b-cf1754ee936a/entry/vfio?lang=en

    KNI: (K NativeInterface) SUN在发布的KVM源代码中其实就已经提供KNI(K Native Interface)这套比较标准的API扩展辅助库

2.2脚本步骤

    总共分为5步,每一步操作提供一些选项供使用者去创建运行环境。分别简单介绍每一个步骤完成的任务。

1)建立DPDK库环境

首先,用户必须选择正确的对象目标和编译环境。并且,用户的安装环境必须有前面建议的安装环境。

2)安装环境

使用者配置linux 运行环境来使用dpdk应用程序。支持NUMP和非NUMP体系结构。属主环境中存在的大叶表都将被删除。这一步会加载相应的内核模块,并且会为DPDK应用绑定相应的网卡(PORT)。

3)运行应用程序

一旦以上步骤完成,使用者可以运行自带的测试程序(test)。TEST应用允许使用DPDK的一些相关函数。Testpmd支持发送和接收数据包。

4)检查系统环境

这一步提供一些工具查看hugepage信息。

5)系统环境清理

可以恢复系统到原来的状态。

3脚本安装示例

       如下列子是演示如何使用setup.sh脚本。应该source命令去运行脚本。

       用root用户运行脚本。

        

4测试程序

说明:测试程序运行过程是在虚拟机下完成。

4.1虚拟机的搭建

4.1.1创建虚拟机

       安装虚拟机和centos6.5。

4.1.2添加两张inetl 千兆网卡

       在安装目录F:\CentOS_VM\CentOS.vmx文件下添加:

ethernet1.virtualDev ="e1000" 

ethernet1.present = "TRUE"

ethernet2.virtualDev ="e1000" 

ethernet2.present = "TRUE"

并设置为host only。打开虚拟机查看是否添加成功,使用如下命令进行查询:lspci  | grep Ethernet  

4.2开始安装脚本

下载源码,从官网上下载,测试版本为dpdk-1.7.0。

4.2.1添加环境变量

       exportRTE_SDK=‘pwd‘

   #export RTE_TARGET=x86_64-default-linuxapp-gcc 

exportRTE_TARGET=i686-default-linuxapp-gcc 

由于我的是32虚拟机,所以我选择i686,将x86_64那行环境变量注释掉;

4.2.2运行setup.sh

./tools/setup.sh  

------------------------------------------------------------------------------

 RTE_SDKexported as /home/pym/dpdk-1.7.0

------------------------------------------------------------------------------

----------------------------------------------------------

 Step 1: Selectthe DPDK environment to build

----------------------------------------------------------

[1] i686-native-linuxapp-gcc

[2] i686-native-linuxapp-icc

[3] x86_64-ivshmem-linuxapp-gcc

[4] x86_64-ivshmem-linuxapp-icc

[5] x86_64-native-bsdapp-gcc

[6] x86_64-native-linuxapp-gcc

[7] x86_64-native-linuxapp-icc

 

----------------------------------------------------------

 Step 2: Setuplinuxapp environment

----------------------------------------------------------

[8] Insert IGB UIO module

[9] Insert VFIO module

[10] Insert KNI module

[11] Setup hugepage mappings for non-NUMA systems

[12] Setup hugepage mappings for NUMA systems

[13] Display current Ethernet device settings

[14] Bind Ethernet device to IGB UIO module

[15] Bind Ethernet device to VFIO module

[16] Setup VFIO permissions

 

----------------------------------------------------------

 Step 3: Runtest application for linuxapp environment

----------------------------------------------------------

[17] Run test application ($RTE_TARGET/app/test)

[18] Run testpmd application in interactive mode($RTE_TARGET/app/testpmd)

 

----------------------------------------------------------

 Step 4: Othertools

----------------------------------------------------------

[19] List hugepage info from /proc/meminfo

 

----------------------------------------------------------

 Step 5:Uninstall and system cleanup

----------------------------------------------------------

[20] Uninstall all targets

[21] Unbind NICs from IGB UIO driver

[22] Remove IGB UIO module

[23] Remove VFIO module

[24] Remove KNI module

[25] Remove hugepage mappings

 

[26] Exit Script

4.2.3根据系统类型选择

    测试环境选择1

4.2.4安装IGB_UIO

         选择8

进行igb_uio.ko驱动的安装,这个驱动在编译后是,在i686-default-linuxapp-gcc/kmod/ 目录中;其实在安装igb_uio.ko之前,脚本先安装了uio模块,uio是一种用户态驱动的实现机制,dpdk有些东西时基于uio实现的;有兴趣 的可以了解一下uio的驱动使用 http://blog.csdn.net/wenwuge_topsec/article/details/9628409

4.2.5设置hugepage

         选择11

有让你输入预留内存大小的 我输入的是 64  ,   64  乘以 2M  可以128M 做个简单的测试够了。

4.2.6进行网卡bind

         选择14

    让你输入pci的地址, 你只要将0000:02:06.0 中的,0000冒号后面的几位输入就行了, 如  02:06.0   记得标点也要输。

4.2.7选择对应的程序进行测试

       选择17

0 0
原创粉丝点击