基于DPDK的环形队列参数配置方法、装置、电子设备及介质与流程

未命名 07-14 阅读:118 评论:0

基于dpdk的环形队列参数配置方法、装置、电子设备及介质
技术领域
1.本发明实施例涉及数据处理技术领域,尤其涉及一种基于dpdk的环形队列参数配置方法、装置、电子设备及介质。


背景技术:

2.越来越多的网络芯片厂商,开始适配网卡支持数据平面开发套件dpdk。由于intel网卡芯片最开始基于x86架构已经比较成熟,各种网卡收发包ring参数、收发包故障排除已经比较完备,对于基于x86架构的intel网卡芯片,开发和设备都比较容易。但是,对于一些其他厂商新适配支持dpdk的非intel网卡芯片开发产品适配收发包却遇到各种各样的故障,比如收发包丢包率高,影响产品开发周期和成本,给越来越多的开发者带来了困难。


技术实现要素:

3.本发明实施例中提供了一种基于dpdk的环形队列参数配置方法、装置、电子设备及存储介质,以实现快速适配调整网卡的收发包环形队列参数和/或中央处理器cpu处理核间的收发包环形队列参数,保证底层收发包稳定。
4.第一方面,本发明实施例中提供了一种基于dpdk的环形队列参数配置方法,应用于采用数据平面开发套件dpdk配置的中央处理器cpu和/或采用数据平面开发套件dpdk配置的网卡,所述方法包括:
5.启动进入收发统计模式,向收包环形队列写入数据包用于取出进行业务处理以及向发包环形队列写入取出的数据包用于转发数据包;所述收包环形队列与所述发包环形队列配置于网卡和/或中央处理器cpu处理核间;
6.确定数据包的收发统计结果,并依据收发统计结果对收包环形队列与发包环形队列的队列参数进行调整更新,直至满足预设收发包条件;
7.确定调整更新停止时收包环形队列与发包环形队列的队列数,用以对网卡的收发包环形队列参数和/或cpu处理核间的环形队列参数进行配置。
8.第二方面,本发明实施例中还提供了一种基于dpdk的环形队列参数配置装置,配置于采用数据平面开发套件dpdk配置的中央处理器cpu和/或采用数据平面开发套件dpdk配置的网卡,所述装置包括:
9.数据包控制模块,用于启动进入收发统计模式,向收包环形队列写入数据包用于取出进行业务处理以及向发包环形队列写入取出的数据包用于转发数据包;所述收包环形队列与所述发包环形队列配置于网卡和/或中央处理器cpu处理核间;
10.队列调整模块,用于确定数据包的收发统计结果,并依据收发统计结果对收包环形队列与发包环形队列的队列参数进行调整更新,直至满足预设收发包条件;
11.队列参数配置模块,用于确定调整更新停止时收包环形队列与发包环形队列的队列数,用以对网卡的收发包环形队列参数和/或cpu处理核间的环形队列参数进行配置。
12.第三方面,本发明实施例中还提供了一种电子设备,包括:
13.一个或多个处理器;
14.存储装置,用于存储一个或多个程序;
15.所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本发明任意实施例中所提供的基于dpdk的环形队列参数配置方法。
16.第四方面,本发明实施例中还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明任意实施例中所提供的基于dpdk的环形队列参数配置方法。
17.本发明实施例中提供了一种基于dpdk的环形队列参数配置方法,在启动进入收发统计模式后,向网卡和/或cpu处理核间的收包环形队列写入数据包用于取出进行业务处理以及向网卡和/或cpu处理核间的发包环形队列写入取出的数据包用于转发数据包;确定数据包的收发统计结果,并依据收发统计结果对收包环形队列与发包环形队列的队列参数进行调整更新,直至满足预设收发包条件;确定调整更新停止时收包环形队列与发包环形队列的队列数。采用本技术方案,基于dpdk提供的接口与底层网卡统计,根据报文收发情况通过不断尝试快速适配调整网卡的收发包环形队列参数和/或cpu处理核间的收发包环形队列参数,实现非intel网卡收包和发包最优环形队列参数设置,保证底层收发包处理稳定。
18.上述发明内容仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
19.通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
20.图1是本发明实施例中提供的一种基于dpdk的环形队列参数配置方法的流程图;
21.图2是本发明实施例中提供的一种网卡收包示意图;
22.图3是本发明实施例中提供的一种网卡发包示意图;
23.图4是本发明实施例中提供的一种网卡环形队列参数处理流程;
24.图5是本发明实施例中提供的一种cpu的核间环形队列参数处理流程;
25.图6是本发明实施例中提供的另一种基于dpdk的环形队列参数配置方法的流程图;
26.图7是本发明实施例中提供的一种基于dpdk的环形队列参数配置装置的结构框图;
27.图8是本发明实施例中提供的一种电子设备的结构示意图。
具体实施方式
28.下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
29.在更加详细地讨论示例性实施例之前,应当提到的是,一些示例性实施例被描述
成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作(或步骤)可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
30.数据平面开发套件(dpdk,data plane development kit)主要基于linux系统进行运行,是在数据平面应用中为快速的数据包处理提供一个简单而完善的架构,用于快速数据包处理的函数库与驱动集合,可以极大的提高数据处理性能和吞吐量,提高数据平面应用程序的工作效率。dpdk架构通过eal(环境抽象层)来为不同的工作环境创建函数集,创建后开发者即可把自己的应用与函数库进行链接。由于其高效的网络通信效率,更低的成本、更短的产品开发周期,同时提供多样的网络单元和丰富的功能,类似intel网卡芯片以及非intel网卡芯片均开始适配支持dpdk应用。但是,对于一些新适配支持dpdk的非intel网卡芯片开发产品适配收发包却遇到各种各样的故障,比如收发包丢包率高,影响产品开发周期和成本。
31.下面针对本发明实施例中提供的基于dpdk的环形队列参数配置方法、装置、电子设备及存储介质,通过各实施例中方案以及对应的可选方案进行详细阐述。
32.图1是本发明实施例中提供的一种基于dpdk的环形队列参数配置方法的流程图。本实施例可适用于对网卡的收发包环形队列参数与cpu处理核间的收发包环形队列参数进行配置以保证底层收发包稳定的情况。该方法可由基于dpdk的环形队列参数配置装置执行,该装置可采用软件和/或硬件的方式实现,并可集成在任何具有网络通信功能的电子设备上。如图1所示,本发明实施例中提供的基于dpdk的环形队列参数配置方法,可包括以下步骤:
33.s110、启动进入收发统计模式,向收包环形队列写入数据包用于取出进行业务处理;以及,向发包环形队列写入取出的数据包用于进行转发数据包。
34.其中,收包环形队列与发包环形队列包括配置于网卡和/或中央处理器cpu处理核间的环形队列。
35.通过数据平面开发套件dpdk开发配置中央处理器cpu,使得中央处理器cpu能够采用dpdk使用适配支持dpdk的网卡芯片进行数据包转发。在启动进入数据包统计模式的情况下,控制数据包向网卡进行传输,网卡可以将数据包发送给收包环形队列并写入,同时可以从收包环形队列中依次取出数据包进行业务处理。在对数据包进行业务处理后,可将进行业务处理的数据包再发送给发包环形队列进行写入,以便从发包环形队列中依次取出数据包进行转发。
36.在本实施例的一种可选方案中,向收包环形队列写入数据包,可包括以下步骤:
37.将从网卡接收端接收的不同包长的数据包写入网卡接收端绑定的收包环形队列,用以取出数据包送入中央处理器cpu进行业务处理。
38.相应地,向发包环形队列写入取出的数据包,可包括以下步骤:
39.将在中央处理器cpu进行业务处理的数据包发送到网卡发送端绑定的发包环形队列,用以在网卡发送端进行数据包转发。
40.参见图2与图3,dpdk应用绑定网卡芯片后,可以为绑定的网卡设置对应的工作模式,包括用于接收数据包与发送数据包的工作模式。同时,可以在网卡接收端配置收包环形
队列描述符以及安装收包环形队列和在网卡发送端配置发包环形队列描述符与安装发包环形队列。在设置启动网卡为工作模式时,网卡可以正常的接收数据包与发送数据包。
41.参见图2,不同包长的数据包到达网卡接收端,网卡采用dma引擎的dma操作将接收的不同包长的数据包从网卡拷贝到网卡接收端一侧绑定的收包环形队列并写入收包环形队列。dpdk应用可以从网卡接收端绑定的收包环形队列中依次取出数据包进行业务处理。参见图3,dpdk应用可以将经业务处理后的数据包发送到网卡发送端一侧绑定的发包环形队列,而网卡可以经过dma引擎的dma操作从网卡发送端一侧绑定的发包环形队列中取出数据包,并将取出的数据包拷贝到网卡发送端,数据包从网卡发出。
42.参见图4,创建一个mbuf内存池,配置网卡接收端绑定的收包环形队列数与配置网卡发送端绑定的发包环形队列数,以及对网卡接收端绑定的收包环形队列与网卡发送端绑定的发包环形队列进行初始化,启动网卡接收端绑定的收包环形队列与网卡发送端绑定的发包环形队列,设置好报文转发配置。控制打流仪分别向网卡发送64字节、128字节、256字节、512字节、1024字节等不同包长的数据包,网卡接收并把不同包长的数据包送到网卡接收端绑定的收包环形队列进行写入,以便后续取出数据包送入中央处理器cpu进行业务处理。
43.参见图4,dpdk应用可控制从网卡接收端一侧绑定的收包环形队列中依次取出64字节、128字节、256字节、512字节、1024字节等不同包长的数据包在中央处理器cpu进行业务处理。在中央处理器cpu进行业务处理后,可将经业务处理的不同包长的数据包发送到网卡发送端一侧绑定的发包环形队列中进行写入,进而取出的数据包拷贝到网卡发送端,数据包从网卡发出。实时统计在网卡接收端的收包环形队列一侧的数据包个数与网卡发送端的发包环形队列一侧的数据包个数,以通过两侧数据包个数确定对数据包的收发包统计结果。
44.在本实施例的另一种可选方案中,向收包环形队列写入数据包,可包括以下步骤:
45.在数据包进入中央处理器cpu进行业务处理时,将从中央处理器cpu的收包处理核接收的不同包长的数据包写入中央处理器cpu的收包处理核与中央处理器cpu的业务处理核之间的收包环形队列,用以取出数据包送入所述业务处理核进行业务处理。
46.相应地,向发包环形队列写入取出的数据包,可包括以下步骤:
47.将在中央处理器cpu的业务处理核进行业务处理的数据包发送到业务处理核与发包处理核之间的发包环形队列,用以在发包处理核进行数据包转发。
48.基于中央处理器cpu的核数,可以分为在对数据包进行业务处理时用于接收数据包的收包处理核、业务处理核以及用于发送数据包的发包处理核。对于有多于4个处理核的cpu,有的还分为收包处理核、业务分发核、多个业务处理核以及发包处理核等。无论cpu哪一种核的分配方式,核间的数据包传送通常可以通过环形队列来实现。
49.参见图5,预先配置收包处理核与中央处理器cpu的业务处理核之间的收包环形队列数与配置业务处理核与发包处理核之间的发包环形队列数,以及对核间的收包环形队列与核间的发包环形队列进行初始化,启动核间的收包环形队列与核间的发包环形队列,业务处理核设置好报文转发配置。针对网卡的性能,设置不同包长满负荷的数据包(比如ip报文)发送给收包处理核,收包处理核将不同包长的数据包送到收包处理核与中央处理器cpu的业务处理核之间的收包环形队列并进行写入,以解封装收包环形队列中数据包送入业务
处理核进行业务处理。
50.参见图5,dpdk应用可控制从收包处理核与中央处理器cpu的业务处理核之间的收包环形队列中依次取出不同包长的数据包进行解封装,并将解封装的数据包送入业务处理核进行业务处理。在中央处理器cpu的业务处理核进行业务处理后,可将经业务处理的不同包长的数据包封装发送到业务处理核与发包处理核之间的发包环形队列中进行写入,进而从发包环形队列中取出的数据包发送到发包处理核,数据包从发包处理核发出,实现数据包从一个cpu处理核发送至下一个cpu处理核。实时统计在收包处理核与中央处理器cpu的业务处理核之间的收包环形队列一侧与业务处理核与发包处理核之间的发包环形队列一侧的数据包个数,以通过两侧数据包个数确定对数据包在中央处理器cpu两侧的收发包统计结果。
51.s120、确定数据包的收发统计结果,并依据收发统计结果对收包环形队列与发包环形队列的队列参数进行调整更新,直至满足预设收发包条件。
52.基于每次统计得到的数据包的收发统计结果可以确定收包环形队列与发包环形队列是都合理。在确定收包环形队列与发包环形队列不合理时,对两侧的收包环形队列数与发包环形队列数,以及收包环形队列与发包环形队列之间的队列数比例进行设置,直至收包环形队列与发包环形队列变得合理。
53.s130、确定调整更新停止时收包环形队列与发包环形队列的队列数,用以对网卡的收发包环形队列参数和/或中央处理器cpu处理核间的收发包环形队列参数进行配置。
54.在确定调整更新停止时网卡接收端的收包环形队列数与网卡发送端的发包环形队列数后,可以按照收包环形队列数与发包环形队列数配置网卡的环形队列参数并写入网卡对应的寄存器。以及,在确定调整更新停止时收包处理核与业务处理核之间的收包环形队列数与业务处理核与发包处理核之间的发包环形队列数后,可以按照收包环形队列数与发包环形队列数配置中央处理器cpu的核间环形队列参数。通过对新的网卡芯片和处理器进行收发环形队列描述符个数和队列个数以及其他参数的优化设置,实现在基于dpdk新开发的硬件收发包时的收发包稳定性,降低报文收发丢包率,甚至避免断流问题。
55.根据本发明实施例中提供的基于dpdk的环形队列参数配置方法,确定数据包的收发统计结果,并依据收发统计结果对收包环形队列与发包环形队列的队列参数进行调整更新,直至满足预设收发包条件;确定调整更新停止时收包环形队列与发包环形队列的队列数,基于dpdk提供的接口与底层网卡统计,根据报文收发情况不断尝试快速适配调整网卡的收发包环形队列参数和/或cpu处理核间的收发包环形队列参数,实现非intel网卡收包和发包最优环形队列参数设置,保证底层收发包处理稳定。
56.图6是本发明实施例中提供的另一种基于dpdk的环形队列参数配置方法的流程图。本实施例在上述实施例的基础上进行优化,本发明实施例可以与上述一个或者多个实施例中各个可选方案结合。如图6所示,本发明实施例中提供的基于dpdk的环形队列参数配置方法,可包括以下步骤:
57.s610、启动进入收发统计模式,向收包环形队列写入数据包用于取出进行业务处理;以及,向发包环形队列写入取出的数据包用于进行转发数据包。
58.s620、确定数据包的收发统计结果,并依据收发统计结果确定收包环形队列侧与发包环形队列侧的丢包情况。
59.s630、依据收包环形队列侧与发包环形队列侧的丢包情况,对收包环形队列与发包环形队列的队列数以及队列数比例进行调整更新,直至满足预设收发包条件。
60.可选地,收包环形队列包括网卡接收端绑定的收包环形队列,相应发包环形队列包括网卡发送端绑定的发包环形队列。
61.数据包的收发统计结果用于表征网卡接收端的收包环形队列一侧的数据包接收个数与网卡发送端的发包环形队列一侧的数据包发送个数是否一致。在不一致的情况下数据包的收发统计结果可以细分为网卡接收端的收包环形队列一侧出现丢包或者网卡发送端的发包环形队列一侧出现丢包。
62.采用上述可选方案,能快速的适配支持dpdk的新厂商或则新网卡参数,自动实现网卡收发队列描述符个数和队列个数以及其他参数的设置,降低基于dpdk新开发的硬件收发包的不稳定性,保证底层收发包稳定,提升产品开发效率,降低产品成本;在出现收发包异常时快速界定问题,确定识别网卡的收发状态,定位网络故障。
63.另一可选地,收包环形队列包括中央处理器cpu中收包处理核与业务处理核之间的收包环形队列,相应发包环形队列包括中央处理器cpu中业务处理核与发包处理核之间的发包环形队列。
64.数据包的收发统计结果用于表征cpu中收包处理核与业务处理核之间的收包环形队列一侧的数据包接收个数与业务处理核与发包处理核之间的发包环形队列一侧的数据包发送个数是否一致。在不一致的情况下数据包的收发统计结果可以细分为cpu中收包处理核与业务处理核之间的收包环形队列一侧出现丢包或者业务处理核与发包处理核之间的发包环形队列一侧出现丢包。
65.采用上述可选方案,能快速适配基于dpdk的新处理核间通信的队列参数,自动实现核间ring队列的属性以及ring队列的大小的设置,保证处理器核间报文传输稳定,提升产品开发效率,降低产品成本;在出现收发包异常时快速界定问题,确定处理器核间报文传输状态,定位网络故障。
66.在本实施例的一种可选方案中,依据收包环形队列侧与发包环形队列侧的丢包情况,对收包环形队列与发包环形队列的队列数以及队列数比例进行调整更新,可包括以下步骤a1-a2:
67.步骤a1、若收包环形队列侧触发丢包事件,且收包环形队列数未达到队列数上限值,则增大收包环形队列数以及按照收发包环形队列数比例同比例增大发包环形队列数,并汇总记录调整更新的收包环形队列数与发包环形队列数,重新设置网卡的收发包环形队列参数和/或cpu处理核间的收发包环形队列参数,返回重新启动进入数据包收发统计模式。
68.步骤a2、若收包环形队列侧触发丢包事件,且收包环形队列数达到队列数上限值,则重新设置收包环形队列与发包环形队列之间的队列数比例,重新设置网卡的收发包环形队列参数和/或cpu处理核间的收发包环形队列参数,返回重新启动进入数据包收发统计模式。
69.以收包环形队列包括网卡接收端绑定的收包环形队列为例,参见图4,查看网卡接收端的收包环形队列是否存在丢包事件。如果收包环形队列侧触发丢包事件并且收包环形队列数未达到队列数上限值(例如4096个),则按照预设的步长大小(例如步长为64)增大网
卡接收端收包环形队列的大小,在增大网卡接收端绑定的收包环形队列的大小后,按照收包环形队列与发包环形队列之间的队列数比例,来同比例增大网卡发送端发包环形队列的大小,以使得队列增大后的收包环形队列与发包环形队列之间的队列数比例保持不变。
70.继续参见图4,汇总设置的网卡接收端绑定的收包环形队列数值与网卡发送端绑定的发包环形队列数值后,停止网卡的收包环形队列与发包环形队列的使用,清空mbuf报文内存池,重新设置网卡接收端与发送端绑定的环形队列ring参数,重新启动网卡的收包环形队列与发包环形队列,重新启动进入收发统计模式继续使用打流仪发送数据包进行测试,直到满足收发包指标满足要求。
71.继续参见图4,如果收包环形队列侧触发丢包事件并且收包环形队列数达到队列数上限值(例如4096个),此时虽然无法再继续增大网卡接收端绑定的收包环形队列的大小,但可以对收包环形队列与发包环形队列之间的队列数比例进行调整。考虑到收包环形队列有丢包,因此可以将收包环形队列相对发包环形队列的队列数比例进行增大,重新设置网卡接收端的收包环形队列和发送端的发包环形队列的比例;比如,以收包方向的收包环形队列数128开始,按照新的队列比例重新设置发送方向的发包环形队列数,重新启动网卡,继续按照规则发送报文观察,直到满足收发包指标满足要求。
72.以收包环形队列包括中央处理器cpu中收包处理核与业务处理核之间的收包环形队列为例,参见图5,查看收包处理核与业务处理核之间的收包环形队列是否存在解封装失败的丢包事件。如果收包环形队列侧触发丢包事件并且收包环形队列数未达到队列数上限值(例如65536个),则按照预设的步长大小增大收包处理核与业务处理核之间的收包环形队列的大小,在增大收包处理核与业务处理核之间的收包环形队列的大小后,按照收包环形队列与发包环形队列之间的队列数比例,来同比例增大中央处理器cpu中业务处理核与发包处理核之间的发包环形队列的大小,以使得队列增大后的收包环形队列与发包环形队列之间的队列数比例保持不变。
73.继续参见图5,汇总设置的收包处理核与业务处理核之间的收包环形队列数值与业务处理核与发包处理核之间的发包环形队列数值后,停止中央处理器cpu的核间收发包环形队列的使用,重新设置核间的收包环形队列与发包环形队列参数,重新启动核间的收包环形队列与发包环形队列参数,重新启动进入收发统计模式继续发送数据包进行测试。
74.继续参见图5,如果收包环形队列侧触发丢包事件并且收包环形队列数达到队列数上限值(例如65536个),此时虽然无法再继续增大收包处理核与业务处理核之间的收包环形队列的大小,但可以对收包环形队列与发包环形队列之间的队列数比例进行调整。考虑到收包处理核与业务处理核之间的收包环形队列有丢包,因此可以将收包环形队列相对发包环形队列的队列数比例进行增大,重新设置收包处理核与业务处理核之间的收包环形队列和业务处理核与发包处理核之间的发包环形队列的比例,按照新的队列比例重新设置发包环形队列数,继续按照规则发送报文观察,对核间通信报文数统计,直到满足收发包指标满足要求。
75.在本实施例的一种可选方案中,依据收包环形队列侧与发包环形队列侧的丢包情况,对收包环形队列与发包环形队列的队列数以及队列数比例进行调整更新,可包括以下步骤b1-b2:
76.步骤b1、若发包环形队列侧触发丢包事件,且发包环形队列数未达到队列数上限
值,则增大发包环形队列数以及按照收发包环形队列数比例同比例增大收包环形队列数,并汇总记录调整更新的收包环形队列数与发包环形队列数,重新设置网卡的收发包环形队列参数和/或cpu处理核间的收发包环形队列参数,返回重新启动进入数据包收发统计模式。
77.步骤b2、若发包环形队列侧触发丢包事件,且发包环形队列数达到队列数上限值,则重新设置收包环形队列与发包环形队列之间的队列数比例,重新设置网卡的收发包环形队列参数和/或cpu处理核间的收发包环形队列参数,返回重新启动进入数据包收发统计模式。
78.以发包环形队列包括网卡发送端绑定的发包环形队列为例,参见图4,查看网卡发送端绑定的发包环形队列是否存在丢包事件。如果发包环形队列侧触发丢包事件并且发包环形队列数未达到队列数上限值(例如4096个),则按照预设的步长大小(例如步长为64)增大网卡发送端发包环形队列的大小,在增大网卡发送端绑定的发包环形队列的大小后,按照收包环形队列与发包环形队列之间的队列数比例,来同比例增大网卡接收端收包环形队列的大小,以使得队列增大后的收包环形队列与发包环形队列之间的队列数比例保持不变。
79.继续参见图4,汇总设置的网卡接收端绑定的收包环形队列数值与网卡发送端绑定的发包环形队列数值后,停止网卡的收包环形队列与发包环形队列的使用,清空mbuf报文内存池,重新设置网卡接收端与发送端绑定的环形队列ring参数,重新启动网卡的收包环形队列与发包环形队列,重新启动进入收发统计模式继续使用打流仪发送数据包进行测试,直到满足收发包指标满足要求。
80.继续参见图4,如果发包环形队列侧触发丢包事件并且发包环形队列数达到队列数上限值(例如4096个),此时虽然无法再继续增大网卡发送端绑定的发包环形队列的大小,但可以对收包环形队列与发包环形队列之间的队列数比例进行调整。考虑到发包环形队列有丢包,因此可以将发包环形队列相对收包环形队列的队列数比例进行增大,重新设置网卡接收端的收包环形队列和发送端的发包环形队列的比例;比如,以发包方向的收包环形队列数128开始,按照新的队列比例重新设置接收方向的收包环形队列数,重新启动网卡,继续按照规则发送报文观察,直到满足收发包指标满足要求。
81.以发包环形队列包括中央处理器cpu中发包处理核与业务处理核之间的发包环形队列为例,参见图5,查看发包处理核与业务处理核之间的发包环形队列是否存在丢包事件。如果发包环形队列侧触发丢包事件并且发包环形队列数未达到队列数上限值(例如65536个),则按照预设的步长大小增大发包处理核与业务处理核之间的发包环形队列的大小,在增大发包处理核与业务处理核之间的发包环形队列的大小后,按照发包环形队列与收包环形队列之间的队列数比例,来同比例增大中央处理器cpu中业务处理核与收包处理核之间的收包环形队列的大小,以使得队列增大后的发包环形队列与收包环形队列之间的队列数比例保持不变。
82.继续参见图5,汇总设置的发包处理核与业务处理核之间的发包环形队列数值与业务处理核与收包处理核之间的收包环形队列数值后,停止中央处理器cpu的核间收收包环形队列的使用,重新设置核间的发包环形队列与收包环形队列参数,重新启动核间的发包环形队列与收包环形队列参数,重新启动进入收发统计模式继续发送数据包进行测试。
83.继续参见图5,如果发包环形队列侧触发丢包事件并且发包环形队列数达到队列数上限值(例如65535个),此时虽然无法再继续增大发包处理核与业务处理核之间的发包环形队列的大小,但可以对发包环形队列与收包环形队列之间的队列数比例进行调整。考虑到发包处理核与业务处理核之间的发包环形队列有丢包,因此可以将发包环形队列相对收包环形队列的队列数比例进行增大,重新设置发包处理核与业务处理核之间的发包环形队列和业务处理核与收包处理核之间的收包环形队列的比例,按照新的队列比例重新设置收包环形队列数,继续使用收包按照规则发送报文观察,对核间通信报文数统计,直到满足收收包指标满足要求。
84.s640、确定调整更新停止时收包环形队列与发包环形队列的队列数,用以对网卡的收发包环形队列参数和/或cpu处理核间的环形队列参数进行配置。
85.在本实施例的一种可选方案中,依据收包环形队列侧与发包环形队列侧的丢包情况,对收包环形队列与发包环形队列的队列数以及队列数比例进行调整更新,可包括以下按步骤:
86.若收包环形队列侧与发包环形队列侧均未触发丢包事件,则已记录的收包环形队列与发包环形队列的队列数以及队列数比例,用于配置网卡的收发包环形队列参数和/或cpu处理核间的环形队列参数。
87.参见图4,继续使用测试仪按照规则发送报文进行统计观察,直到满足收发包指标满足要求,此时网卡收发报文都正常,长时间报文收发报文在丢包率在十万之一甚至百万分之一以上,甚至不丢包,记录网卡接收和发送方向设置的环形队列ring参数,完成新硬件网卡的收发包环形队列ring参数设置。
88.参见图5,自动调整核间发方向ring队列、收发向ring队列参数,增加队列大小,继续观察核间通信报文数统计,直至正常,记录并设置核间通信正常的队列属性和大小。
89.根据本发明实施例中提供的基于dpdk的环形队列参数配置方法,确定数据包的收发统计结果,并依据收发统计结果对收包环形队列与发包环形队列的队列参数进行调整更新,直至满足预设收发包条件;确定调整更新停止时收包环形队列与发包环形队列的队列数,基于dpdk提供的接口与底层网卡统计,根据报文收发情况不断尝试快速适配调整网卡的收发包环形队列参数和/或cpu处理核间的收发包环形队列参数,实现非intel网卡收包和发包最优环形队列参数设置,保证底层收发包处理稳定。
90.图7是本发明实施例中提供的一种基于dpdk的环形队列参数配置装置的结构框图。本实施例可适用于对网卡的收发包环形队列参数与cpu处理核间的收发包环形队列参数进行配置以保证底层收发包稳定的情况。该装置可采用软件和/或硬件的方式实现,并可集成在任何具有网络通信功能的电子设备上,该电子设备可以为采用数据平面开发套件dpdk配置的中央处理器cpu。
91.如图7所示,本实施例中提供的基于dpdk的环形队列参数配置装置,可包括:数据包控制模块710、队列调整模块720以及队列参数配置模块730。其中:
92.数据包控制模块710,用于启动进入收发统计模式,向收包环形队列写入数据包用于取出进行业务处理以及向发包环形队列写入取出的数据包用于转发数据包;所述收包环形队列与所述发包环形队列配置于网卡的收发包环形队列参数和/或中央处理器cpu处理核间;
93.队列调整模块720,用于确定数据包的收发统计结果,并依据收发统计结果对收包环形队列与发包环形队列的队列参数进行调整更新,直至满足预设收发包条件;
94.队列参数配置模块730,用于确定调整更新停止时收包环形队列与发包环形队列的队列数,用以对网卡的收发包环形队列参数和/或cpu处理核间的收发包环形队列参数进行配置。
95.在上述实施例的基础上,可选地,向收包环形队列写入数据包,包括:
96.将从网卡接收端接收的不同包长的数据包写入网卡接收端绑定的收包环形队列,用以取出数据包送入中央处理器cpu进行业务处理;
97.相应地,向发包环形队列写入取出的数据包,包括:
98.将在中央处理器cpu进行业务处理的数据包发送到网卡发送端绑定的发包环形队列,用以在网卡发送端进行数据包转发。
99.在上述实施例的基础上,可选地,向收包环形队列写入数据包,包括:
100.在数据包进入中央处理器cpu进行业务处理时,将从中央处理器cpu的收包处理核接收的不同包长的数据包写入收包处理核与中央处理器cpu的业务处理核之间的收包环形队列,用以取出数据包送入所述业务处理核进行业务处理;
101.相应地,向发包环形队列写入取出的数据包,包括:
102.将在所述业务处理核进行业务处理的数据包发送到所述业务处理核与发包处理核之间的发包环形队列,用以在发包处理核进行数据包转发。
103.在上述实施例的基础上,可选地,依据收发统计结果对收包环形队列与发包环形队列的队列进行调整更新,包括:
104.依据收发统计结果确定收包环形队列侧与发包环形队列侧的丢包情况;
105.依据收包环形队列侧与发包环形队列侧的丢包情况,对收包环形队列与发包环形队列的队列数以及队列数比例进行调整更新;
106.其中,所述收包环形队列包括网卡接收端绑定的收包环形队列,相应所述发包环形队列包括网卡发送端绑定的发包环形队列;和/或,所述收包环形队列包括中央处理器cpu中收包处理核与业务处理核之间的收包环形队列,相应所述发包环形队列包括中央处理器cpu中业务处理核与发包处理核之间的发包环形队列。
107.在上述实施例的基础上,可选地,依据收包环形队列侧与发包环形队列侧的丢包情况,对收包环形队列与发包环形队列的队列数以及队列数比例进行调整更新,包括:
108.若收包环形队列侧触发丢包事件,且所述收包环形队列数未达到队列数上限值,则增大收包环形队列数以及按照收发包环形队列数比例同比例增大发包环形队列数,并汇总记录调整更新的收包环形队列数与发包环形队列数,重新设置网卡的收发包环形队列参数和/或cpu处理核间的收发包环形队列参数,返回重新启动进入数据包收发统计模式;
109.若收包环形队列侧触发丢包事件,且所述收包环形队列数达到队列数上限值,则重新设置收包环形队列与发包环形队列之间的队列数比例,重新设置网卡的收发包环形队列参数和/或cpu处理核间的收发包环形队列参数,返回重新启动进入数据包收发统计模式。
110.在上述实施例的基础上,可选地,依据收包环形队列侧与发包环形队列侧的丢包情况,对收包环形队列与发包环形队列的队列数以及队列数比例进行调整更新,包括:
111.若发包环形队列侧触发丢包事件,且所述发包环形队列数未达到队列数上限值,则增大发包环形队列数以及按照收发包环形队列数比例同比例增大收包环形队列数,并汇总记录调整更新的收包环形队列数与发包环形队列数,重新设置网卡的收发包环形队列参数和/或cpu处理核间的收发包环形队列参数,返回重新启动进入数据包收发统计模式;
112.若发包环形队列侧触发丢包事件,且所述发包环形队列数达到队列数上限值,则重新设置收包环形队列与发包环形队列之间的队列数比例,重新设置网卡的收发包环形队列参数和/或cpu处理核间的收发包环形队列参数,返回重新启动进入数据包收发统计模式。
113.在上述实施例的基础上,可选地,依据收包环形队列侧与发包环形队列侧的丢包情况,对收包环形队列与发包环形队列的队列数以及队列数比例进行调整更新,包括:
114.若收包环形队列侧与发包环形队列侧均未触发丢包事件,则已记录的收包环形队列与发包环形队列的队列数以及队列数比例,用于配置网卡的收发包环形队列参数和/或cpu处理核间的环形队列参数。
115.本发明实施例中所提供的基于dpdk的环形队列参数配置装置可执行上述本发明任意实施例中所提供的基于dpdk的环形队列参数配置方法,具备执行该基于dpdk的环形队列参数配置方法相应的功能和有益效果,未在上述实施例中详尽描述的技术细节,可参见本技术任意实施例中所提供的基于dpdk的环形队列参数配置方法。
116.图8是本发明实施例中提供的一种电子设备的结构示意图。如图8所示结构,本发明实施例中提供的电子设备包括:一个或多个处理器810和存储装置820;该电子设备中的处理器810可以是一个或多个,图8中以一个处理器810为例;存储装置820用于存储一个或多个程序;所述一个或多个程序被所述一个或多个处理器810执行,使得所述一个或多个处理器810实现如本发明实施例中任一项所述的基于dpdk的环形队列参数配置方法。
117.该电子设备还可以包括:输入装置830和输出装置840。
118.该电子设备中的处理器810、存储装置820、输入装置830和输出装置840可以通过总线或其他方式连接,图8中以通过总线连接为例。
119.该电子设备中的存储装置820作为一种计算机可读存储介质,可用于存储一个或多个程序,所述程序可以是软件程序、计算机可执行程序以及模块,如本发明实施例中所提供的基于dpdk的环形队列参数配置方法对应的程序指令/模块。处理器810通过运行存储在存储装置820中的软件程序、指令以及模块,从而执行电子设备的各种功能应用以及数据处理,即实现上述方法实施例中基于dpdk的环形队列参数配置方法。
120.存储装置820可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据电子设备的使用所创建的数据等。此外,存储装置820可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储装置820可进一步包括相对于处理器810远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
121.输入装置830可用于接收输入的数字或字符信息,以及产生与电子设备的用户设置以及功能控制有关的键信号输入。输出装置840可包括显示屏等显示设备。
122.并且,当上述电子设备所包括一个或者多个程序被所述一个或者多个处理器810
执行时,程序进行如下操作:
123.启动进入收发统计模式,向收包环形队列写入数据包用于取出进行业务处理以及向发包环形队列写入取出的数据包用于转发数据包;所述收包环形队列与所述发包环形队列配置于网卡和/或中央处理器cpu处理核间;
124.确定数据包的收发统计结果,并依据收发统计结果对收包环形队列与发包环形队列的队列进行调整更新,直至满足预设收发包条件;
125.确定调整更新停止时收包环形队列与发包环形队列的队列数,用以对网卡的收发包环形队列参数和/或cpu处理核间的收发包环形队列参数进行配置。
126.当然,本领域技术人员可以理解,当上述电子设备所包括一个或者多个程序被所述一个或者多个处理器810执行时,程序还可以进行本发明任意实施例中所提供的基于dpdk的环形队列参数配置方法中的相关操作。
127.本发明实施例中提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时用于执行基于dpdk的环形队列参数配置方法,该方法包括:
128.启动进入收发统计模式,向收包环形队列写入数据包用于取出进行业务处理以及向发包环形队列写入取出的数据包用于转发数据包;所述收包环形队列与所述发包环形队列配置于网卡和/或中央处理器cpu处理核间;
129.确定数据包的收发统计结果,并依据收发统计结果对收包环形队列与发包环形队列的队列进行调整更新,直至满足预设收发包条件;
130.确定调整更新停止时收包环形队列与发包环形队列的队列数,用以对网卡的收发包环形队列参数和/或cpu处理核间的收发包环形队列参数进行配置。
131.可选的,该程序被处理器执行时还可以用于执行本发明任意实施例中所提供的基于dpdk的环形队列参数配置方法。
132.本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(random access memory,ram)、只读存储器(read only memory,rom)、可擦式可编程只读存储器(erasable programmable read only memory,eprom)、闪存、光纤、便携式cd-rom、光存储器件、磁存储器件、或者上述的任意合适的组合。计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
133.计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于:电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
134.计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、无线电频率(radiofrequency,rf)等等,或者上述的任意合适的组合。
135.可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机
程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c++,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(lan)或广域网(wan)——连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
136.在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
137.注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

技术特征:
1.一种基于dpdk的环形队列参数配置方法,其特征在于,所述方法包括:启动进入收发统计模式,向收包环形队列写入数据包用于取出进行业务处理以及向发包环形队列写入取出的数据包用于转发数据包;所述收包环形队列与所述发包环形队列配置于网卡和/或中央处理器cpu处理核间;确定数据包的收发统计结果,并依据收发统计结果对收包环形队列与发包环形队列的队列进行调整更新,直至满足预设收发包条件;确定调整更新停止时收包环形队列与发包环形队列的队列数,用以对网卡的收发包环形队列参数和/或cpu处理核间的收发包环形队列参数进行配置。2.根据权利要求1所述的方法,其特征在于,向收包环形队列写入数据包,包括:将从网卡接收端接收的不同包长的数据包写入网卡接收端绑定的收包环形队列,用以取出数据包送入中央处理器cpu进行业务处理;相应地,向发包环形队列写入取出的数据包,包括:将在中央处理器cpu进行业务处理的数据包发送到网卡发送端绑定的发包环形队列,用以在网卡发送端进行数据包转发。3.根据权利要求1所述的方法,其特征在于,向收包环形队列写入数据包,包括:在数据包进入中央处理器cpu进行业务处理时,将从中央处理器cpu的收包处理核接收的不同包长的数据包写入收包处理核与中央处理器cpu的业务处理核之间的收包环形队列,用以取出数据包送入所述业务处理核进行业务处理;相应地,向发包环形队列写入取出的数据包,包括:将在所述业务处理核进行业务处理的数据包发送到所述业务处理核与发包处理核之间的发包环形队列,用以在发包处理核进行数据包转发。4.根据权利要求1所述的方法,其特征在于,依据收发统计结果对收包环形队列与发包环形队列的队列进行调整更新,包括:依据收发统计结果确定收包环形队列侧与发包环形队列侧的丢包情况;依据收包环形队列侧与发包环形队列侧的丢包情况,对收包环形队列与发包环形队列的队列数以及队列数比例进行调整更新;其中,所述收包环形队列包括网卡接收端绑定的收包环形队列,所述发包环形队列包括网卡发送端绑定的发包环形队列;和/或,所述收包环形队列包括中央处理器cpu中收包处理核与业务处理核之间的收包环形队列,所述发包环形队列包括中央处理器cpu中业务处理核与发包处理核之间的发包环形队列。5.根据权利要求4所述的方法,其特征在于,依据收包环形队列侧与发包环形队列侧的丢包情况,对收包环形队列与发包环形队列的队列数以及队列数比例进行调整更新,包括:若收包环形队列侧触发丢包事件,且所述收包环形队列数未达到队列数上限值,则增大收包环形队列数以及按照收发包环形队列数比例同比例增大发包环形队列数,并汇总记录调整更新的收包环形队列数与发包环形队列数,重新设置网卡的收发包环形队列参数和/或cpu处理核间的收发包环形队列参数,返回重新启动进入数据包收发统计模式;若收包环形队列侧触发丢包事件,且所述收包环形队列数达到队列数上限值,则重新设置收包环形队列与发包环形队列之间的队列数比例,重新设置网卡的收发包环形队列参数和/或cpu处理核间的收发包环形队列参数,返回重新启动进入数据包收发统计模式。
6.根据权利要求4所述的方法,其特征在于,依据收包环形队列侧与发包环形队列侧的丢包情况,对收包环形队列与发包环形队列的队列数以及队列数比例进行调整更新,包括:若发包环形队列侧触发丢包事件,且所述发包环形队列数未达到队列数上限值,则增大发包环形队列数以及按照收发包环形队列数比例同比例增大收包环形队列数,并汇总记录调整更新的收包环形队列数与发包环形队列数,重新设置网卡的收发包环形队列参数和/或cpu处理核间的收发包环形队列参数,返回重新启动进入数据包收发统计模式;若发包环形队列侧触发丢包事件,且所述发包环形队列数达到队列数上限值,则重新设置收包环形队列与发包环形队列之间的队列数比例,重新设置网卡的收发包环形队列参数和/或cpu处理核间的收发包环形队列参数,返回重新启动进入数据包收发统计模式。7.根据权利要求4所述的方法,其特征在于,依据收包环形队列侧与发包环形队列侧的丢包情况,对收包环形队列与发包环形队列的队列数以及队列数比例进行调整更新,包括:若收包环形队列侧与发包环形队列侧均未触发丢包事件,则已记录的收包环形队列与发包环形队列的队列数以及队列数比例,用于配置网卡的收发包环形队列参数和/或cpu处理核间的收发包环形队列参数。8.一种基于dpdk的环形队列参数配置装置,其特征在于,配置于采用数据平面开发套件dpdk配置的中央处理器cpu,所述装置包括:数据包控制模块,用于启动进入收发统计模式,向收包环形队列写入数据包用于取出进行业务处理以及向发包环形队列写入取出的数据包用于转发数据包;所述收包环形队列与所述发包环形队列配置于网卡和/或中央处理器cpu处理核;队列调整模块,用于确定数据包的收发统计结果,并依据收发统计结果对收包环形队列与发包环形队列的队列参数进行调整更新,直至满足预设收发包条件;队列参数配置模块,用于确定调整更新停止时收包环形队列与发包环形队列的队列数,用以对网卡的收发包环形队列参数和/或cpu处理核间的收发包环形队列参数进行配置。9.一种电子设备,其特征在于,包括:一个或多个处理器;存储装置,用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现权利要求1-7中任一所述的基于dpdk的环形队列参数配置方法。10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1-7中任一所述的基于dpdk的环形队列参数配置方法。

技术总结
本发明实施例公开了一种基于DPDK的环形队列参数配置方法、装置、电子设备及存储介质。所述方法包括:向收包环形队列写入数据包用于取出进行业务处理以及向发包环形队列写入取出的数据包用于转发数据包;确定数据包的收发统计结果并依据收发统计结果对收包环形队列与发包环形队列的队列进行调整更新直至满足预设收发包条件;确定调整更新停止时收包环形队列与发包环形队列的队列数,用以配置网卡与CPU处理核间的收发包环形队列参数。采用本方案,基于DPDK提供的接口与底层网卡统计,根据报文收发情况不断尝试快速适配调整网卡与CPU处理核间的收发包环形队列参数,实现非Intel网卡收包和发包最优环形队列参数设置,保证底层收发包稳定。层收发包稳定。层收发包稳定。


技术研发人员:汪洋
受保护的技术使用者:浙江宇视科技有限公司
技术研发日:2021.12.30
技术公布日:2023/7/13
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐