编译和运行DPDK示例程序

编译和运行DPDK示例程序,第1张

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的流程分析等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9698008.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存