CN115756143B - 数据包处理的节能方法、装置、计算机设备和存储介质 - Google Patents
数据包处理的节能方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN115756143B CN115756143B CN202211519338.9A CN202211519338A CN115756143B CN 115756143 B CN115756143 B CN 115756143B CN 202211519338 A CN202211519338 A CN 202211519338A CN 115756143 B CN115756143 B CN 115756143B
- Authority
- CN
- China
- Prior art keywords
- thread
- target
- dormancy
- target thread
- interface
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000012545 processing Methods 0.000 title claims abstract description 63
- 238000000034 method Methods 0.000 title claims abstract description 52
- 230000005059 dormancy Effects 0.000 claims abstract description 117
- 238000004140 cleaning Methods 0.000 claims abstract description 33
- 230000002618 waking effect Effects 0.000 claims abstract description 28
- 230000007958 sleep Effects 0.000 claims description 66
- 230000004622 sleep time Effects 0.000 claims description 32
- 238000004590 computer program Methods 0.000 claims description 19
- 238000013507 mapping Methods 0.000 claims description 9
- 230000036578 sleeping time Effects 0.000 claims 2
- 230000008569 process Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 8
- 230000009977 dual effect Effects 0.000 description 7
- 230000000694 effects Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000000903 blocking effect Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 206010062519 Poor quality sleep Diseases 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 208000019116 sleep disease Diseases 0.000 description 1
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请涉及一种数据包处理的节能方法、装置、计算机设备和存储介质。所述方法包括:当目标线程对应的队列的空轮询次数大于轮询阈值时,则确定所述目标线程对应的队列为空闲状态,且基于所述空轮询次数生成对应的休眠预估值;所述目标线程包括收包线程、工作线程、发包线程或清理线程中的至少一个;当所有的队列为空闲状态时,在各所述队列对应的休眠预估值中选取最小值作为休眠时间;依据所述休眠时间对所述目标线程进行休眠;当目标数据包到达所述UPF的网卡时,唤醒所述目标线程,依据唤醒的目标线程以及未进入休眠状态的目标线程对所述目标数据包进行处理。采用本方法能够提高网络资源的利用率。
Description
技术领域
本申请涉及5G技术领域,特别是涉及一种数据包处理的节能方法、装置、计算机设备和存储介质。
背景技术
由于网络的潮汐效应,UPF(User Plane Function,用户面功能)网元不总是工作在最大负载下,UPF基于NFF-GO框架运行,主要采用的是DPDK(Data Plane DevelopmentKit,数据平面开发套件)的pipeline模型,也就是不同的核进行不同的包处理事务,通过对不同处理模块的连接,来实现复杂的网络功能的构建。
在轮询模式下,UPF一般是使用两张网卡,至少使用7个核,CPU 700%满负载运行。在这些核上所运行的功能分别是收包,处理,发包和内存清理。在低流量场景下,CPU负载的情况并不会随着网络负载而动态变化,故而存在网络资源利用率不高的问题。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高网络资源利用率的数据包处理的节能方法、装置、计算机设备和计算机可读存储介质。
第一方面,本申请提供了一种数据包处理的节能方法。应用于5G核心网的UPF;所述方法包括:
当目标线程对应的队列的空轮询次数大于轮询阈值时,则确定所述目标线程对应的队列为空闲状态,且基于所述空轮询次数生成对应的休眠预估值;所述目标线程包括收包线程、工作线程、发包线程或清理线程中的至少一个;
当所有的队列为空闲状态时,在各所述队列对应的休眠预估值中选取最小值作为休眠时间;
依据所述休眠时间对所述目标线程进行休眠;
当目标数据包到达所述UPF的网卡时,唤醒所述目标线程,依据唤醒的目标线程以及未进入休眠状态的目标线程对所述目标数据包进行处理。
在其中一个实施例中,所述依据所述休眠时间对所述目标线程进行休眠包括:
当所述休眠时间小于休眠阈值时,则所述目标线程依据所述休眠时间进行休眠;
当所述休眠时间大于或等于所述休眠阈值时,则所述目标线程依据所述休眠时间进行休眠;
所述方法还包括:当所述休眠时间小于休眠阈值、且所述目标线程进入休眠状态时,不释放对CPU的占用;
当所述休眠时间大于或等于所述休眠阈值、且所述目标线程进入休眠状态时,释放对所述CPU的占用。
在其中一个实施例中,所述依据所述休眠时间对所述目标线程进行休眠包括:
若所述目标线程为所述工作线程,则当所述收包线程为休眠状态、且所述目标线程对应的队列为空闲状态时,依据所述休眠时间对所述目标线程进行休眠;
若所述目标线程为所述发包线程,则当所述工作线程为休眠状态,且所述目标线程对应的队列为空闲状态时,依据所述休眠时间对所述目标线程进行休眠。
在其中一个实施例中,所述唤醒所述目标线程包括:
唤醒所述收包线程;
通过所述收包线程唤醒所述工作线程和所述清理线程;
通过所述工作线程唤醒所述发包线程。
在其中一个实施例中,所述UPF包括N3接口和N6接口;所述唤醒所述目标线程包括:
当所述UPF配置的网卡为双网卡时,所述N3接口或所述N6接口对应的工作线程分别实时监听所述N3接口或所述N6接口对应的收包线程;
当所述N3接口或所述N6接口对应的收包线程被唤醒时,通过所述N3接口或所述N6接口对应的收包线程唤醒所述N3接口或所述N6接口对应的工作线程,并通过所述N3接口或所述N6接口对应的工作线程唤醒所述N6接口或所述N3接口对应的发包线程。
在其中一个实施例中,所述依据所述休眠时间对所述目标线程进行休眠包括:
对所述目标线程对应的目标管道进行读操作,若所读的内容为空,则依据所述休眠时间对所述目标线程进行休眠;
所述唤醒所述目标线程包括:
在对所述目标线程对应的目标管道写入一个目标字节后,若通过所述目标线程读取所述目标字节,则唤醒所述目标线程。
在其中一个实施例中,所述方法还包括:
当所述目标线程进入休眠状态时,获取休眠状态对应的第一全局变量值,并依据所述第一全局变量值对状态全局变量进行更新;
当所述目标线程被唤醒时,获取工作状态对应的第二全局变量值,并依据所述第二全局变量值对所述状态全局变量进行更新。
第二方面,本申请还提供了一种数据包处理的节能装置。所述装置包括:
确定与生成模块,用于当目标线程对应的队列的空轮询次数大于轮询阈值时,则确定所述目标线程对应的队列为空闲状态,且基于所述空轮询次数生成对应的休眠预估值;所述目标线程包括收包线程、工作线程、发包线程或清理线程中的至少一个;
选取模块,用于当所有的队列为空闲状态时,在各所述队列对应的休眠预估值中选取最小值作为休眠时间;
休眠模块,用于依据所述休眠时间对所述目标线程进行休眠;
唤醒与处理模块,用于当目标数据包到达所述UPF的网卡时,唤醒所述目标线程,依据唤醒的目标线程以及未进入休眠状态的目标线程对所述目标数据包进行处理。
在其中一个实施例中,所述休眠模块还用于当所述休眠时间小于休眠阈值时,则所述目标线程依据所述休眠时间进行休眠;当所述休眠时间大于或等于所述休眠阈值时,则所述目标线程依据所述休眠时间进行休眠;当所述休眠时间小于休眠阈值、且所述目标线程进入休眠状态时,不释放对CPU的占用;当所述休眠时间大于或等于所述休眠阈值、且所述目标线程进入休眠状态时,释放对所述CPU的占用。
在其中一个实施例中,所述休眠模块还用于若所述目标线程为所述工作线程,则当所述收包线程为休眠状态、且所述目标线程对应的队列为空闲状态时,依据所述休眠时间对所述目标线程进行休眠;若所述目标线程为所述发包线程,则当所述工作线程为休眠状态,且所述目标线程对应的队列为空闲状态时,依据所述休眠时间对所述目标线程进行休眠。
在其中一个实施例中,所述唤醒与处理模块还用于唤醒所述收包线程;通过所述收包线程唤醒所述工作线程和所述清理线程;通过所述工作线程唤醒所述发包线程。
在其中一个实施例中,所述UPF包括N3接口和N6接口;所述唤醒与处理模块还用于当所述UPF配置的网卡为双网卡时,所述N3接口或所述N6接口对应的工作线程分别实时监听所述N3接口或所述N6接口对应的收包线程;当所述N3接口或所述N6接口对应的收包线程被唤醒时,通过所述N3接口或所述N6接口对应的收包线程唤醒所述N3接口或所述N6接口对应的工作线程,并通过所述N3接口或所述N6接口对应的工作线程唤醒所述N6接口或所述N3接口对应的发包线程。
在其中一个实施例中,所述休眠模块还用于对所述目标线程对应的目标管道进行读操作,若所读的内容为空,则依据所述休眠时间对所述目标线程进行休眠;所述唤醒与处理模块还用于在对所述目标线程对应的目标管道写入一个目标字节后,若通过所述目标线程读取所述目标字节,则唤醒所述目标线程。
在其中一个实施例中,所述装置还包括:
更新模块,用于当所述目标线程进入休眠状态时,获取休眠状态对应的第一全局变量值,并依据所述第一全局变量值对状态全局变量进行更新;当所述目标线程被唤醒时,获取工作状态对应的第二全局变量值,并依据所述第二全局变量值对所述状态全局变量进行更新。
第三方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤。
第四方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述方法的步骤。
第五方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述方法的步骤。
上述数据包处理的节能方法、装置、计算机设备和存储介质,通过当目标线程对应的队列的空轮询次数大于轮询阈值时,则确定目标线程对应的队列为空闲状态,且基于空轮询次数生成对应的休眠预估值;目标线程包括收包线程、工作线程、发包线程或清理线程中的至少一个;当所有的队列为空闲状态时,在各队列对应的休眠预估值中选取最小值作为休眠时间;依据休眠时间对目标线程进行休眠;当目标数据包到达UPF的网卡时,唤醒目标线程,依据唤醒的目标线程以及未进入休眠状态的目标线程对目标数据包进行处理。实现了一种UPF处理数据包的节能模式,当目标线程对应的队列都处于空闲状态时,则对目标线程进行休眠,当来数据包时,又唤醒目标线程来处理数据包,通过对UPF应用此节能模式,有效提升了网络资源的利用率。
附图说明
图1为一个实施例中数据包处理的节能方法的应用环境图;
图2为一个实施例中数据包处理的节能方法的流程示意图;
图3为一个实施例中双网卡下的数据包的转发示意图;
图4为一个实施例中唤醒目标线程的步骤的流程示意图;
图5为一个实施例中数据包处理的节能装置的结构框图;
图6为另一个实施例中数据包处理的节能装置的结构框图;
图7为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请实施例提供的数据包处理的节能方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104进行通信。数据存储系统可以存储服务器104需要处理的数据。数据存储系统可以集成在服务器104上,也可以放在云上或其他网络服务器上。本申请可由终端102或服务器104执行。需指出的是,5G核心网中的UPF可以是服务器104中的软件模块,本实施例以服务器104执行为例进行说明。
当目标线程对应的队列的空轮询次数大于轮询阈值时,服务器104中的UPF则确定目标线程对应的队列为空闲状态,且基于空轮询次数生成对应的休眠预估值;目标线程包括收包线程、工作线程、发包线程或清理线程中的至少一个;当所有的队列为空闲状态时,服务器104中的UPF在各队列对应的休眠预估值中选取最小值作为休眠时间;服务器104中的UPF依据休眠时间对目标线程进行休眠;当目标数据包到达UPF的网卡时,服务器104中的UPF唤醒目标线程,依据唤醒的目标线程以及未进入休眠状态的目标线程对目标数据包进行处理。
其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑、物联网设备和便携式可穿戴设备,物联网设备可为智能音箱、智能电视、智能空调、智能车载设备等。便携式可穿戴设备可为智能手表、智能手环、头戴设备等。服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种数据包处理的节能方法,以该方法应用于图1中的服务器104为例进行说明,包括以下步骤:
S202,当目标线程对应的队列的空轮询次数大于轮询阈值时,则确定目标线程对应的队列为空闲状态,且基于空轮询次数生成对应的休眠预估值;目标线程包括收包线程、工作线程、发包线程或清理线程中的至少一个。
其中,目标线程可以指用于与处理数据包相关的线程,目标线程包括收包线程、工作线程、发包线程和清理线程但不限于以上四种线程,目标线程也可以是其他的与处理数据包相关的线程。收包线程可以指用于接收数据包的线程。工作线程可以指用于数据包中的内容进行处理的线程。发包线程可以指用于转发数据包的线程。清理线程可以指用于对内存进行清理的线程。
图3为一个实施例中双网卡下的数据包的转发示意图;如图3所示,当UPF在双网卡的情况下,可以是对N3接口配置对应的收包线程、工作线程和发包线程;对N6接口配置对应的收包线程、工作线程和发包线程,在UPF处理上行的数据包时,可由N3接口的收包线程和工作线程,N6接口的发包线程依次处理;在UPF处理下行的数据包时,可由N6接口的收包线程和工作线程,N3接口的发包线程依次处理。
队列可以指目标线程对应的队列。轮询次数可以指UPF对目标线程对应的队列进行轮询的次数。空轮询可以指轮询收到的内容为空,例如轮询收到的包个数为0。空轮询次数可以指空轮询的数量,例如,轮询次数为10,空轮询次数为8。轮询阈值可以指用于判断空轮询次数的阈值,例如,轮询阈值可以为12次。空闲状态可以指队列中没有包的状态,包可指数据包。休眠预估值可以指对休眠时间的估计值。
在一个实施例中,基于空轮询次数生成对应的休眠预估值包括UPF可以依据空轮询次数获取休眠映射表,在休眠映射表中读取与空轮询次数对应的休眠预估值。
其中,休眠映射表可以指用于反映空轮询次数与休眠预估值之间的对应关系。
S204,当所有的队列为空闲状态时,在各队列对应的休眠预估值中选取最小值作为休眠时间。
其中,休眠时间可以指线程维持休眠状态的时间。
S206,依据休眠时间对目标线程进行休眠。
在一个实施例中,当休眠时间小于休眠阈值时,则目标线程依据休眠时间进行休眠;当休眠时间大于或等于休眠阈值时,则目标线程依据休眠时间进行休眠;当休眠时间小于休眠阈值、且目标线程进入休眠状态时,不释放对CPU的占用;当休眠时间大于或等于休眠阈值、且目标线程进入休眠状态时,释放对CPU的占用。
其中,休眠阈值可以指用于判断休眠时间的阈值,例如,休眠阈值可为30秒。休眠状态可以指中断轮询的状态。
在一个实施例中,若目标线程为工作线程,则当收包线程为休眠状态、且目标线程对应的队列为空闲状态时,依据休眠时间对目标线程进行休眠;若目标线程为发包线程,则当工作线程为休眠状态,且目标线程对应的队列为空闲状态时,依据休眠时间对目标线程进行休眠。
在一个实施例中,若目标线程为收包线程,则当目标线程对应的队列为空闲状态时,依据休眠时间对目标线程进行休眠。
S208,当目标数据包到达UPF的网卡时,唤醒目标线程,依据唤醒的目标线程以及未进入休眠状态的目标线程对目标数据包进行处理。
其中,目标数据包可以指网卡可以指接口绑定的网卡,例如N3接口绑定的网卡。双网卡可以指两张网卡,例如,UPF配置的网卡为双网卡可以指N3接口和N6接口分别配置一张网卡,即N3接口含有对应的收包线程、工作线程和发包线程;N6接口含有对应的收包线程、工作线程和发包线程。
在一个实施例中,依据唤醒的目标线程以及未进入休眠状态的目标线程对目标数据包进行处理包括当唤醒的目标线程为收包线程和工作线程,以及未进入休眠状态的目标线程为发包线程和清理线程时,或当唤醒的目标线程为收包线程,以及未进入休眠状态的目标线程为发包线程、工作线程和清理线程时,依据收包线程、工作线程、发包线程和清理线程依次对目标数据包进行处理。
在一个实施例中,当收包线程、工作线程、发包线程和清理线程都处于休眠状态时,即不存在未进入休眠状态的目标线程时,则唤醒的目标线程为收包线程、工作线程、发包线程和清理线程,依据收包线程、工作线程、发包线程和清理线程依次对目标数据包进行处理。
在一个实施例中,UPF包括N3接口和N6接口;当UPF配置的网卡为双网卡时,N3接口或N6接口对应的工作线程分别实时监听N3接口或N6接口对应的收包线程;当N3接口或N6接口对应的收包线程被唤醒时,通过N3接口或N6接口对应的收包线程唤醒N3接口或N6接口对应的工作线程,并通过N3接口或N6接口对应的工作线程唤醒N6接口或N3接口对应的发包线程。
在一个实施例中,当UPF配置的网卡为双网卡时,依据收包线程、工作线程、发包线程和清理线程依次对目标数据包进行处理包括当目标数据包为上行数据包时,依据清理线程、N3接口的收包线程和工作线程,N6接口的发包线程对上行数据包进行处理;当目标数据包为下行数据包时,依据清理线程、N6接口的收包线程和工作线程,N3接口的发包线程对上行数据包进行处理。
在一个实施例中,当UPF配置的网卡为单网卡时,依据UPF中的收包线程、工作线程、发包线程和清理线程对目标数据包进行处理。
在一个实施例中,对目标线程对应的目标管道进行读操作,若所读的内容为空,则依据休眠时间对目标线程进行休眠;在对目标线程对应的目标管道写入一个目标字节后,若通过目标线程读取目标字节,则唤醒目标线程。
其中,目标管道可以指目标线程对应的管道,例如,收包线程、工作线程、发包线程和清理线程分别对应一个管道。目标字节可以指向目标管道写入或读出的字节。
在一个实施例中,当目标线程进入休眠状态时,获取休眠状态对应的第一全局变量值,并依据第一全局变量值对状态全局变量进行更新;当目标线程被唤醒时,获取工作状态对应的第二全局变量值,并依据第二全局变量值对状态全局变量进行更新。
其中,状态全局变量可以指用于表示目标线程当前状态的全局变量。第一全局变量值可以指休眠状态对应的全局变量值。工作状态可以指线程运行的状态。第二全局变量值可以指被唤醒时对应的全局变量值。
上述数据包处理的节能方法中,通过当目标线程对应的队列的空轮询次数大于轮询阈值时,则确定目标线程对应的队列为空闲状态,且基于空轮询次数生成对应的休眠预估值;目标线程包括收包线程、工作线程、发包线程或清理线程中的至少一个;当所有的队列为空闲状态时,在各队列对应的休眠预估值中选取最小值作为休眠时间;依据休眠时间对目标线程进行休眠;当目标数据包到达UPF的网卡时,唤醒目标线程,依据唤醒的目标线程以及未进入休眠状态的目标线程对目标数据包进行处理。实现了一种UPF处理数据包的节能模式,当目标线程对应的队列都处于空闲状态时,则对目标线程进行休眠,当来数据包时,又唤醒目标线程来处理数据包,通过对UPF应用此节能模式,有效提升了网络资源的利用率。
在一个实施例中,如图4所示,唤醒目标线程步骤包括:
S402,唤醒收包线程。
具体地,UPF可以将收包线程从休眠状态中唤醒。
S404,通过收包线程唤醒工作线程和清理线程。
具体地,UPF通过收包线程生成唤醒提示消息,依据唤醒提示消息唤醒工作线程和清理线程。
其中,唤醒提示消息可用于唤醒目标线程。
S406,通过工作线程唤醒发包线程。
具体地,UPF通过工作线程生成唤醒提示消息,依据唤醒提示消息唤醒发包线程。
本实施例中,通过唤醒收包线程,通过收包线程唤醒工作线程和清理线程,通过工作线程唤醒发包线程。能够到达高效唤醒目标线程,以便后续对目标数据包进行处理。
作为一个示例,本实例如下:
一、UPF节能的休眠策略具体如下:
1.在收包的loop程序中,节能的具体的休眠逻辑可以用下面的伪代码表示定义一个数组来记录每个队列的空轮询次数;
定义一个数组来记录每个队列的休眠时间;
While(没有接收到退出通知){
定义一个变量记录处于空闲状态的队列数量;
For(对于所有的启动的队列){
从队列中收包并得到收包个数;
如果(收包的个数为零){
对应的队列的空轮询次数加一;
如果(该队列的空轮询次数超过了设定的轮询阈值){
基于空轮询次数为这个队列产生一个休眠预估值,
这个值是预估的,也就是说在休眠时间内,包是有可能达到网卡的;
表示空闲状态的队列数量计数加一;}}
否则{对应队列的空轮询次数置为零;}}
如果(所有的队列都处于空闲状态){
查找所有空闲的队列中的最小值,把这个值作为此次的休眠时间;
否则(如果休眠时间小于预设的休眠阈值){
只做短暂的休息,不释放对CPU的占用,有包来的时候可以迅速恢复转发性能}
否则{更新自己的工作状态为休眠;
开启网卡中断;
进入到睡眠的状态,睡眠之后需要通过数据包中断来唤醒;
关闭网卡中断;
此时收包中断信号,被唤醒,更新自己的状态为工作状态;
唤醒工作线程;
唤醒清理线程;}}}
二、UPF各个工作线程的描述:
1.一般情况下作为数据面转发的UPF需要绑定两个网卡,启动7个工作线程,工作线程之间通过队列传递数据包,N3的工作线程为上行数据包处理流程,N6的工作线程为下行数据包处理流程。
2.默认情况下,UE(用户终端)的上行数据包从N3接口接收,去掉GTP包头后从N6接口发出,下行把从N6接口接收,添加GTP包头之后从N3接口发出。
三、.节能模式下各工作线程通知与协作机制:
1.数据包到达网卡之后,会发出硬件中断,通知CPU处理数据包,dpdk的中断处理程序会对epoll监听的文件进行写操作,收包线程被唤醒。
2.收包线程被唤醒之后会通知工作线程与内存清理线程。
3.工作线程被唤醒,在唤醒的通知也会唤醒发包线程。
4.工作线程被唤醒之后会不断地轮询收包线程的工作状态,当收包线程处于休眠的状态并且自己的队列处于空闲状态的时候,工作线程才会去休眠。
5.发包线程在被唤醒之后会不断到轮询工作线程的工作状态,当工作线程处于休眠的状态并且自己的队列处于空闲状态的时候,发包线程才会去休眠。
6.在双网卡的情况下,N3接口的工作线程监听N3接口的收包线程的工作状态,在自己被唤醒的同时唤醒N6接口的发包线程,N6接口的工作线程监听N6接口收包线程的工作状态,在自己被唤醒的同时唤醒N3接口的发包线程。
7.这样可以保证一个数据包到来之后是可以被连续处理的,而不会阻塞在其中的某一个环节。
四.、通知与协作机制的具体实现:
1.使用Linux的匿名管道pipe的读阻塞作为各线程同步的具体实现。
2.程序初始化时,会为每一个工作线程创建一个管道,写操作非阻塞,而读操作是阻塞的。
3.当需要通知一个线程的时候,就向对应工作线程的管道中写入一个字节,原来阻塞的工作线程在读取一个字节后返回,结束休眠状态。
4.当一个线程需要休眠的时候,就对该管道文件进行读操作,如果此时管道内容为空,线程被挂起,CPU资源被释放。
5.每一个线程都维护了一个状态全局变量,来表示线程的工作状态,线程休眠或者唤醒的时候需要对工作状态进行更新。
注:1.UPF基于NFF-GO框架进行二次开发,在此基础上实现数据面的转发,而网口收包采用的是轮询的方式,而要实现的节能的效果,就需要将网口收包的方式从轮询切换为中断,转换为基于数据包触发的事件驱动模型。
2.运行在收包核上的loop程序需要进行统计空轮询的次数,以便在没有数据包到来时候主动进入到休眠的状态。
3.运行在收包核上的loop程序的休眠策略调用了DPDK节能库的休眠策略的库函数,在轮询过程中,维护了一个空轮询的计数,依据空轮询的次数来动态调整休眠的时间,如在空轮询次数较低的情况下,只进行短暂的浅睡眠,而空轮询次数到达一定的阈值之后,则进行深度睡眠,这个时候只能由中断触发进行唤醒,这样做可以在降低能耗的前提下,尽可能降低包处理的唤醒时长。
4.NFF-GO采用了多核协作的机制,如果仅仅只是对收包的核进行节能处理,节能的效果并不明显,因此需要把工作,或者休眠的状态信息中同步到其他的工作核中,使得其他的核(处理,发包,以及内存清理)的工作状态可以和收包的核保持同步。通过一种通知机制,有包来的时候,所有的工作核一起起来工作,而没有包到来的时候,有可以一起进入到休眠的状态中,从而从整体上达到节能的效果。
应该理解的是,虽然如上的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的数据包处理的节能方法的数据包处理的节能装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个数据包处理的节能装置实施例中的具体限定可以参见上文中对于数据包处理的节能方法的限定,在此不再赘述。
在一个实施例中,如图5所示,提供了一种数据包处理的节能装置,包括:确定与生成模块502、选取模块504、休眠模块506和唤醒与处理模块508,其中:
确定与生成模块502,用于当目标线程对应的队列的空轮询次数大于轮询阈值时,则确定目标线程对应的队列为空闲状态,且基于空轮询次数生成对应的休眠预估值;目标线程包括收包线程、工作线程、发包线程或清理线程中的至少一个;
选取模块504,用于当所有的队列为空闲状态时,在各队列对应的休眠预估值中选取最小值作为休眠时间;
休眠模块506,用于依据休眠时间对目标线程进行休眠;
唤醒与处理模块508,用于当目标数据包到达UPF的网卡时,唤醒目标线程,依据唤醒的目标线程以及未进入休眠状态的目标线程对目标数据包进行处理。
在一个实施例中,休眠模块506还用于当休眠时间小于休眠阈值时,则目标线程依据休眠时间进行休眠;当休眠时间大于或等于休眠阈值时,则目标线程依据休眠时间进行休眠;当休眠时间小于休眠阈值、且目标线程进入休眠状态时,不释放对CPU的占用;当休眠时间大于或等于休眠阈值、且目标线程进入休眠状态时,释放对CPU的占用。
在一个实施例中,休眠模块506还用于若目标线程为工作线程,则当收包线程为休眠状态、且目标线程对应的队列为空闲状态时,依据休眠时间对目标线程进行休眠;若目标线程为发包线程,则当工作线程为休眠状态,且目标线程对应的队列为空闲状态时,依据休眠时间对目标线程进行休眠。
在一个实施例中,唤醒与处理模块508还用于唤醒收包线程;通过收包线程唤醒工作线程和清理线程;通过工作线程唤醒发包线程。
在一个实施例中,UPF包括N3接口和N6接口;唤醒与处理模块508还用于当UPF配置的网卡为双网卡时,N3接口或N6接口对应的工作线程分别实时监听N3接口或N6接口对应的收包线程;当N3接口或N6接口对应的收包线程被唤醒时,通过N3接口或N6接口对应的收包线程唤醒N3接口或N6接口对应的工作线程,并通过N3接口或N6接口对应的工作线程唤醒N6接口或N3接口对应的发包线程。
在一个实施例中,休眠模块506还用于对目标线程对应的目标管道进行读操作,若所读的内容为空,则依据休眠时间对目标线程进行休眠;唤醒与处理模块还用于在对目标线程对应的目标管道写入一个目标字节后,若通过目标线程读取目标字节,则唤醒目标线程。
在一个实施例中,如图6所示,该数据包处理的节能装置还包括:
更新模块510,用于当目标线程进入休眠状态时,获取休眠状态对应的第一全局变量值,并依据第一全局变量值对状态全局变量进行更新;当目标线程被唤醒时,获取工作状态对应的第二全局变量值,并依据第二全局变量值对状态全局变量进行更新。
上述实施例,通过当目标线程对应的队列的空轮询次数大于轮询阈值时,则确定目标线程对应的队列为空闲状态,且基于空轮询次数生成对应的休眠预估值;目标线程包括收包线程、工作线程、发包线程或清理线程中的至少一个;当所有的队列为空闲状态时,在各队列对应的休眠预估值中选取最小值作为休眠时间;依据休眠时间对目标线程进行休眠;当目标数据包到达UPF的网卡时,唤醒目标线程,依据唤醒的目标线程以及未进入休眠状态的目标线程对目标数据包进行处理。实现了一种UPF处理数据包的节能模式,当目标线程对应的队列都处于空闲状态时,则对目标线程进行休眠,当来数据包时,又唤醒目标线程来处理数据包,通过对UPF应用此节能模式,有效提升了网络资源的利用率。
上述数据包处理的节能装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图7所示。该计算机设备包括处理器、存储器、输入/输出接口(Input/Output,简称I/O)和通信接口。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储数据包处理的节能数据。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据包处理的节能方法。
本领域技术人员可以理解,图7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各实施例。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述各实施例。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各实施例。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (10)
1.一种数据包处理的节能方法,其特征在于,应用于5G核心网的UPF;所述方法包括:
当目标线程对应的队列的空轮询次数大于轮询阈值时,则确定所述目标线程对应的队列为空闲状态,且基于所述空轮询次数生成对应的休眠预估值;所述目标线程包括收包线程、工作线程、发包线程或清理线程中的至少一个;其中,所述基于所述空轮询次数生成对应的休眠预估值,包括:依据所述空轮询次数获取休眠映射表;在所述休眠映射表中读取与所述空轮询次数对应的休眠预估值;所述休眠映射表用于反映所述空轮询次数与所述休眠预估值之间的对应关系;
当所有的队列为空闲状态时,在各所述队列对应的休眠预估值中选取最小值作为休眠时间;
依据所述休眠时间对所述目标线程进行休眠;
当所述所有的队列为空闲状态时,对所述所有的队列进行休眠,且保持所述所有的队列对CPU的占用;
当目标数据包到达所述UPF的网卡时,唤醒所述目标线程,依据唤醒的目标线程以及未进入休眠状态的目标线程对所述目标数据包进行处理;
其中,所述依据所述休眠时间对所述目标线程进行休眠,包括:若所述目标线程为工作线程,则当所述收包线程为休眠状态、且所述目标线程对应的队列为空闲状态时,依据所述休眠时间对所述目标线程进行休眠;若所述目标线程为所述发包线程,则当所述工作线程为休眠状态,且所述目标线程对应的队列为空闲状态时,依据所述休眠时间对所述目标线程进行休眠。
2.根据权利要求1所述的方法,其特征在于,所述依据所述休眠时间对所述目标线程进行休眠包括:
当所述休眠时间小于休眠阈值时,则所述目标线程依据所述休眠时间进行休眠;
当所述休眠时间大于或等于所述休眠阈值时,则所述目标线程依据所述休眠时间进行休眠;
所述方法还包括:当所述休眠时间小于休眠阈值、且所述目标线程进入休眠状态时,不释放对CPU的占用;
当所述休眠时间大于或等于所述休眠阈值、且所述目标线程进入休眠状态时,释放对所述CPU的占用。
3.根据权利要求1所述的方法,其特征在于,所述休眠状态指中断轮询的状态。
4.根据权利要求1所述的方法,其特征在于,所述唤醒所述目标线程包括:
唤醒所述收包线程;
通过所述收包线程唤醒所述工作线程和所述清理线程;
通过所述工作线程唤醒所述发包线程。
5.根据权利要求1所述的方法,其特征在于,所述UPF包括N3接口和N6接口;所述唤醒所述目标线程包括:
当所述UPF配置的网卡为双网卡时,所述N3接口或所述N6接口对应的工作线程分别实时监听所述N3接口或所述N6接口对应的收包线程;
当所述N3接口或所述N6接口对应的收包线程被唤醒时,通过所述N3接口或所述N6接口对应的收包线程唤醒所述N3接口或所述N6接口对应的工作线程,并通过所述N3接口或所述N6接口对应的工作线程唤醒所述N6接口或所述N3接口对应的发包线程。
6.根据权利要求1所述的方法,其特征在于,所述依据所述休眠时间对所述目标线程进行休眠包括:
对所述目标线程对应的目标管道进行读操作,若所读的内容为空,则依据所述休眠时间对所述目标线程进行休眠;
所述唤醒所述目标线程包括:
在对所述目标线程对应的目标管道写入一个目标字节后,若通过所述目标线程读取所述目标字节,则唤醒所述目标线程。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述目标线程进入休眠状态时,获取休眠状态对应的第一全局变量值,并依据所述第一全局变量值对状态全局变量进行更新;
当所述目标线程被唤醒时,获取工作状态对应的第二全局变量值,并依据所述第二全局变量值对所述状态全局变量进行更新。
8.一种数据包处理的节能装置,其特征在于,应用于5G核心网的UPF;所述装置包括:
确定与生成模块,用于当目标线程对应的队列的空轮询次数大于轮询阈值时,则确定所述目标线程对应的队列为空闲状态,且基于所述空轮询次数生成对应的休眠预估值;所述目标线程包括收包线程、工作线程、发包线程或清理线程中的至少一个;其中,所述基于所述空轮询次数生成对应的休眠预估值,包括:依据所述空轮询次数获取休眠映射表;在所述休眠映射表中读取与所述空轮询次数对应的休眠预估值;所述休眠映射表用于反映所述空轮询次数与所述休眠预估值之间的对应关系;
选取模块,用于当所有的队列为空闲状态时,在各所述队列对应的休眠预估值中选取最小值作为休眠时间;
休眠模块,用于依据所述休眠时间对所述目标线程进行休眠;当所述所有的队列为空闲状态时,对所述所有的队列进行休眠,且保持所述所有的队列对CPU的占用;其中,所述依据所述休眠时间对所述目标线程进行休眠,包括:若所述目标线程为工作线程,则当所述收包线程为休眠状态、且所述目标线程对应的队列为空闲状态时,依据所述休眠时间对所述目标线程进行休眠;若所述目标线程为所述发包线程,则当所述工作线程为休眠状态,且所述目标线程对应的队列为空闲状态时,依据所述休眠时间对所述目标线程进行休眠;
唤醒与处理模块,用于当目标数据包到达所述UPF的网卡时,唤醒所述目标线程,依据唤醒的目标线程以及未进入休眠状态的目标线程对所述目标数据包进行处理。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述的方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211519338.9A CN115756143B (zh) | 2022-11-30 | 2022-11-30 | 数据包处理的节能方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211519338.9A CN115756143B (zh) | 2022-11-30 | 2022-11-30 | 数据包处理的节能方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115756143A CN115756143A (zh) | 2023-03-07 |
CN115756143B true CN115756143B (zh) | 2024-03-12 |
Family
ID=85341084
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211519338.9A Active CN115756143B (zh) | 2022-11-30 | 2022-11-30 | 数据包处理的节能方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115756143B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116055230B (zh) * | 2023-03-28 | 2023-06-09 | 北京博上网络科技有限公司 | 一种dpdk睡眠时间控制方法及系统 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102695998A (zh) * | 2009-12-16 | 2012-09-26 | 高通股份有限公司 | 用于在虚拟化系统中控制中央处理单元功率的系统和方法 |
CN105027081A (zh) * | 2013-12-20 | 2015-11-04 | 华为技术有限公司 | 一种轮询和中断的切换方法及装置 |
CN105630576A (zh) * | 2015-12-23 | 2016-06-01 | 华为技术有限公司 | 一种虚拟化平台中的数据处理方法及装置 |
CN107005531A (zh) * | 2014-12-22 | 2017-08-01 | 英特尔公司 | 用于与处理在网络设备处接收到的分组相关联的功率管理的技术 |
CN109787777A (zh) * | 2017-11-10 | 2019-05-21 | 北京金山云网络技术有限公司 | 一种网卡模式切换方法、装置、电子设备及存储介质 |
CN110908495A (zh) * | 2018-09-14 | 2020-03-24 | 英特尔公司 | 使用硬件队列管理器的功率感知负荷平衡 |
CN112817772A (zh) * | 2019-11-15 | 2021-05-18 | 深信服科技股份有限公司 | 一种数据通信方法、装置、设备及存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8917742B2 (en) * | 2011-07-13 | 2014-12-23 | Microsoft Corporation | Mechanism to save system power using packet filtering by network interface |
WO2020194029A1 (en) * | 2019-03-25 | 2020-10-01 | Telefonaktiebolaget Lm Ericsson (Publ) | Optimizing runtime framework for efficient hardware utilization and power saving |
US11543877B2 (en) * | 2021-03-31 | 2023-01-03 | Advanced Micro Devices, Inc. | Low power state selection based on idle duration history |
-
2022
- 2022-11-30 CN CN202211519338.9A patent/CN115756143B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102695998A (zh) * | 2009-12-16 | 2012-09-26 | 高通股份有限公司 | 用于在虚拟化系统中控制中央处理单元功率的系统和方法 |
CN105027081A (zh) * | 2013-12-20 | 2015-11-04 | 华为技术有限公司 | 一种轮询和中断的切换方法及装置 |
CN107005531A (zh) * | 2014-12-22 | 2017-08-01 | 英特尔公司 | 用于与处理在网络设备处接收到的分组相关联的功率管理的技术 |
CN105630576A (zh) * | 2015-12-23 | 2016-06-01 | 华为技术有限公司 | 一种虚拟化平台中的数据处理方法及装置 |
CN109787777A (zh) * | 2017-11-10 | 2019-05-21 | 北京金山云网络技术有限公司 | 一种网卡模式切换方法、装置、电子设备及存储介质 |
CN110908495A (zh) * | 2018-09-14 | 2020-03-24 | 英特尔公司 | 使用硬件队列管理器的功率感知负荷平衡 |
CN112817772A (zh) * | 2019-11-15 | 2021-05-18 | 深信服科技股份有限公司 | 一种数据通信方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN115756143A (zh) | 2023-03-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9329671B2 (en) | Power-efficient inter processor communication scheduling | |
CN111427751B (zh) | 基于异步处理机制对业务进行处理的方法及系统 | |
KR101551321B1 (ko) | 휴대용 컴퓨팅 디바이스에서 요청들을 스케쥴링하기 위한 방법 및 시스템 | |
CN107204999B (zh) | 一种实现心跳的方法和装置 | |
US20160266633A1 (en) | Methods and Systems for Coordination of Operating States amongst Multiple SOCs within a Computing Device | |
US20120297216A1 (en) | Dynamically selecting active polling or timed waits | |
CN115756143B (zh) | 数据包处理的节能方法、装置、计算机设备和存储介质 | |
CN103412786A (zh) | 一种高性能服务器架构系统及数据处理方法 | |
CN102096603A (zh) | MapReduce系统中的作业分解控制方法及调度节点设备 | |
US20160246512A1 (en) | Data Compression Method and Storage System | |
CN107818012B (zh) | 一种数据处理方法、装置及电子设备 | |
US20140237108A1 (en) | Cloud process management | |
CN114879829A (zh) | 功耗管理方法、装置、电子设备、图形处理器及存储介质 | |
CN115996197B (zh) | 一种流量拥塞前置的分布式计算流量仿真系统与方法 | |
CN111208985B (zh) | 基于生产者消费者模型的数据处理方法、系统及存储介质 | |
CN117573355A (zh) | 任务处理方法、装置、电子设备以及存储介质 | |
CN117149382A (zh) | 虚拟机调度方法、装置、计算机设备和存储介质 | |
CN116009985A (zh) | 接口调用方法、装置、计算机设备和存储介质 | |
CN105264499B (zh) | 一种共享队列中的消息处理方法、装置及接收核 | |
US20180309702A1 (en) | Method and device for processing data after restart of node | |
US20180115495A1 (en) | Coordinating Accesses of Shared Resources by Clients in a Computing Device | |
WO2022127498A1 (zh) | 可穿戴设备及其音频处理方法 | |
CN115378685A (zh) | 数据处理方法、系统、电子设备及计算机可读存储介质 | |
CN106997304B (zh) | 输入输出事件的处理方法及设备 | |
WO2021227642A1 (zh) | 一种低功耗分布式调用方法、设备及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |