环球网校是美国纳斯达克上市企业欢聚时代(NASDAQ:YY)旗下品牌 | 住房和城乡建设部 建筑人才培训合作单位
您现在的位置在: > 建筑考试 > 二级建造师 > 考试动态 >

中国电信DPDK技术白皮书v1.0基础——认识DPDK架构

2022-09-06 来源:网络 作者:佚名

前篇请参阅“DPDK技术原理与构架”,本篇为上篇。介绍基于DPDK进行应用开发和环境配置时,应用程序功耗的影响诱因以及相应的优化调整办法。这种诱因并非必定劣化功耗,或许因软件能力、OS版本、各类软硬环境参数配置等的差别形成较大波动,或则存在较大的不稳定性,相关的调优技巧还要用户结合自身的VNF应用布署在实践中不断加强。

#

更多关于DPDK技术内容请参考“《中国联通DPDK技术蓝皮书v1.0》”。

#

美国联通DPDK技术蓝皮书v1.0 #

DPDK基础—认识DPDK技术 #

DPDK构架高清版

#

DPDK编程手册(英文版) #

1、硬件结构的影响 #

DPDK具备广泛的平台适应性,可以运行在整个x86平台,从主流服务器平台(从高功耗或则高能效产品系列),到桌面或则嵌入式平台,也可以运行于基于Power或则其他构架的运算平台。图展示了一个通用双路服务器的内部构架,它包含了2个中央处理器,2个分离的显存控制单元来连结系统显存,芯片组会扩充出大量高速的PCIe2.0/3.0插口,适于连结外设,如或则网卡外设。

#

2、OS版本及其内核的影响

#

不同的LinuxOS发行版使用的Linux内核版本不一样,配置的LinuxOS服务也不一样。这种差距就会造成应用程序在网路信令处理能力上有所区别。 #

因为Linux内核还在不断变迁,Linux的发行版也人数诸多,本文未能提供最佳Linux内核版本和配置,而只好给出部份参考建议,如:关掉部份OS服务。在后续章节,我们选定了现在比较流行的Linux发行版进行了检测,并给出检测结果。从检测结果中显示,同样的软件配置环境下,不同的Linux发行版在大包的处理能力上存在差别。

#

2.1关掉OS部份服务 #

在10G端口上信令的线速抵达率为14.,倘若实现零丢包的线速处理,每位信令的平均处理速率应当大于1/14.=67us,DPDK应用的网卡收分包队列宽度缺省配置为128,网卡队列填富有的时间是128*67=。也就是说,DPDK的业务进程,倘若被操作系统中断超出,都会造成网卡收发报的队列被富有,未能接收新的信令,进而造成丢包。而操作系统的中断服务程序、后台服务程序、以及任务调度程序就会造成DPDK的应用程序被打断。

#

在NFV应用场景下,Host机器上和Guest机器上都运行着操作系统,由此带给了两级的操作任务调度。DPDK应用程序(NFV中的VNF)均运行在虚拟机上,操作系统带给的影响会格外显著。 #

为了实现DPDK应用程序的零丢包,还要对操作系统进行适当的配置,提高操作系统的对DPDK应用程序的干扰。操作系统配置的总体思路是: #

?将运行DPDK应用运行的处理器核进行隔离,降低干扰;?停用不须要的后台服务程序。将不须要的中断,转移到其它处理器核上处理;?对于不能转移的中断,提高中断的次数。

#

2.2、OS调整样例 #

下边以7为例,说明详细的调整方式。绝大部份的操作须要同时在Host操作系统和Guest操作系统同时应用。 #

1)对DPDK应用使用处理器核进行隔离更改Linux的OS的GRUB参数,设置=16-23,40-47 #

2)打开运行有DPDK进程的处理器核上的。可以提高内核的周期性时钟中断的次数。更改Linux的OS的GRUB参数,设置=16-23,40-47

#

3)关掉NMI监控功能,提高NMI中断对DPDK任务的干扰。更改Linux的OS的GRUB参数,设置=0 #

4)关掉功能更改Linux的OS的GRUB参数,设置=0 #

5)关掉处理器的P状态调整和功能。将处理器锁定在固定的速率运行,提高处理器在不同的P状态切换带给的处理带宽。更改Linux的OS的GRUB参数,设置=

#

6)关掉图形显示,提高GUI应用的干扰读取命令set-multi-user.)关掉操作系统的中断调度程序读取命令.)关掉操作系统的审计服务读取命令.)关掉蓝牙服务读取命令.)关掉KVM的显存页合并服务读取命令ksm.读取命令.)对于KVM虚拟的vCPU和地理CPU进行绑定使用QEMU获取vCPU对应的句柄号,使用命令进行绑定。

#

2.3、OVS功耗问题

#

OVS作为NFV的一个重要组成模块,会运行在绝大多数的服务器节点上,提供虚拟机和虚拟机之间,以及虚拟网路和地理网路间的互连结口,其功耗至关重要。OVS2.4开始即将支持DPDK加快,相比传统基于Linux内核的OVS版本,转发功耗增加了数倍,为VNF在通用x86服务器上布署提供了有力支持。 #

OVS缺省会为每一个NUMA节点争创一个pmd句柄,该pmd句柄以线程模式处理属于其NUMA节点上的所有DPDK插口。为了高功耗,须要借助上面提及的CPU亲和技术,把pmd句柄绑定在一个固定的CPUcore上处理。之外,为了提高扩充性,OVS2.4也支持网卡多队列以及多pmd句柄数,很多参数均可动态配置,但详细配置应按照详细需求来决定。 #

3、内存管理

#

如前所述分析程序因素,DPDK考虑了NUMA以及多显存通道的访问效率,会在系统运行前要求配置Linux的分析程序因素,初始化时申请其显存池,适于DPDK运行的主要显存资源。Linux大页模式运用了处理器核上的的TLB的表项,这可以提高显存地址转化的费用。 #

3.1显存多通道的使用

#

现代的显存控制器都支持显存多通道,例如Intel的E5-系列处理器,能支持4个通道,可以同时读和取数据。依赖于显存控制器及其配置,显存分布在某些通道上。每一个通道都有一个码率上限,假如所有的显存访问都只发生在第一个通道上,这将成为一个潜在的功耗难题。

#

然而,DPDK的库缺省是把所有的对象分配在不同的显存通道上,保证了在系统极端状况下还要大量显存访问时,尽或许地将显存访问任务均匀平滑。

#

3.2显存拷贝

#

这些libc的API都没有考虑功耗,所以,不要在高功耗数据平面上用libc提供的API,例如,()或()。其实DPDK也用了这些libc的API,但均也是在硬件配置方面适于便于程序移植和开发。

#

DPDK提供了一个优化版本的()API,它充分运用了Intel的SIMD指令集,也考虑了数据的对齐特征和cache操作友好性。

#

3.3显存分配

#

在这些状况下,应用程序使用libc提供的动态显存分配制度是必要的,如()函数,它是一种灵活的显存分配和释放模式。虽然,由于管理零星的堆显存代价高昂,使得这些显存分配器对于并行的恳求分配功耗不佳,因此不建议在数据平面处理上使用类似()的函数进行显存分配。

#

在有动态分配的需求下,建议使用DPDK提供的()API,该API可以在后台保证从本NUMA节点显存的里分配显存,并实现cacheline对齐以及无锁模式访问对象等功能。 #

3.4NUMA考虑

#

NUMA(Non)与SMP(Multi)是两种典型的处理器对显存的访问构架。随着处理器踏入多核时代,对于显存吞吐量和推迟功耗有了更高的要求,NUMA构架已广泛适于最新的高通处理器中,为每位处理器提供分离的显存和显存控制器,以防止SMP构架中多个处理器同时访问同一个储存器形成的功耗损失。

#

在双路服务器平台上,NUMA构架存在本地显存与远端显存的差距。本地和远端是个相对概念,是指显存相对于详细运行程序的处理器而言,如图所示。 #

在NUMA机制构架中,CPU进行显存访问时,本地显存的要比访问远端显存更快。由于访问远端显存时,还要跨越QPI总线,在应用硬件设计中应当尽量避开。在高速信令处理中,这个访问推迟会急剧减少系统功耗。尤其是传统嵌入式硬件向服务器平台迁移时,还要非常关注。

#

DPDK提供了一套在指定NUMA节点上争创、ring,以及的API,可以防止远端显存访问这类问题。在一个NUMA节点端,对于显存变量进行调用不会存在功耗问题,由于该变量会在CPUcache里。但对于跨NUMA构架的显存变量调用,会存在功耗问题,可以采取复制一份该变量的副本到本地节点(显存)的方式来增加功耗。

#

4、CPU核间无锁通讯

#

假如想推行一个基于消息传递的核间通讯模式,可以使用DPDKringAPI,它是一个无锁的ring实现。该ring模式支持批量和突发访问,但是同时加载几个对象,也只须要一个高昂的原子操作,批量访问可以极大地缓解功耗。

#

5、设置正确的目标CPU类别

#

DPDK支持CPU微构架级别的优化,可以通过更改DPDK配置文件中的参数来定义。优化的程度依据随编译器的能力而不同,一般建议选用最新的编译器进行编译。

#

假如编译器的版本不支持该款CPU的特征,例如IntelAVX指令,这么它在编译时只会采用自己支持的指令集,这或许造成编译后生成的DPDK应用的功耗升高。

#

责编:admin 返回顶部  打印

关于我们联系我们友情链接网站声明网站地图广告服务帮助中心