1.本技术涉及机器学习技术领域,涉及但不限于一种数据提醒方法、装置、电子设备和存储介质。
背景技术:
2.相关技术中,可以事先部署一套具备数据转发面的虚拟化系统环境,并且在离线不具备任何外部流量的情况下,利用iperf等工具模拟发送数据包到主机系统。这些流量压测操作产生的数据包会经过数据转发面进行处理,并且当打入的流量足够多时,数据转发面会因为处理能力极限而出现丢包,进而可以通过控制压测流量的大小来尝试找到数据转发面的最大处理能力。
3.然而,数据转发面的实际性能极限受到软件版本等内外部差异而会有不同的处理能力,物理压测的方式要求人力穷尽所有的配置和版本情况,人力成本高。
技术实现要素:
4.有鉴于此,本技术实施例提供一种数据提醒方法、装置、电子设备和存储介质。
5.第一方面,本技术实施例提供一种数据提醒方法,所述方法包括:获取所述数据面在第一时段中接收到的至少两个数据包;基于每一所述数据包的大小和估计模型,确定所述数据面的吞吐量的估计值;所述估计模型是利用数据包的大小和对应的数据面的吞吐量的有效值对初始模型进行训练得到的;所述数据面的吞吐量的有效值用于表征数据包的大小对应的所述数据面的极限转发性能;基于每一所述数据包的大小,确定所述数据面的吞吐量的实际值;基于所述数据面的吞吐量的估计值与实际值,确定所述数据面的转发性能;在所述数据面的转发性能为不足的情况下,输出所述数据面的第一提示信息。
6.第二方面,本技术实施例提供一种数据提醒装置,包括:第一获取模块,用于获取所述数据面在第一时段中接收到的至少两个数据包;第一确定模块,用于基于每一所述数据包的大小和估计模型,确定所述数据面的吞吐量的估计值;所述估计模型是利用数据包的大小和对应的数据面的吞吐量的有效值对初始模型进行训练得到的;所述数据面的吞吐量的有效值用于表征数据包的大小对应的所述数据面的极限转发性能;第二确定模块,用于基于每一所述数据包的大小,确定所述数据面的吞吐量的实际值;第三确定模块,用于基于所述数据面的吞吐量的估计值与实际值,确定所述数据面的转发性能;告警模块,用于在所述数据面的转发性能为不足的情况下,输出所述数据面的第一提示信息。
7.第三方面,本技术实施例提供一种电子设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现本技术实施例第一方面所述数据提醒方法中的步骤。
8.第四方面,本技术实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现本技术实施例第一方面所述数据提醒方法中的步骤。
9.本技术实施例中,通过根据数据面获取到的数据包的大小和估计模型,确定数据
面的极限转发性能,并根据数据面的吞吐量的实际值和极限转发性能,确定数据面当前的转发性能,从而可以及时、准确且高效地确定数据面的转发性能,能够避免因为转发性能不足而丢包导致的数据卡顿等问题。
附图说明
10.图1为本技术实施例一种数据提醒方法的流程示意图;
11.图2为本技术实施例一种数据提醒方法的应用场景示意图;
12.图3为本技术实施例一种包含基于dpdk的用户态数据转发面的主机系统架构示意图;
13.图4为本技术实施例提供的一种数据面的极限性能估计方法的流程示意图;
14.图5为本技术实施例一种数据面极限性能初始化估计方法的流程示意图;
15.图6为本技术实施例一种数据面极限性能估计模型的更新方法的流程示意图;
16.图7为本技术实施例一种数据面极限性能估计模型的应用方法的流程示意图;
17.图8为本技术实施例一种数据提醒装置的组成结构示意图;
18.图9为本技术实施例电子设备的一种硬件实体示意图。
具体实施方式
19.下面结合附图和实施例对本技术的技术方案进一步详细阐述。
20.图1为本技术实施例一种数据提醒方法的流程示意图,如图1所示,该方法包括:
21.步骤102:获取所述数据面在第一时段中接收到的至少两个数据包;
22.其中,传统网络一般分为三个平面,管理面、控制面和数据面,所述数据面又称数据转发面,控制面主要负责各种网络策略、配置下发及决策;数据面则是实际的数据包转发的执行者,数据面的处理能力直接决定了网络运行的效率。
23.步骤104:基于每一所述数据包的大小和估计模型,确定所述数据面的吞吐量的估计值;所述估计模型是利用数据包的大小和对应的数据面的吞吐量的有效值对初始模型进行训练得到的;所述数据面的吞吐量的有效值用于表征数据包的大小对应的所述数据面的极限转发性能;
24.其中,数据包的大小可以用数据包里面包含的字节数来衡量;可以根据每一所述数据包的大小,确定所述至少两个数据包中最大的数据包、最小的数据包、平均数据包大小等;所述估计模型是经过训练的网络模型,可以将最大的数据包的大小输入到估计模型中,以使所述估计模型输出所述数据面的吞吐量的估计值;同理,还可以将最小的数据包的大小、最多出现的数据包的大小、最小的数据包大小、平均数据包大小中的任意一个输入到估计模型中,以使所述估计模型输出所述数据面的吞吐量的估计值;所述数据面的吞吐量的估计值用于表示在输入的数据包大小的环境下,所述数据面不发生丢包的极限转发性能。
25.步骤106:基于每一所述数据包的大小,确定所述数据面的吞吐量的实际值;
26.其中,吞吐量可以是指数据面对网络或其他设施,单位时间内成功地接收并转发的数据的数量,可以以比特、字节、分组等测量;可以将第一时段内每一数据包的大小之和,确定为所述数据面的吞吐量的实际值。
27.步骤108:基于所述数据面的吞吐量的估计值与实际值,确定所述数据面的转发性
能;
28.其中,可以先确定所述数据面的吞吐量的估计值与实际值之间的关系,并基于所述关系,确定所述数据面的转发性能;所述关系可以是所述数据面的吞吐量的估计值与实际值之间的大小关系,所述关系可以是所述数据面的吞吐量的估计值大于所述实际值,也可以是所述数据面的吞吐量的估计值不大于所述实际值,还可以是所述数据面的吞吐量的估计值大于所述实际值与预设系数的乘积等;所述预设系数可以是70%、80%和85%等。
29.其中,所述转发性能可以包括转发性能强、转发性能一般和转发性能弱等,所述转发性能还可以包括转发性能充足和转发性能不足等;需要说明的是,可以在所述数据面没有发生丢包的情况下,获取数据面接收到的数据包,还可以在所述数据面发生丢包的情况下,获取数据面接收到的数据包。
30.步骤110:在所述数据面的转发性能为不足的情况下,输出所述数据面的第一提示信息。
31.图2为本技术实施例一种数据提醒方法的应用场景示意图,参见图2,设备的数据面201可以通过网口接收其他外部设备发送的数据包,并将数据包转发至主机中的虚拟机,所述数据包可以包括数据包1、数据包2和数据包3,所述虚拟机可以包括虚拟机1、虚拟机2、虚拟机3和虚拟机4;同理,主机中虚拟机的数据包也可以通过数据面转发至其他外部设备。
32.界面202表示数据面的转发性能显示界面,假设条形框203表示数据面的吞吐量的估计值,即估计模型估计出的数据面的极限转发性能,灰色条形框204表示数据面的吞吐量的实际值,即数据面的当前转发性能,则参见图2,可以在数据面的当前转发性能接近极限转发性能的情况下,在界面202中显示条形框205,用于输出数据面的第一提示信息:“数据面性能不足”。在其他实施例中,所述界面202中还可以显示数据面的吞吐量的实际值和估计值的具体数值,所述界面202中还可以显示数据面的吞吐量的实际值占估计值的比例等。
33.本技术实施例中,通过根据数据面获取到的数据包的大小和估计模型,确定数据面的极限转发性能,并根据数据面的吞吐量的实际值和极限转发性能之间的关系,确定数据面当前的转发性能,从而可以及时、准确且高效地确定数据面的转发性能,能够避免因为转发性能不足而丢包导致的数据卡顿等问题。
34.本技术实施例还提供一种数据提醒方法,所述方法包括以下步骤:
35.步骤s202:在确定所述数据面发生丢包的情况下,获取所述数据面在第二时段至少一次中每次接收到的至少两个数据包;
36.其中,所述第二时段早于所述第一时段,假设第一时段为当前时段,则第二时段可以是历史时段;所述数据面发生丢包表明所述数据面可能到达了转发性能的极限。
37.步骤s204:基于每次中每一所述数据包的大小,确定每次所述数据面的吞吐量的实际值;
38.步骤s206:确定每次所述数据面的丢包率;
39.其中,丢包率可以是所丢失数据包数量占所发送数据组的比率。
40.步骤s208:根据每次每一所述数据包的大小、对应次所述数据面的吞吐量的实际值、所述数据面的丢包率以及所述初始模型,确定所述估计模型;
41.步骤s210:获取所述数据面在第一时段中接收到的至少两个数据包;
42.步骤s212:基于每一所述数据包的大小,确定所述至少两个数据包的平均数据包
大小;
43.其中,可以先根据每一数据包的大小,确定数据包的大小之和,再除以所述数据包的数量,得到平均数据包大小。
44.步骤s214:根据所述平均数据包大小和估计模型,确定所述数据面的吞吐量的估计值;所述估计模型是利用数据包的大小和对应的数据面的吞吐量的有效值对初始模型进行训练得到的;所述数据面的吞吐量的有效值用于表征数据包的大小对应的所述数据面的极限转发性能;
45.步骤s216:基于每一所述数据包的大小,确定所述数据面的吞吐量的实际值;
46.步骤s218:确定所述数据面的吞吐量的估计值与实际值之间的关系;
47.所述关系包括所述数据面的吞吐量的实际值不大于所述数据面的吞吐量的估计值与预设的第一系数的乘积,以及所述数据面的吞吐量的实际值大于所述数据面的吞吐量的估计值与所述第一系数的乘积;所述第一系数可以是0至1之间的值,例如可以是75%、80%等。所述关系还可以包括所述数据面的吞吐量的估计值与所述数据面的吞吐量的实际值之间的差值大于第一阈值,以及所述数据面的吞吐量的估计值与所述数据面的吞吐量的实际值之间的差值不大于所述第一阈值,所述第一阈值可以是100比特每秒,200比特每秒等。
48.步骤s220:在所述关系为所述数据面的吞吐量的估计值与所述数据面的吞吐量的实际值之间的差值大于第一阈值的情况下,确定所述数据面的转发性能为充足;
49.在另一个实施例中,在所述关系为所述数据面的吞吐量的实际值不大于所述数据面的吞吐量的估计值与第一系数的乘积的情况下,确定所述数据面的转发性能为充足;
50.步骤s222:在所述关系为所述数据面的吞吐量的估计值与所述数据面的吞吐量的实际值之间的差值不大于所述第一阈值的情况下,确定所述数据面的转发性能为不足;
51.在另一个实施例中,在所述关系为所述数据面的吞吐量的实际值大于所述数据面的吞吐量的估计值与第一系数的乘积的情况下,确定所述数据面的转发性能为不足;
52.步骤s224:在所述数据面的转发性能为不足的情况下,输出所述数据面的第一提示信息。
53.本技术实施例中,通过根据历史时段在丢包的情况下,获取到的数据包大小,以及数据面的吞吐量的实际值、丢包率和初始模型,得到估计模型,从而可以使得估计模型能够更准确地估计数据面的极限转发性能;通过确定平均数据包大小,并根据平均数据包大小和估计模型,确定数据面吞吐量的估计值,从而可以使得确定出的数据面吞吐量的估计值更准确;通过确定数据面的转发性能为充足或者不足,从而能够预判数据面的吞吐量是否接近转发性能的极限,以便更好地进行性能预警,保证用户的服务质量。
54.本技术实施例还提供一种数据提醒方法,所述方法包括以下步骤:
55.步骤s302:获取所述数据面在第一时段中接收到的至少两个数据包;
56.步骤s304:在确定存在所述估计模型的情况下,基于每一所述数据包的大小和估计模型,确定所述数据面的吞吐量的估计值;所述估计模型是利用数据包的大小和对应的数据面的吞吐量的有效值对初始模型进行训练得到的;所述数据面的吞吐量的有效值用于表征数据包的大小对应的所述数据面的极限转发性能;
57.步骤s306:在确定不存在所述估计模型的情况下,确定所述数据面独占的运算单
元的核的数量和所述数据面非独占的运算单元的核的数量;
58.其中,所述运算单元可以是cpu(central processing unit,中央处理器),所述数据面独占的运算单元的核完全用于所述数据面转发数据包;所述数据面非独占的运算单元的核部分用于所述数据面转发数据包。
59.步骤s308:根据所述数据面独占的运算单元的核的数量、所述数据面非独占的运算单元的核的数量、预设的第一吞吐量、预设的第二系数以及预设的内存带宽,确定所述数据面的吞吐量的估计值;所述第一吞吐量为数据面独占运算单元的核的情况下,所述数据面的最大吞吐量;
60.其中,第二系数可以是0至1之间的值,例如可以是0.1、0.2等。
61.步骤s310:基于每一所述数据包的大小,确定所述数据面的吞吐量的实际值;
62.步骤s312:确定所述数据面的吞吐量的估计值与实际值之间的关系;
63.步骤s314:基于所述关系,确定所述数据面的转发性能;
64.步骤s316:在所述数据面的转发性能为不足的情况下,输出所述数据面的第一提示信息。
65.本技术实施例中,通过在不存在估计模型的情况下,通过判断数据面独占和非独占的运算单元的核的数量,来估计数据面的极限转发性能,从而提高了极限转发性能确定的多样性、便捷性和成本。
66.本技术实施例还提供一种数据提醒方法,所述方法包括以下步骤:
67.步骤s402:在确定所述数据面发生丢包的情况下,获取所述数据面在第二时段至少一次中每次接收到的至少两个数据包;
68.步骤s404:基于每次中每一所述数据包的大小,确定每次所述数据面的吞吐量的实际值;
69.步骤s406:确定每次所述数据面的丢包率;
70.步骤s408:根据每次每一所述数据包的大小,确定所述数据面每次接收到的所述至少两个数据包的平均数据包大小;
71.步骤s410:根据每次所述数据面的吞吐量的实际值和所述数据面的丢包率,确定对应次所述数据面的吞吐量的有效值;
72.其中,可以将每次所述数据面的吞吐量的实际值和所述数据面的丢包率的乘积,确定为对应次所述数据面的吞吐量的有效值。
73.步骤s412:利用所述至少一次中每次的所述平均数据包大小和对应次的所述数据面的吞吐量的有效值,对所述初始模型进行训练,得到所述估计模型;
74.步骤s414:获取所述数据面在第一时段中接收到的至少两个数据包;
75.步骤s416:在确定存在所述估计模型的情况下,基于每一所述数据包的大小和估计模型,确定所述数据面的吞吐量的估计值;所述估计模型是利用数据包的大小和对应的数据面的吞吐量的有效值对初始模型进行训练得到的;所述数据面的吞吐量的有效值用于表征数据包的大小对应的所述数据面的极限转发性能;
76.步骤s418:在确定不存在所述估计模型的情况下,确定所述数据面独占的运算单元的核的数量和所述数据面非独占的运算单元的核的数量;
77.其中,所述数据面独占的运算单元的核完全用于所述数据面转发数据包;所述数
据面非独占的运算单元的核部分用于所述数据面转发数据包;
78.步骤s420:根据预设的第一吞吐量、所述数据面独占的运算单元的核的数量,确定所述数据面的第二吞吐量;
79.其中,可以将第一吞吐量和所述数据面独占的运算单元的核的数量的乘积,确定为第二吞吐量。
80.步骤s422:根据所述第一吞吐量、所述数据面非独占的运算单元的核的数量以及预设的第二系数,确定所述数据面的第三吞吐量;
81.其中,可以将第一吞吐量、所述数据面非独占的运算单元的核的数量以及预设的第二系数的乘积,确定为第三吞吐量。
82.步骤s424:根据所述第二吞吐量、所述第三吞吐量以及预设的内存带宽,确定所述数据面的吞吐量的估计值;
83.在一个实施例中,确定所述第二吞吐量和所述第三吞吐量的累加和;在所述累加和大于所述内存带宽的情况下,将所述内存带宽确定为所述数据面的吞吐量的估计值;在所述累加和不大于所述内存带宽的情况下,将所述累加和确定为所述数据面的吞吐量的估计值。
84.步骤s426:基于每一所述数据包的大小,确定所述数据面的吞吐量的实际值;
85.步骤s428:确定所述数据面的吞吐量的估计值与实际值之间的关系;
86.步骤s430:基于所述关系,确定所述数据面的转发性能;
87.步骤s432:在所述数据面的转发性能为不足的情况下,输出所述数据面的第一提示信息;
88.其中,所述关系可以是所述数据面的吞吐量的估计值大于所述实际值与预设系数的乘积;所述预设系数可以是70%、80%和85%等。
89.步骤s434:在确定所述数据面发生丢包的情况下,输出第二提示信息,所述第二提示信息用于提示所述数据面发生丢包。
90.本技术实施例中,通过利用平均数据包大小和数据面的吞吐量的有效值,对初始模型进行训练,从而能够在向经过训练的估计模型输入平均数据包大小的情况下,所述估计模型能够更准确地预测数据转发性能极限;通过根据历史时段在丢包的情况下,获取到的数据包大小,以及数据面的吞吐量的实际值、丢包率和初始模型,得到估计模型,从而可以使得估计模型能够更准确地估计数据面的极限转发性能;通过在估计模型的应用过程中数据面发生丢包的情况下,输出第二提示信息,从而可以及时提醒运维人员增加资源;通过在关系满足预设条件的情况下,输出第一告警信息,从而可以提前产生性能不足告警,提前通知运维人员或技术支持人员排查相关问题。
91.相关技术中,一般是通过手动压测的方式来测量和评估数据面的最大转发性能。即事先部署一套具备数据转发面的虚拟化系统环境,并且在离线不具备任何外部流量的情况下,利用iperf等工具模拟发送数据包到主机系统,iperf是一个网络性能测试工具,iperf可以测试最大tcp(transmission control protocol,传输控制协议)和udp(user datagram protocol,用户数据报协议)带宽性能,具有多种参数和udp特性,可以根据需要调整,可以报告带宽、延迟抖动和数据包丢失。
92.其中,该发包过程可以是虚拟机到虚拟机之间,也可以是从外部网络往虚拟机的
内部打流量。这些流量压测操作产生的数据包会经过数据转发面进行处理,并且当打入的流量足够多时,数据转发面会因为处理能力极限而出现丢包,进而可以通过控制压测流量的大小来尝试找到数据转发面的最大处理能力。
93.上述这种手动压测来评估数据转发面极限性能的方法主要存在如下两个方面的缺陷:
94.数据转发面的实际性能极限受到cpu(central processing unit,中央处理器)、内存等硬件配置,以及软件版本等内外部差异而会有不同的处理能力,物理压测的方式要求人力穷尽所有的配置和版本情况,人力成本高。
95.数据转发面的最大性能极限也会因为数据包的大小不同而不同。实际的应用中,网络流量的数据包大小是不确定的,并且随时间变化而动态变化,人力压测无法模拟实际业务流量情况,导致测量结果不准确;并且用来评估数据转发面极限性能的压测要求穷尽所有数据包大小,人力成本高。
96.针对手动压测人力成本高、实际应用偏差大的问题,本技术提供一种线上自动学习和评估数据转发面最大转发性能的方法,并给出了实际部署的系统架构和应用过程。
97.本技术提出一种通过学习数据转发面丢包情况下,接收的数据包大小和有效吞吐之间的关系,来动态估计不同数据包大小环境下数据面最大转发性能的方法。其中数据面最大转发性能可以等价理解为数据转发面每秒能够处理的最大数据包数或最大数据包字节数。
98.本技术提出的数据面数据包大小和有效吞吐之间的关系可以表示为key-value的字典,也可是诸如线性回归、指数回归等回归模型。
99.本技术提出可以根据动态估计得到的数据面极限转发性能和当前数据面接收的实际吞吐提前产生数据面性能不足的告警。
100.本技术提出的动态数据面极限转发性能估计方法可以结合一些数据面吞吐指标和数据包大小的时序预测技术,来提前预测数据面未来是否可能出现性能不足问题。
101.本技术通过构建数据转发面的有效吞吐和数据包大小之间的映射关系,以此来评估数据转发面的极限转发能力,其不局限于数据转发面的具体实现。因此,本技术适用于各种包含数据转发面的虚拟化系统或产品中。
102.sdn(software defined network)是一种转发和管理分离的网络管理技术,可以实现动态,编程高效的网络配置,以改善网络性能和监控;目前已成为国内外云计算的主流网络形态,主要用来解决传统网络中静态体系结构分散且复杂的问题,可以实现动态,编程高效的网络配置,以改善网络性能和监控。sdn是试图通过将网络数据包(数据面或数据平面)的转发过程与路由过程(控制面或控制平面)分离,来将网络智能集中在一个网络组件中。控制平面由一个或多个控制器组成,这些控制器被认为是整合了整个智能的sdn网络的大脑,主要负责各种网络策略、配置下发及决策;数据面则是实际的数据包转发的执行者,数据面的处理能力直接决定了网络运行的效率。
103.为了提升数据面的转发性能,以及满足自身需求灵活扩展,大多数云计算厂商均会采用dpdk(intel data plane development kit,数据平面开发套件)技术来实现自己的数据转发面。dpdk是intel提供的数据平面开发工具集,为intel architecture(ia,因特尔架构)处理器架构下用户空间高效的数据包处理提供库函数和驱动的支持,它不同于linux
系统以通用性设计为目的,而是专注于网络应用中数据包的高性能处理。dpdk应用程序是运行在用户空间上利用自身提供的数据平面库来收发数据包,绕过了linux内核协议栈对数据包处理过程,更加方便实现用户按需定制的数据包处理过程,能够有效地提升了数据包的处理效率。
104.图3为本技术实施例一种包含基于dpdk的用户态数据转发面的主机系统架构示意图,参见图3,箭头可以表示数据流向,主机系统300主要分为内核态31和用户态32两种形态,内核态31中包括物理网口311、内核协议栈312、内核驱动313和包复制组件314;用户态32中包括虚拟机321、其他应用程序322和数据转发面的dpdk323。其中,物理网口311可以包括网口a、网口b、网口c和网口d,虚拟机321可以包括虚拟机a、虚拟机b和虚拟机c。
105.网络数据包从主机系统300的物理网口311进入后经过内核态31到达用户态32的虚拟机321和/或其他应用程序322。
106.数据交互过程可以包括如下步骤:
107.步骤301:外部流量经过网口a直接到达用户态dpdk 323,并由dpdk 323提供的用户态网口驱动(图中未示出)处理后传递到上层(虚拟机321或者内核协议栈312)待一步处理。
108.步骤302:部分网口(如网口b)dpdk的网口驱动无法直接加载,先经过内核驱动313处理后再直接传到dpdk 323,由dpdk 323的网口驱动进行处理。
109.步骤303:部分网口(如网口c)dpdk的网口驱动无法直接加载,经过内核驱动313处理后通过包复制组件314,包复制组件314可以是内核钩子,ebpf(extended berkeley packet filter,扩展的伯克利包过滤)等,将数据包镜像到dpdk 323,再由dpdk 323的网口驱动进行处理。ebpf是一项革命性技术,它能在内核中运行沙箱程序(sandbox programs),实现监控/可观测性、网络和安全功能,而无需修改内核源码或者加载内核模块。
110.步骤304:部分网口(如网口d)未被dpdk 323接管,则直接经过内核驱动313处理后通过内核协议栈312转发到其他用户程序322进行处理。
111.步骤305:内核协议栈312把未经dpdk323接管的网口流量传给用户态32的其他应用程序322进行处理。
112.步骤306:由于数据面本身只负责流量转发,不具备七层的网络协议栈功能,那些被dpdk 323接管的网口上的应用流量会先转发到内核的虚拟网口,走内核的网络协议栈(内核协议栈312)到达用户程序(其他应用程序322);如果内核协议栈312想要查看数据转发面的流量情况,同样通过内核的虚拟网口实现抓包等功能。
113.步骤307:数据转发面把由dpdk 323接管的网口流量交付给虚拟机321进行处理,虚拟机321的流量也会经过数据转发面向外部转发。
114.数据面通过dpdk来接管物理网卡流量,从而维护虚拟机之间以及对外的流量转发。数据面的数据包处理性能直接关系着虚拟机内部应用程序的性能好坏,快速诊断数据面是否存在转发性能瓶颈有助于提升用户虚拟机业务的服务质量。然而,要想确定数据面是否存在性能瓶颈,准确地评估其最大转发能力至关重要。即如果已知数据面的转发极限,可以根据当前数据面接收的流量情况提前产生性能不足告警,提前通知运维人员或技术支持人员排查相关问题,并通过增加资源,修改配置等方式保障用户稳定的服务质量,有效避免了因性能不足而丢包导致的用户卡慢问题。
115.大多方法都是由人为进行压测来估计其最大转发能力,由于版本、软硬件配置差异,数据面的最大转发性能也不尽相同,从而导致这种人为压测的方法会带来极大的人力成本;并且由于复杂多变的数据包模式容易产生较大的测量偏差。故本技术提供一种自动化的数据面最大转发性能的估计方法。
116.在所述估计方法中,当数据不足导致无法学习出估计模型时,根据经验值和数据面的硬件配置情况给出一个初始的最大转发性能估计值。当数据面出现丢包情况时,可以记录当前的数据包大小、丢包、吞吐等数据,并以此产生一个估计模型。该估计模型构建了从数据包大小到数据面极限性能之间的函数映射关系,以此能够根据实际出现的数据包大小估计出数据面的极限性能。
117.图4为本技术实施例提供的一种数据面的极限性能估计方法的流程示意图,参见图4,所述方法包括以下步骤:
118.步骤401:开始;
119.步骤402:判断数据面当前是否发生丢包;
120.如果没有发生丢包,执行步骤403;否则,执行步骤405;
121.步骤403:判断估计模型是否存在;
122.如果不存在,执行步骤404;否则,执行步骤406;所述估计模型又可以称为数据面极限性能估计模型,用于估计数据面极限性能。
123.步骤404:初始化数据面最大转发性能;
124.其中,可以根据人工经验和数据面的硬件配置给出数据面最大转发性能的初始化估计值,数据面最大转发性能又可以称为数据面极限性能。数据面的最大转发性能主要取决于数据面的cpu资源配置、转发模式、cpu内存读写带宽等。本技术实施例可以考虑cpu核数配置、是否处于cpu独占模式、内存带宽三种指标,结合人工经验来给出数据面的初始化极限性能。
125.图5为本技术实施例一种数据面极限性能初始化估计方法的流程示意图,参见图5,所述步骤404可以包括以下步骤501至步骤512:
126.步骤501:开始;
127.步骤502:确定初始化单核独占模式下数据面的最大转发性能的估计值;
128.其中,可以根据经验,估计在cpu单核独占模式下,数据面的最大转发能力,假设最大转发能力的值表示为n,则n可以设置为20吉比特每秒(gbps,g bit per second),cpu单核独占模式可以是cpu单核处于完全用于数据面处理数据包转发的模式。
129.步骤503:初始化内存带宽大小;
130.其中,可以根据经验,设置内存带宽为100gbps,内存带宽实际取决于内存条的型号、频率、是否为多通道等。
131.步骤504:判断数据面是否配置独占的cpu核;
132.其中,独占的cpu核表示cpu核完全用于提供数据面处理数据包转发,如果存在,则执行步骤505;否则执行步骤506;
133.步骤505:计算数据面独占的cpu核的极限转发性能;
134.其中,可以根据数据面单核独占模式下估计的最大转发能力n,以及数据面配置的独占的cpu核的核数m的乘积作为数据面独占cpu核所具备的转发能力,执行步骤506;
135.步骤506:判断数据面是否配置了非独占的cpu核;
136.如果存在,则执行步骤507;否则,执行步骤508;
137.步骤507:计算所述数据面非独占的cpu核的转发能力;
138.其中,假设非独占核数为m’,计算数据面配置的非独占的cpu核的核数所能提供的转发性能为α
·n·
m',0≤α≤1,其中系数α可以根据实际情况和经验值进行设置,例如设置为0.1。
139.步骤508:计算数据面所有配置核的转发能力和;
140.其中,可以将数据面独占的cpu核和非独占的cpu核能够提供的转发能力总和,作为数据面最大转发性能的估计值;
141.步骤509:判断估计的数据面最大转发能力是否超过内存带宽限制;
142.如果超过,则进入步骤510;否则,执行步骤511;
143.步骤510:设置数据面的最大转发能力为内存带宽;
144.其中,受到内存带宽限制,数据面最大转发性能并不会随cpu核数的增加而无限增加。故此处判断当估计得到的最大转发性能高于内存带宽时,更新其最大转发性能为内存带宽大小,执行步骤511;
145.步骤511:输出步骤509计算得到的数据面的最大转发性能;
146.步骤512:结束。
147.步骤405:更新所述估计模型;
148.其中,可以根据当前数据面收包的数据包大小和有效吞吐更新数据面极限性能估计模型。
149.图6为本技术实施例一种数据面极限性能估计模型的更新方法的流程示意图,参见图6,所述步骤405可以包括以下步骤601至步骤606:
150.步骤601:开始;
151.步骤602:判断当前数据面是否存在丢包;
152.如果发生丢包,则执行步骤603;否则,执行步骤606,不更新;判断过程可以通过一些监控软件或者在数据面埋点技术统计数据面的丢包数量,以此判断数据面是否丢包,例如可以在丢包数量大于预设的丢包阈值的情况下,判断数据面丢包。
153.步骤603:计算数据面接收的数据包平均大小;
154.其中,可以根据数据面当前接收到的所有数据包计算平均数据包大小,继续执行步骤604。
155.步骤604:计算数据面当前的有效吞吐。
156.因为数据面当前存在丢包,所以其有效吞吐是其除开丢包外,实际处理的吞吐量。假设当前丢包率为λ(0<λ<1),总接收的吞吐量大小为n,则有效吞吐的计算为λ
×
n。继续执行步骤605。
157.步骤605:训练从平均数据包大小到数据面有效吞吐之间的回归模型;
158.其中,可以根据所有历史存储的平均数据包大小和数据面有效吞吐数据,训练从平均数据包大小(假设用x表示)到数据面有效吞吐(假设用y表示)之间的回归模型,即训练函数f,使得y=f(x),并且使得拟合误差最低。实际应用过程中,回归模型可以为线性回归模型、指数回归模型、支持向量机回归模型等。
159.步骤606:结束。
160.步骤406:根据所述估计模型计算数据面最大转发性能;
161.其中,可以根据估计模型计算当前环境、当前数据包大小依赖下的数据面的最大转发性能。
162.图7为本技术实施例一种数据面极限性能估计模型的应用方法的流程示意图,参见图7,所述步骤406包括以下步骤701至步骤709:
163.步骤701:开始;
164.步骤702:判断当前数据面是否发生丢包;
165.如果发生丢包,执行步骤703;否则,执行步骤704;
166.步骤703:产生丢包告警;
167.步骤704:计算当前数据面接收的所有数据包平均大小;
168.步骤705:根据估计模型估计数据面极限性能;
169.其中,可以向步骤605中训练的回归模型中输入当前数据面接收的数据包平均大小,并根据回归模型计算出结果,将结果作为数据面当前的极限转发性能;
170.步骤706:统计当前数据面接收的实际吞吐大小;
171.步骤707:如果实际吞吐大小超过步骤705中估计得到的数据面极限转发性能乘以一定阈值(该阈值为0到1的值,比如可以设置为80%),则执行步骤708;否则,执行步骤709;
172.步骤708:产生数据面性能不足告警;
173.步骤709:结束。
174.步骤407:输出估计的数据面最大转发性能;
175.其中,可以将估计得到的数据面极限性能输出,作为断网、卡慢问题发生时评估数据面转发性能不足的依据。用户可以根据产生的数据面性能不足告警提前做出调整,从而避免因性能不足导致网络卡慢、中断等问题的发生。
176.步骤408:结束。
177.本技术实施例可以指导数据面开发和研究人员进行更合理的压测。
178.借助一些时序预测技术,可以预测未来时刻数据面接收的吞吐和数据包大小,并结合本技术提出的数据面极限转发性能估计模型,从而能够预测未来数据面是否可能存在性能不足问题。
179.基于前述的实施例,本技术实施例提供一种数据提醒装置,该装置包括所包括的各模块,可以通过设备中的处理器来实现;当然也可通过具体的逻辑电路实现;在实施的过程中,处理器可以为中央处理器(cpu,central processing unit)、微处理器(mpu,microprocessor unit)、数字信号处理器(dsp,digital signal processing)或现场可编程门阵列(fpga,field programmable gate array)等。
180.图8为本技术实施例一种数据提醒装置的组成结构示意图,如图8所示,所述装置800包括第一获取模块801、第一确定模块802、第二确定模块803、第三确定模块804和告警模块805,其中:
181.第一获取模块801,用于获取所述数据面在第一时段中接收到的至少两个数据包;
182.第一确定模块802,用于基于每一所述数据包的大小和估计模型,确定所述数据面的吞吐量的估计值;所述估计模型是利用数据包的大小和对应的数据面的吞吐量的有效值
对初始模型进行训练得到的;所述数据面的吞吐量的有效值用于表征数据包的大小对应的所述数据面的极限转发性能;
183.第二确定模块803,用于基于每一所述数据包的大小,确定所述数据面的吞吐量的实际值;
184.第三确定模块804,用于基于所述数据面的吞吐量的估计值与实际值,确定所述数据面的转发性能;
185.告警模块805,用于在所述数据面的转发性能为不足的情况下,输出所述数据面的第一提示信息。
186.在一个实施例中,所述第一确定模块802,包括:第一确定子模块,用于基于每一所述数据包的大小,确定所述至少两个数据包的平均数据包大小;第二确定子模块,用于根据所述平均数据包大小和估计模型,确定所述数据面的吞吐量的估计值。
187.在一个实施例中,所述第三确定模块804,包括:第三确定子模块,用于在所述数据面的吞吐量的估计值与实际值之间的关系为所述数据面的吞吐量的估计值与所述数据面的吞吐量的实际值之间的差值大于所述第一阈值的情况下,确定所述数据面的转发性能为充足;第四确定子模块,用于在所述数据面的吞吐量的估计值与实际值之间的关系为所述数据面的吞吐量的估计值与所述数据面的吞吐量的实际值之间的差值不大于所述第一阈值的情况下,确定所述数据面的转发性能为不足。
188.在一个实施例中,所述装置还包括:第五确定模块,用于在确定不存在所述估计模型的情况下,确定所述数据面独占的运算单元的核的数量和所述数据面非独占的运算单元的核的数量;其中,所述数据面独占的运算单元的核完全用于所述数据面转发数据包;所述数据面非独占的运算单元的核部分用于所述数据面转发数据包;第六确定模块,用于根据所述数据面独占的运算单元的核的数量、所述数据面非独占的运算单元的核的数量、预设的第一吞吐量、预设的第二系数以及预设的内存带宽,确定所述数据面的吞吐量的估计值;所述第一吞吐量为数据面独占运算单元的核的情况下,所述数据面的最大吞吐量。
189.在一个实施例中,所述第六确定模块,包括:第五确定子模块,用于根据预设的第一吞吐量、所述数据面独占的运算单元的核的数量,确定所述数据面的第二吞吐量;第六确定子模块,用于根据所述第一吞吐量、所述数据面非独占的运算单元的核的数量以及预设的第二系数,确定所述数据面的第三吞吐量;第七确定子模块,用于根据所述第二吞吐量、所述第三吞吐量以及预设的内存带宽,确定所述数据面的吞吐量的估计值。
190.在一个实施例中,所述第七确定子模块,包括:第一确定单元,用于确定所述第二吞吐量和所述第三吞吐量的累加和;第二确定单元,用于在所述累加和大于所述内存带宽的情况下,将所述内存带宽确定为所述数据面的吞吐量的估计值;第三确定单元,用于在所述累加和不大于所述内存带宽的情况下,将所述累加和确定为所述数据面的吞吐量的估计值。
191.在一个实施例中,所述装置还包括:第二获取模块,用于在确定所述数据面发生丢包的情况下,获取所述数据面在第二时段至少一次中每次接收到的至少两个数据包;所述第二时段早于所述第一时段;第七确定模块,用于基于每次中每一所述数据包的大小,确定每次所述数据面的吞吐量的实际值;第八确定模块,用于确定每次所述数据面的丢包率;第九确定模块,用于根据每次每一所述数据包的大小、对应次所述数据面的吞吐量的实际值、
所述数据面的丢包率以及所述初始模型,确定所述估计模型。
192.在一个实施例中,所述第九确定模块,包括:第八确定子模块,用于根据每次每一所述数据包的大小,确定所述数据面每次接收到的所述至少两个数据包的平均数据包大小;第九确定子模块,用于根据每次所述数据面的吞吐量的实际值和所述数据面的丢包率,确定对应次所述数据面的吞吐量的有效值;训练子模块,用于利用所述至少一次中每次的所述平均数据包大小和对应次的所述数据面的吞吐量的有效值,对所述初始模型进行训练,得到所述估计模型。
193.在一个实施例中,所述装置还包括:输出模块,用于在确定所述数据面发生丢包的情况下,输出第二提示信息,所述第二提示信息用于提示所述数据面发生丢包。
194.以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本技术装置实施例中未披露的技术细节,请参照本技术方法实施例的描述而理解。
195.对应地,本技术实施例提供一种电子设备,图9为本技术实施例电子设备的一种硬件实体示意图,如图9所示,该电子设备900的硬件实体包括:包括存储器901和处理器902,所述存储器901存储有可在处理器902上运行的计算机程序,所述处理器902执行所述程序时实现上述实施例数据提醒方法中的步骤。
196.存储器901配置为存储由处理器902可执行的指令和应用,还可以缓存待处理器902以及设备900中各模块待处理或已经处理的数据(例如,图像数据、音频数据、语音通信数据和视频通信数据),可以通过闪存(flash)或随机访问存储器(random access memory,ram)实现。
197.对应地,本技术实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中提供的数据提醒方法中的步骤。
198.这里需要指出的是:以上存储介质和设备实施例的描述,与上述方法实施例的描述是类似的,具有同设备实施例相似的有益效果。对于本技术存储介质和方法实施例中未披露的技术细节,请参照本技术设备实施例的描述而理解。
199.应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本技术的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本技术的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。上述本技术实施例序号仅仅为了描述,不代表实施例的优劣。
200.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
201.在本技术所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为
一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
202.上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。另外,在本技术各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
203.本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(read only memory,rom)、磁碟或者光盘等各种可以存储程序代码的介质。或者,本技术上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得计算机设备(可以是手机、平板电脑、台式机、个人数字助理、导航仪、数字电话、视频电话、电视机、传感设备等)执行本技术各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、rom、磁碟或者光盘等各种可以存储程序代码的介质。
204.本技术所提供的几个方法实施例中所揭露的方法,在不冲突的情况下可以任意组合,得到新的方法实施例。本技术所提供的几个产品实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的产品实施例。本技术所提供的几个方法或设备实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的方法实施例或设备实施例。
205.以上所述,仅为本技术的实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。
转载请注明原文地址:https://win.8miu.com/read-1058702.html