一种队列调度方法、装置、网络设备及存储介质与流程

文档序号:17071374发布日期:2019-03-08 23:20阅读:188来源:国知局
一种队列调度方法、装置、网络设备及存储介质与流程

本发明属于通信技术领域,具体涉及一种队列调度方法、装置、网络设备及存储介质。



背景技术:

在有报文处理需求的多核网络处理器架构中,目前的主流技术方案为:以以太数据为例,处理器的网络接口接收到以太报文后,根据配置将不同的报文送入不同的队列(可以根据接口收到的报文五元组hash值决定报文要进入的队列,其中,五元组hash值是将标准以太报文的五元组(源ip、目的ip、ip协议值、源端口号、目的端口号)通过hash算法计算出的hash值),转发核再从队列中获取报文进行处理(可以配置转发核与队列的映射关系,如将某个或者某些队列指定给某个或者某些转发核处理)。

根据上述网络处理器对以太报文的处理流程可知,处理器提供了灵活的数据处理机制,不仅可以根据配置选择数据接收的队列,还可以将队列分配给不同的转发核处理,但是这种配置不能随意进行,需要根据应用场景的不同进行不同的配置,以路由器为例,由于路由器属于网络中间设备,实现数据的路由转发,因此正常情况下是不能更改数据流(具有相同五元组hash值的报文)顺序的,但是如果相同数据流的数据被多个转发核处理,就无法保证数据流的顺序,因此对于相同的数据流,基于保序的原则,只能将数据流分配至同一个队列且被同一个转发核处理,即相同的数据流只能进入相同的队列,而相同的队列只能被相同的转发核处理。

一般情况下,队列的个数要比转发核的个数多得多,因此必然存在多个队列的多条数据流被分配至同一个转发核处理的情况,当处理这些数据流所消耗的转发核资源超过了单个转发核的处理能力时就会导致数据流丢包。



技术实现要素:

鉴于此,本发明的目的在于提供一种队列调度方法、装置、网络设备及存储介质,以有效地改善上述问题。

本发明的实施例是这样实现的:

第一方面,本申请实施例提供了一种队列调度方法,应用于网络设备,所述网络设备包括多核处理器,所述多核处理器包括控制核和多个转发核,所述网络设备配置有多个缓存队列,所述多个转发核中的每个转发核对应有至少一个缓存队列,且一个缓存队列只对应一个转发核;所述方法包括:确定所述多个缓存队列中存在有报文累积的第一缓存队列时,所述控制核从所述多个转发核中除所述第一缓存队列对应的第一转发核外的各个转发核中确定出有处理能力的第二转发核;所述控制核删除所述第一缓存队列与所述第一转发核的配置关系,建立所述第一缓存队列与所述第二转发核的配置关系,使所述第二转发核处理所述第一缓存队列中的报文。本申请实施例中,通过查看是否有队列出现报文累积,当有队列出现报文累积即对应的转发核(第一转发核)出现过载时,从剩余转发核中确定出有处理能力的转发核(第二转发核),并将有报文累积的队列重新调度给第二转发核进行处理,由此降低了转发核处理能力过载的风险,提升了系统对突发流量的响应速度,实现了转发核之间的数据流调度,避免不必要的数据流丢包问题。

结合第一方面的一种可选实施方式,所述控制核从所述多个转发核中除所述第一缓存队列对应的第一转发核外的各个转发核中确定出有处理能力的第二转发核,包括:所述控制核将所述第一转发核在预设时长内的消耗值分别与所述多个转发核中除所述第一转发核外的各个转发核在所述预设时长内的消耗值进行相减,得到多个相减结果;所述控制核从所述多个相减结果中选取最大的相减结果,作为目标相减结果;所述控制核确定所述目标相减结果大于所述第一缓存队列占用的所述第一转发核的处理消耗值;所述控制核将所述目标相减结果对应的转发核,作为所述第二转发核。本申请实施例中,通过将第一转发核在预设时长内的消耗值分别与除第一转发核外的各个转发核在预设时长内的消耗值进行相减,并从多个相减结果中选取最大值作为目标结果,且确定目标结果大于第一缓存队列占用的第一转发核的处理消耗值时,将该目标结果对应的转发核,作为第二转发核,以保证在将有报文累积的队列调度给第二转发核处理时,第二转发核有足够的处理能力去处理该队列中的报文,避免因第二转发核处理能力不足,导致数据流丢包的问题。

结合第一方面的一种可选实施方式,在所述控制核将所述第一转发核在预设时长内的消耗值分别与所述多个转发核中除所述第一转发核外的各个转发核在所述预设时长内的消耗值进行相减,得到多个相减结果的步骤之前,所述方法还包括:所述控制核获取所述多个转发核中的每个转发核在所述预设时长内的消耗值;所述控制核在获取到每个转发核的所述消耗值时,确定所述多个缓存队列中存在有报文累积的第一缓存队列。本申请实施例中,先获取多个转发核中的每个转发核在预设时长内的消耗值,然后再查看是否存在报文累积的队列,相比于先查看是否有队列存在报文累积,在确定存在报文累积的队列时,再获取各个转发核的消耗值的方案来说,可以降低实效性对第二转发核的影响,避免因时效差异,导致最后确定出的第二转发核不同。

结合第一方面的一种可选实施方式,所述控制核将所述第一转发核在预设时长内的消耗值分别与所述多个转发核中除所述第一转发核外的各个转发核在所述预设时长内的消耗值进行相减,得到多个相减结果,包括:所述控制核获取所述多个转发核中的每个转发核在所述预设时长内的消耗值;所述控制核将所述第一转发核的消耗值分别与所述多个转发核中除所述第一转发核外的各个转发核的消耗值进行相减,得到多个相减结果。本申请实施例中,在确定有队列出现报文累积时,再去获取多个转发核中的每个转发核在预设时长内的消耗值,相比对先获取各个转发核的消耗值,再查看是否存在报文累积的队列的方案来说,可以减少工作量,避免获取到了各个转发核的消耗值后,却没有队列累积的情况发生。

结合第一方面的一种可选实施方式,所述控制核获取所述多个转发核中的每个转发核在所述预设时长内的消耗值,包括:所述控制核获取所述多个转发核中的每个转发核各自统计的在所述预设时长内从对应缓存队列中获取的报文数据;所述控制核基于所述报文数据确定每个所述转发核的消耗值。本申请实施例中,通过获取每个转发核各自统计的在所述预设时长内从对应缓存队列中获取的报文数据,并以此计算每个所述转发核的消耗值,保证了计算结果的可靠性和准确性,进而保证了基于这些消耗值确定出的第二转发核的可靠性,以此降低了单个转发核处理能力过载的风险,避免不必要的数据流丢包问题。

结合第一方面的一种可选实施方式,所述控制核获取所述多个转发核中的每个转发核各自统计的在所述预设时长内从对应缓存队列中获取的报文数据,包括:所述控制核周期性改变全局变量开关的状态使其处于第一状态或第二状态,其中,在所述第一状态时,所述多个转发核中的每个转发核各自统计在所述预设时长内从对应缓存队列中获取的报文数据;在所述第二状态时,所述控制核获取所述多个转发核中的每个转发核反馈的报文数据。本申请实施中,控制核在获取各个转发核统计的报文数据时,通过周期性改变全局变量开关的状态,以使各个转发核根据全局变量开关的状态决定是否对报文数据进行统计,保证了各个转发核在统计报文数据在时间上的一致性,进而保证了计算结果的准确性和可靠性,同时只需通过改变全局变量开关的状态,即可实现对各个转发核统计的报文数据的获取,简化了控制流程。

第二方面,本申请实施例还提供了一种网络设备,包括多核处理器,所述多核处理器包括控制核和多个转发核,所述网络设备配置有多个缓存队列,所述多个转发核中的每个转发核对应有至少一个缓存队列,且一个缓存队列只对应一个转发核;所述控制核,用于确定所述多个缓存队列中存在有报文累积的第一缓存队列时,从所述多个转发核中除所述第一缓存队列对应的第一转发核外的各个转发核中确定出有处理能力的第二转发核;所述控制核,还用于删除所述第一缓存队列与所述第一转发核的配置关系,建立所述第一缓存队列与所述第二转发核的配置关系,使所述第二转发核处理所述第一缓存队列中的报文;所述多个转发核中的每个转发核,用于处理对应的至少一个缓存队列中的报文。

结合第二方面的一种可选实施方式,所述控制核,还用于将所述第一转发核在预设时长内的消耗值分别与所述多个转发核中除所述第一转发核外的各个转发核在所述预设时长内的消耗值进行相减,得到多个相减结果;所述控制核,还用于从所述多个相减结果中选取最大的相减结果,作为目标相减结果;所述控制核,还用于确定所述目标相减结果大于所述第一缓存队列占用的所述第一转发核的处理消耗值;所述控制核,还用于将所述目标相减结果对应的转发核,作为所述第二转发核。

结合第二方面的一种可选实施方式,所述控制核,还用于获取所述多个转发核中的每个转发核在所述预设时长内的消耗值;所述控制核,还用于在获取到每个转发核的所述消耗值时,确定所述多个缓存队列中存在有报文累积的第一缓存队列。

结合第二方面的一种可选实施方式,所述控制核,还用于获取所述多个转发核中的每个转发核在所述预设时长内的消耗值;所述控制核,还用于将所述第一转发核的消耗值分别与所述多个转发核中除所述第一转发核外的各个转发核的消耗值进行相减,得到多个相减结果。

结合第二方面的一种可选实施方式,所述控制核,还用于获取所述多个转发核中的每个转发核各自统计的在所述预设时长内从对应缓存队列中获取的报文数据;所述控制核,还用于基于所述报文数据确定每个所述转发核的消耗值。

结合第二方面的一种可选实施方式,所述控制核还用于周期性改变全局变量开关的状态使其处于第一状态或第二状态,其中,在所述第一状态时,所述多个转发核中的每个转发核各自统计在所述预设时长内从对应缓存队列中获取的报文数据;在所述第二状态时,所述控制核还用于获取所述多个转发核中的每个转发核反馈的报文数据。

第三方面,本申请实施例还提供了一种队列调度装置,应用于包括多核处理器的网络设备,所述多核处理器包括多个转发核,所述网络设备配置有多个缓存队列,所述多个转发核中的每个转发核对应有至少一个缓存队列,且一个缓存队列只对应一个转发核;所述装置包括:确定模块以及配置模块;确定模块,用于确定所述多个缓存队列中存在有报文累积的第一缓存队列时,从所述多个转发核中除所述第一缓存队列对应的第一转发核外的各个转发核中确定出有处理能力的第二转发核;配置模块,用于删除所述第一缓存队列与所述第一转发核的配置关系,建立所述第一缓存队列与所述第二转发核的配置关系,使所述第二转发核处理所述第一缓存队列中的报文。

结合第三方面的一种可选实施方式,所述确定模块,还用于所述控制核将所述第一转发核在预设时长内的消耗值分别与所述多个转发核中除所述第一转发核外的各个转发核在所述预设时长内的消耗值进行相减,得到多个相减结果;所述控制核从所述多个相减结果中选取最大的相减结果,作为目标相减结果;所述控制核确定所述目标相减结果大于所述第一缓存队列占用的所述第一转发核的处理消耗值;所述控制核将所述目标相减结果对应的转发核,作为所述第二转发核。

结合第三方面的一种可选实施方式,所述装置还包括:获取模块以及第二确定模块;获取模块,用于所述控制核获取所述多个转发核中的每个转发核在所述预设时长内的消耗值;第二确定模块,用于所述控制核在获取到每个转发核的所述消耗值时,确定所述多个缓存队列中存在有报文累积的第一缓存队列。

结合第三方面的一种可选实施方式,所述确定模块,还用于所述控制核获取所述多个转发核中的每个转发核在所述预设时长内的消耗值;所述控制核将所述第一转发核的消耗值分别与所述多个转发核中除所述第一转发核外的各个转发核的消耗值进行相减,得到多个相减结果。

结合第三方面的一种可选实施方式,所述获取模块或所述确定模块,还用于所述控制核获取所述多个转发核中的每个转发核各自统计的在所述预设时长内从对应缓存队列中获取的报文数据;所述控制核基于所述报文数据确定每个所述转发核的消耗值。

结合第三方面的一种可选实施方式,所述获取模块或所述确定模块,还用于所述控制核周期性改变全局变量开关的状态使其处于第一状态或第二状态,其中,在所述第一状态时,所述多个转发核中的每个转发核各自统计在所述预设时长内从对应缓存队列中获取的报文数据;在所述第二状态时,所述控制核获取所述多个转发核中的每个转发核反馈的报文数据。

第四方面,本申请实施例还提供了一种存储介质,其上存储有计算机程序,所述计算机程序在被处理器运行时,执行第一方面和/或结合第一方面的一种可选的实施方式提供的方法。

本发明的其他特征和优点将在随后的说明书阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明实施例而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书以及附图中所特别指出的结构来实现和获得。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。通过附图所示,本发明的上述及其它目的、特征和优势将更加清晰。在全部附图中相同的附图标记指示相同的部分。并未刻意按实际尺寸等比例缩放绘制附图,重点在于示出本发明的主旨。

图1示出了本发明实施例提供的网络设备中的多核处理器架构的结构示意图。

图2示出了本发明实施例提供的一种队列调度方法的流程示意图。

图3示出了本发明实施例提供的图2中的步骤s101的流程示意图。

图4示出了本发明实施例提供的一种队列调度装置的模块示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。

因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

在本发明的描述中,需要说明的是,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。再者,本申请中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。

目前网络设备使用的基本都是多核处理器,其处理器架构如图1所示。以以太数据为例,处理器的网络接口接收到以太报文后,根据配置将不同的报文送入不同的队列(可以根据接口收到的报文五元组hash值决定报文要进入的队列),转发核再从队列中获取报文进行处理(可以动态配置转发核与队列的映射关系,如将某个或者某些队列指定给某个或者某些转发核处理)。其中,五元组hash值是将标准以太报文的五元组(源ip、目的ip、ip协议值、源端口号、目的端口号)通过hash算法计算出的hash值。

根据上述网络处理器对以太报文的处理流程可知,处理器提供了灵活的数据处理机制,不仅可以根据配置选择数据接收的队列,还可以将队列分配给不同的转发核处理,但是这种配置不能随意进行,需要根据应用场景的不同进行不同的配置。以路由器为例,由于路由器属于中间网络设备,实现数据的路由转发,因此正常情况下是不能更改数据流(具有相同五元组hash值的报文)顺序的,但是如果相同数据流的数据被多个转发核处理,就无法保证数据流的顺序,因此对于相同的数据流,基于保序的原则,只能将数据流分配至同一个队列且被同一个转发核处理。

要实现数据流的保序处理,在多核网络处理器架构中,需要首先配置根据硬件计算出来的报文五元组hash值进行队列的分配,相同的五元组hash值进入相同的队列,这样一条数据流只可能进入到一个队列,另外,配置相同队列只能被相同的转发核处理,即一个队列只能被一个转发核处理,这样就达到了一条数据流被一个转发核处理的目的,实现了数据流的保序。

一般情况下,队列的个数要比转发核的个数多得多,且具备相同五元组hash值的报文有很多,因此必然存在多个队列的多条数据流被分配至同一个转发核处理的情况,当处理这些数据流所消耗的转发核资源超过了单个转发核的处理能力时就会导致数据流丢包。

本申请的发明人在研究上述问题时发现:主流方案存在的问题在于队列与转发核的映射关系是固定的,当分配给转发核的所有队列中的数据流量总和超过了转发核的处理能力,无法在数据流保序的前提下通过动态调度的方式将流量调度到其他空闲转发核。其中,需要说明的是,针对以上方案所存在的缺陷以及导致缺陷的原因,均是发明人在经过实践并仔细研究后得出的结果,因此,上述问题的发现过程以及下文中本发明实施例针对上述问题所提出的解决方案,都应该是发明人在本发明过程中对本发明做出的贡献。

鉴于此,如图2所示,本申请实施例提供了一种队列调度方法,应用于具备报文处理需求的具备多核处理器的网络设备,如路由器、防火墙等。其中,多核处理器包括控制核和多个转发核。该网络设备配置有多个缓存队列,所述多个转发核中的每个转发核对应有至少一个缓存队列,且一个缓存队列只对应一个转发核。下面将结合图2所示的步骤进行说明。

步骤s101:确定所述多个缓存队列中存在有报文累积的第一缓存队列时,所述控制核从所述多个转发核中除所述第一缓存队列对应的第一转发核外的各个转发核中确定出有处理能力的第二转发核。

控制核周期性轮询所有的缓存队列,查看是否有报文累积。在确定存在有报文累积的第一缓存队列时,也即表明第一缓存队列对应的第一转发核当前处于超负荷状态,此时,控制核便从多个转发核中除第一转发核外的各个转发核中确定出有处理能力的第二转发核,以便将有报文累积的队列重新调度给第二转发核进行处理,由此降低了转发核处理能力过载的风险,提升了系统对突发流量的响应速度,实现了转发核之间的数据流调度,避免不必要的数据流丢包问题。

在从多个转发核中除第一转发核外的各个转发核中确定出有处理能力的第二转发核时,可以是根据各个转发核的在预设时间内的消耗值来确定,也可以是根据各个转发核的内存占比和/或内存大小来确定。作为一种可选的实施方式,下面结合图3所示的步骤来说明控制核确定出第二转发核的具体过程。

步骤s201:所述控制核将所述第一转发核在预设时长内的消耗值分别与所述多个转发核中除所述第一转发核外的各个转发核在所述预设时长内的消耗值进行相减,得到多个相减结果。

例如,控制核将第一转发核在预设时长内的消耗值分别与n个转发核中除第一转发核外的各个转发核在预设时长内的消耗值进行相减,得到n-1个相减结果。假设第一转发核在预设时长内的消耗值为e1,其余各个转发核在预设时长内的消耗值分别为e2,e3,……en,则得到的n-1个相减结果为:(e1-e2),(e1-e3),(e1-e4),……(e1-en-1),(e1-en)。其中,(e1-e2),(e1-e3),(e1-e4),……(e1-en-1),(e1-en)这些差值反应了转发核的空闲处理能力。其中,n为大于等于2的整数。

步骤s202:所述控制核从所述多个相减结果中选取最大的相减结果,作为目标相减结果。

例如,在得到n-1个相减结果后,所述控制核从n-1个相减结果中选取最大的相减结果,作为目标相减结果。控制核从(e1-e2),(e1-e3),(e1-e4),……(e1-en-1),(e1-en)这n-1个差值中选取最大的差值作为目标相减结果,假设为(e1-e2)。

步骤s203:所述控制核确定所述目标相减结果大于所述第一缓存队列占用的所述第一转发核的处理消耗值。

在得到目标相减结果(假设为(e1-e2))后,控制核判断该目标相减结果是否大于第一缓存队列占用的第一转发核的处理消耗值,在确定目标相减结果大于第一缓存队列占用的第一转发核的处理消耗值时,执行步骤s204,反之则不处理,等待下一个轮询周期到来再重新计算各个转发核的消耗值,然后再进行判断。由于(e1-e2),(e1-e3),(e1-e4),……(e1-en-1),(e1-en)这些差值反应了对应转发核的空闲处理能力,当其中的最大值大于第一缓存队列占用的第一转发核的处理消耗值时,表明相应转发核(如e2对应的转发核)有足够的处理能力去处理第一缓存队列的报文。

步骤s204:所述控制核将所述目标相减结果对应的转发核,作为所述第二转发核。

在得到目标相减结果后,将目标相减结果对应的转发核,作为第二转发核,假设目标相减结果为(e1-e2),则第二转发核即为e2对应的转发核。

其中,控制核如何获取各个转发核在预设时间内的消耗值呢,由于转发核的消耗值与处理数据流的能力息息相关,而处理数据流的能力既与数据流的流量大小有关,也与数据流的类型有关。(不同类型的数据流,处理流程不同,消耗的处理器资源也不同)。因此首先需要对不同类型报文所消耗的转发核资源进行定量分析,那如何获取处理不同类型数据流的转发核所需消耗的资源呢?可针对不同数据类型分别打单条过载流量,即数据流的流量要超过单个核的处理能力,由于一条数据流只会进入到一个队列,因此也只会被一个转发核处理,这样就可以得到单个转发核处理相应类型数据的最大能力,这里以ipv4、ipv6、广域网pos三种类型的报文为例,通过分别对这三种报文打过载流量(通过缓存队列的累积状态判断是否过载),即对应报文的单条数据流量需要超过单个转发核的处理能力,这样可以得到三种不同类型报文的单报文单转发核处理器消耗资源,这里标记为δtipv4,δtipv6,δtpos。例如,对于ipv4,如果单个转发核的处理能力为800kpps,那么每个报文需要消耗转发核的资源为1/800000s,这里标记该消耗资源为δtipv4,同理对于ipv6和广域网pos报文,得到对应的单个报文单个转发核的相对资源消耗为δtipv6和δtpos。

其中,需要说明的是,每种报文的单个报文的相对资源消耗需要事先进行计算。这样在计算各个转发核在预设时长内的消耗值时,只需要统计各个转发核在预设时长内从对应缓存队列中获取的报文数据即可,例如,在计算转发核1在预设时长内的消耗值e1时,获取转发核1在预设时长内从对应缓存队列中获取的报文数据,假设转发核1对应的缓存队列为队列1和队列2,若在预设时长内,转发核1从队列1中获取的ipv4、ipv6、pos报文分别计为q1ipv4、q1ipv6、q1pos,同理,转发核1从队列2中获取的ipv4、ipv6、pos报文分别计为q2ipv4、q2ipv6、q2pos,则转发核1在预设时间内的消耗值为(q1ipv4+q2ipv4)*δtipv4+(q1ipv6+q2ipv6)*δtipv6+(q1pos+q2pos)*δtpos。同理,在计算转发核2在预设时长内的消耗值e2时,获取转发核2在预设时长内从对应缓存队列中获取的报文数据,假设转发核2对应的缓存队列为队列3和队列4,若在预设时长内,转发核2从队列3中获取的ipv4、ipv6、pos报文分别计为q3ipv4、q3ipv6、q3pos,同理,转发核2从队列4中获取的ipv4、ipv6、pos报文分别计为q4ipv4、q4ipv6、q4pos,则转发核2在预设时间内的消耗值为(q3ipv4+q4ipv4)*δtipv4+(q3ipv6+q4ipv6)*δtipv6+(q3pos+q4pos)*δtpos。以此类推,可以得到所有转发核在预设时间内的处理器消耗值e1、e2…en。其中,如果队列1出现了报文累积,即队列1为第一缓存队列,由于队列1被分配给转发核1处理,则转发核1即为第一转发核,则第一缓存队列占用的第一转发核的处理消耗值为q1ipv4*δtipv4+q1ipv6*δtipv6+q1pos*δtpos。

其中,控制核如何获取多个转发核中的每个转发核在预设时长内从对应缓存队列中获取的报文数据呢?作为一种可选的实施方式,可以通过改变全局变量开关的状态来实现,可选地,控制核周期性改变全局变量开关的状态使其处于第一状态或第二状态;其中,在所述第一状态时,所述多个转发核中的每个转发核各自统计在所述预设时长内从对应缓存队列中获取的报文数据;在所述第二状态时,所述控制核获取所述多个转发核中的每个转发核反馈的报文数据。例如,控制核周期性改变全局变量开关的状态使其处于打开或关闭状态,转发核根据全局变量开关的状态决定是否对数据进行统计,例如,在全局变量开关处于打开状态时,每个转发核各自统计在预设时长内从对应缓存队列中获取的报文数据;在全局变量开关处于关闭状态时,各个转发核停止统计,并将各自统计的报文数据反馈给控制核。其中,控制核可以在上一次轮询任务结束前打开全局变量开关,在本轮轮询任务开始后关闭全局变量开关。此外,上述的统计也可以是在全局变量开关处于关闭时统计,在全局变量处于打开时停止统计。

其中,控制核获取多个转发核中的每个转发核在预设时长内的消耗值可以是在控制核周期性轮询所有的缓存队列,查看是否有报文累积的步骤之前,也即控制核先周期性的获取多个转发核中的每个转发核在预设时长内的消耗值,待获取到每个转发核在预设时长内的消耗值后,在查看是否存在报文累积的队列,如果没有,就等到下一个周期,然后重新获取多个转发核中的每个转发核在预设时长内的消耗值后,再查看是否存在报文累积的队列;如果有,则需要根据累积队列所占用的处理器资源和各个转发核的整体处理器消耗决定是否需要对累积队列进行分核调度。相比于先查看是否有队列存在报文累积,在确定存在报文累积的队列时,再获取各个转发核的消耗值的方案来说,可以降低实效性对第二转发核的影响,避免因时效差异,导致最后确定出的第二转发核不同。

其中,控制核获取多个转发核中的每个转发核在预设时长内的消耗值可以是在控制核周期性轮询所有的缓存队列,查看是否有报文累积的步骤之后,也即在确定多个缓存队列中存在有报文累积的第一缓存队列时,控制核再获取多个转发核中的每个转发核在预设时长内的消耗值。若没有出现报文累积的队列,则不获取多个转发核中的每个转发核在预设时长内的消耗值。相比对先获取各个转发核的消耗值,再查看是否存在报文累积的队列的方案来说,可以减少工作量,避免获取到了各个转发核的消耗值后,却没有队列累积的情况发生。

其中,需要说明的是,预设时间为事先设置,其可以根据不同的转发任务设置不同的时间,是可以灵活设置的。

步骤s102:所述控制核删除所述第一缓存队列与所述第一转发核的配置关系,建立所述第一缓存队列与所述第二转发核的配置关系,使所述第二转发核处理所述第一缓存队列中的报文。

控制核在从所述多个转发核中除第一转发核外的各个转发核中确定出有处理能力的第二转发核后,控制核删除第一缓存队列与第一转发核的配置关系,建立第一缓存队列与第二转发核的配置关系,使第二转发核处理第一缓存队列中的报文。这种队列动态分核调度机制不仅可以快速识别网络突发流量并做出相应的处理,更可以降低单个转发核处理能力过载的风险,避免不必要的数据流丢包问题。

其中,需要说明的是,本申请中的“队列”和“缓存队列”可以相互互换。

第二实施例

本申请实施例提供了一种网络设备,包括多核处理器,所述多核处理器包括控制核和多个转发核,所述网络设备配置有多个缓存队列,所述多个转发核中的每个转发核对应有至少一个缓存队列,且一个缓存队列只对应一个转发核,所述多个转发核中的每个转发核,用于处理对应的至少一个缓存队列中的报文。其中,该多核处理器的架构可以参阅图1。需要说明的是,控制核可以是从多个内核中随机指定的,例如,指定某个内核为控制核,剩余的所有内核均为转发核。

其中,所述控制核,用于确定所述多个缓存队列中存在有报文累积的第一缓存队列时,从所述多个转发核中除所述第一缓存队列对应的第一转发核外的各个转发核中确定出有处理能力的第二转发核;所述控制核,还用于删除所述第一缓存队列与所述第一转发核的配置关系,建立所述第一缓存队列与所述第二转发核的配置关系,使所述第二转发核处理所述第一缓存队列中的报文。

可选地,所述控制核,还用于将所述第一转发核在预设时长内的消耗值分别与所述多个转发核中除所述第一转发核外的各个转发核在所述预设时长内的消耗值进行相减,得到多个相减结果;所述控制核,还用于从所述多个相减结果中选取最大的相减结果,作为目标相减结果;所述控制核,还用于确定所述目标相减结果大于所述第一缓存队列占用的所述第一转发核的处理消耗值;所述控制核,还用于将所述目标相减结果对应的转发核,作为所述第二转发核。

可选地,所述控制核,还用于获取所述多个转发核中的每个转发核在所述预设时长内的消耗值;所述控制核,还用于在获取到每个转发核的所述消耗值时,确定所述多个缓存队列中存在有报文累积的第一缓存队列。

可选地,所述控制核,还用于获取所述多个转发核中的每个转发核在所述预设时长内的消耗值;所述控制核,还用于将所述第一转发核的消耗值分别与所述多个转发核中除所述第一转发核外的各个转发核的消耗值进行相减,得到多个相减结果。

可选地,所述控制核,还用于获取所述多个转发核中的每个转发核各自统计的在所述预设时长内从对应缓存队列中获取的报文数据;所述控制核,还用于基于所述报文数据确定每个所述转发核的消耗值。

可选地,所述控制核,还用于周期性改变全局变量开关的状态使其处于第一状态或第二状态,其中,在所述第一状态时,所述多个转发核中的每个转发核各自统计在所述预设时长内从对应缓存队列中获取的报文数据;在所述第二状态时,所述控制核还用于获取所述多个转发核中的每个转发核反馈的报文数据。

需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。

第三实施例

本申请实施例还提供了一种应用于包括多核处理器的网络设备中的队列调度装置100,如图4所示。其中,所述多核处理器还包括多个转发核,所述网络设备配置有多个缓存队列,所述多个转发核中的每个转发核对应有至少一个缓存队列,且一个缓存队列只对应一个转发核。该队列调度装置100包括:确定模块110以及配置模块120。

确定模块110,用于确定所述多个缓存队列中存在有报文累积的第一缓存队列时,从所述多个转发核中除所述第一缓存队列对应的第一转发核外的各个转发核中确定出有处理能力的第二转发核。可选地,所述确定模块110,还用于所述控制核将所述第一转发核在预设时长内的消耗值分别与所述多个转发核中除所述第一转发核外的各个转发核在所述预设时长内的消耗值进行相减,得到多个相减结果;所述控制核从所述多个相减结果中选取最大的相减结果,作为目标相减结果;所述控制核确定所述目标相减结果大于所述第一缓存队列占用的所述第一转发核的处理消耗值;所述控制核将所述目标相减结果对应的转发核,作为所述第二转发核。可选地,所述确定模块110,还用于所述控制核获取所述多个转发核中的每个转发核在所述预设时长内的消耗值;所述控制核将所述第一缓存队列对应的第一转发核的消耗值分别与所述多个转发核中除所述第一转发核外的各个转发核的消耗值进行相减,得到多个相减结果。可选地,所述确定模块110,还用于所述控制核获取所述多个转发核中的每个转发核各自统计的在所述预设时长内从对应缓存队列中获取的报文数据;所述控制核基于所述报文数据确定每个所述转发核的消耗值。可选地,所述确定模块110,还用于所述控制核周期性改变全局变量开关的状态使其处于第一状态或第二状态,其中,在所述第一状态时,所述多个转发核中的每个转发核各自统计在所述预设时长内从对应缓存队列中获取的报文数据;在所述第二状态时,所述控制核获取所述多个转发核中的每个转发核反馈的报文数据。

配置模块120,用于删除所述第一缓存队列与所述第一转发核的配置关系,建立所述第一缓存队列与所述第二转发核的配置关系,使所述第二转发核处理所述第一缓存队列中的报文。

可选地,队列调度装置100还包括:获取模块以及第二确定模块。

获取模块,用于所述控制核获取所述多个转发核中的每个转发核在所述预设时长内的消耗值。可选地,所述获取模块,还用于所述控制核周期性改变全局变量开关的状态使其处于第一状态或第二状态,其中,在所述第一状态时,所述多个转发核中的每个转发核各自统计在所述预设时长内从对应缓存队列中获取的报文数据;在所述第二状态时,所述控制核获取所述多个转发核中的每个转发核反馈的报文数据。可选地,所述获取模块,还用于所述控制核周期性改变全局变量开关的状态使其处于第一状态或第二状态,其中,在所述第一状态时,所述多个转发核中的每个转发核各自统计在所述预设时长内从对应缓存队列中获取的报文数据;在所述第二状态时,所述控制核获取所述多个转发核中的每个转发核反馈的报文数据。

第二确定模块,用于所述控制核在获取到每个转发核的所述消耗值时,确定所述多个缓存队列中存在有报文累积的第一缓存队列。

需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。

本发明实施例所提供的队列调度装置100,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。

第四实施例

本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行上述第二实施例所述的方法的步骤。具体实现可参见方法实施例,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。

所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,笔记本电脑,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1