DPDK(Data Plane Development Kit)是数据平面开发工具包,由用于加速在各种CPU架构上运行的数据包处理的库组成。
在Linux上部署DPDK的方法请参考:
在Linux(CentOS)上部署DPDK------命令行方式
该章节的内容参照自官网的 DPDK build sample apps
当DPDK的target环境创建好后(例如 x86_64-native-linuxapp-gcc ), x86_64-native-linuxapp-gcc 目录中会包含编译应用程序的库和头文件。
在编译DPDK应用程序之前,首先需要指定两个环境变量:
在DPDK的 examples 路径下面有许多示例应用,这里以其中的 helloworld 为例进行编译:
DPDK的 examples 路径下面的应用均可以通过这种方式编译,也可以直接在 examples 路径下面运行 make ,将这些应用全都编译好。
在运行应用程序之前,需要确保:
DPDK应用程序与DPDK target环境的环境抽象层EAL(Environmental Abstraction Layer )库相关联,该库提供了一些通用于每个DPDK应用程序的选项。
EAL的详细配置请参照: DPDK EAL参数
可按照下列参数运行 /helloworld :
其中 -l 命令指定cpu cores list是EAL必须的配置;若没有指定 --socket-mem ,则默认会按照预留的hugepages size来分配。
请教DPDK 测试程序问题
Podfile指明xcodeproj
执行pod install命令,文件放Podfile所目录
编辑Podfile文件输入信息
platform :iOS, ‘70’\\所库支持IOS低版本
pod ‘AFNetworking’, ‘~> 20’\\版本号
注:些第三库需要指明:platform 支持IOS低版本,否则pod install报错,图,提示AFNetworking低支持IOS60OS X 108
引用文章: VFIO Introduction
DPDK(version 2002)函数rte_pci_map_device用来映射pci device resource到用户态:
这个函数执行前,DPDK已经通过扫描sys文件系统,获取了pci设备绑定的driver,当设备绑定到vfio-pci或者igb_uio的时候,会使用不同的方式映射设备。以下分别介绍:
当设备绑定到vfio-pci时,调用函数pci_vfio_map_resource
我们在此对函数pci_vfio_map_resource_primary的主要部分进行分析。
此函数的主要工作内容如下:
通过读取设备的PCI配置空间,读取的方法是通过上一步取得的设备句柄,获取msix的配置信息。并保存到vfio_res结构体中。
获取设备的BAR REGION(寄存器,中断等信息),并完成寄存器的mmap映射,让用户态程序能够直接访问PCI设备的寄存器。
这个函数首先设置中断,将第一个中断添加到系统的中断轮训链表去。
然后设置开启设备,并对设备复位。
英特尔在2010年启动了对DPDK技术的开源化进程。DPDK于当年9月通过FreeBSD开源许可协议正式发布源代码软件包,并于2014年4月在>
>
DPDK主要使用了UIO、HUGEPAGE和CPU Affinity机制三个技术点来提高高速网络数据的处理性能。
UIO是实现用户空间下驱动程序的支撑机制,DPDK使用UIO机制使网卡驱动程序(主要是intel自身的千兆igb与万兆ixgbe驱动程序)运行在用户态,并采用轮询和零拷贝方式从网卡收取报文,提高收发报文的性能。
HUGEPAGE的主要好处是通过利用大内存页提高内存的使用效率,DPDK在HUGEPAGE机制上构建内存管理系统,提高应用程序处理报文的性能。
CPU Affinity机制主要是让各个CPU各自干自己的事情,DPDK使用CPU Affinity机制将控制面线程以及各个数据面线程绑定到不同的CPU核,节省反复调度的性能消耗。其工作模式类似于一个CPU核绑定一个死循环线程,专心处理各自的业务。比如两个网卡eth0和eth1都收包,可以让cpu0专心处理eth0,cpu1专心处理eth1,没必要cpu0一下处理eth0,一下又处理eth1,这样就提高了多核CPU的使用效率。
所以,这样看来,DPDK并不高深,用到的东西也都是Linux本身提供的特性,还有额外的内存池、环形缓存等,虽然封装得很好,但都是比较常用经常接触的技术。
以上就是关于编译和运行DPDK示例程序全部的内容,包括:编译和运行DPDK示例程序、请教DPDK 测试程序问题、vfio-pci与igb_uio映射硬件资源到DPDK的流程分析等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)