CN104506452A - 一种报文处理方法及装置 - Google Patents
一种报文处理方法及装置 Download PDFInfo
- Publication number
- CN104506452A CN104506452A CN201410781682.4A CN201410781682A CN104506452A CN 104506452 A CN104506452 A CN 104506452A CN 201410781682 A CN201410781682 A CN 201410781682A CN 104506452 A CN104506452 A CN 104506452A
- Authority
- CN
- China
- Prior art keywords
- dotted line
- working group
- line journey
- dispatching zone
- journey working
- 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.)
- Granted
Links
Landscapes
- Multi Processors (AREA)
Abstract
本发明公开了一种报文处理方法及装置,该方法包括:将处理报文的多核中央处理器CPU划分为至少一个调度域,以及将处理报文的虚线程划分为至少一个虚线程工作组;分别为划分的虚线程工作组分配调度域;按照分配后的调度域,根据负载均衡原则处理每个虚线程工作组中的报文。用以解决通常情况下采用的优先级全局调度算法,在进行报文处理时,比较浪费CPU资源,并且报文处理的灵活性较差的问题。
Description
技术领域
本发明涉及计算机技术领域,尤其是涉及一种报文处理方法及装置。
背景技术
IP网络设备,如交换机、路由器、防火墙和网关等,作为计算机互连的数据交换节点,其数据转发性能决定了网络的整体质量。随着用户连接数的急剧增长和各种高带宽应用的出现,主频提升受限的单核处理器越来越难以满足高速数据转发的性能需求,而多核处理器凭借其较低成本的扩展能力和并行计算特性,逐渐在网络通信领域得到广泛应用。所谓多核处理器,是指在一个硬件芯片上集成多个核心处理器(英文:Core-CPU),通常为共享内存式结构。多核处理器具备相对独立的多个计算处理核心,可以并行地执行报文转发处理程序,从而使得报文转发性能得到大幅度提高,进而可以提高***整体的吞吐率。
为了提高多核处理器的计算并行性,经常采用的一种是优先级全局调度算法,该算法中,在报文的转发处理过程中,虚线程的类型往往不是很多,并且一般来说用低(英文:LOW)、正常(英文:NORMAL)、高(英文:HIGH)三个优先级就可以区分虚线程之间的优先关系。优先级全局调度算法的实现是,***中对于每个优先级存在一个全局的READY线程队列,每个CPU上的快转线程按照优先级从高到低依次调度就绪队列中的虚线程执行。但是,基于优先级全局调度算法处理报文的方式中,每个CPU在调度虚线程时,需要对全局虚线程队列进行同步操作。虚线程调度引入了同步点,CPU数量越多,调度的开销越大。因此占用的CPU资源相当大。其次,所有CPU需要对同一调度队列进行争用,会造成一段时间内,所有CPU都获取不到虚线程的状况。这种状况往往导致性能波动。CPU越多,争用越频繁,波动越大。
综上所述,通常情况下采用的优先级全局调度算法,在进行报文处理时,比较浪费CPU资源,并且报文处理的灵活性较差。
发明内容
本发明提供了一种报文处理方法及装置,用以解决通常情况下采用的优先级全局调度算法,在进行报文处理时,比较浪费CPU资源,并且报文处理的灵活性较差的问题。
一种报文处理方法,包括:
将处理报文的多核中央处理器CPU划分为至少一个调度域,以及将处理报文的虚线程划分为至少一个虚线程工作组;
分别为划分的虚线程工作组分配调度域;
按照分配后的调度域,根据负载均衡原则处理每个虚线程工作组中的报文。
按照分配后的调度域,根据负载均衡原则处理每个虚线程工作组中的报文,包括:
针对任一虚线程工作组,确定所述虚线程工作组的负载值;
根据确定出的负载值,为所述虚线程工作组分配调度域,基于分配的调度域处理报文。
根据确定出的负载值,为所述虚线程工作组分配调度域,包括:
在确定出处于运行RUNNING状态的虚线程工作组数量和为所述虚线程工作组分配的调度域中的CPU数量相等,且需要添加新的虚线程工作组时,在所有调度域中,确定是否存在总负载值小于CPU数量,且总负载最小的调度域,其中,所述总负载值是调度域中全部虚线程工作组的负载值的和值,所述总负载是调度域中的CPU正在处理的虚线程工作组的和值;
如果存在,将虚线程工作组添加到所述调度域中;如果不存在,将虚线程工作组添加到所有调度域中的总负载最小的调度域中。
根据确定出的负载值,为所述虚线程工作组分配调度域,包括:
在确定出处于运行RUNNING状态的虚线程工作组数量小于为所述虚线程工作组分配的调度域中的CPU数量时,重新计算各虚线程工作组的负载值,其中,所述负载值是虚线程工作组运行过程中,根据所述虚线程工作组每次执行的平均时间计算得到的;
根据重新计算得到的虚线程工作组的负载值,确定各调度域的总负载,其中,所述总负载是调度域中的CPU正在处理的虚线程工作组的负载值的和值;
在所有确定出的调度域总负载中:
确定总负载最低的调度域;以及
针对除总负载最低的其它调度域,执行下述操作:
根据各调度域的总负载,由高至低依次遍历各调度域,确定各调度域中处于SUSPEND状态的虚线程工作组;
在确定出的SUSPEND状态的虚线程工作组中,获得指定虚线程工作组,将所述指定虚线程工作组添加到总负载最低的调度域中,其中,所述指定虚线程工作组满足如下条件:将所述指定虚线程工作组添加到总负载最低的调度域中时,所述调度域中,指定虚线程工作组类型的虚线程工作组的数量不大于所述调度域中CPU的数量。
在基于分配的调度域处理报文之后,还包括:
将处理完毕的虚线程工作组添加时间戳;并
将添加时间戳的虚线程工作组置于SUSPEND状态。
一种报文处理装置,包括:
划分模块,用于将处理报文的多核中央处理器CPU划分为至少一个调度域,以及将处理报文的虚线程划分为至少一个虚线程工作组;
分配模块,用于分别为划分的虚线程工作组分配调度域;
执行模块,用于按照分配后的调度域,根据负载均衡原则处理每个虚线程工作组中的报文。
所述执行模块,具体用于针对任一虚线程工作组,确定所述虚线程工作组的负载值;根据确定出的负载值,为所述虚线程工作组分配调度域,基于分配的调度域处理报文。
所述执行模块,具体用于在确定出处于运行RUNNING状态的虚线程工作组数量小于为所述虚线程工作组分配的调度域中的CPU数量时,重新计算各虚线程工作组的负载值,其中,所述负载值是虚线程工作组运行过程中,根据所述虚线程工作组每次执行的平均时间计算得到的;
根据重新计算得到的虚线程工作组的负载值,确定各调度域的总负载,其中,所述总负载是调度域中的CPU正在处理的虚线程工作组的负载值的和值;
在所有确定出的调度域总负载中:
确定总负载最低的调度域;以及
针对除总负载最低的其它调度域,执行下述操作:
根据各调度域的总负载,由高至低依次遍历各调度域,确定各调度域中处于SUSPEND状态的虚线程工作组;
在确定出的SUSPEND状态的虚线程工作组中,获得指定虚线程工作组,将所述指定虚线程工作组添加到总负载最低的调度域中,其中,所述指定虚线程工作组满足如下条件:将所述指定虚线程工作组添加到总负载最低的调度域中时,所述调度域中,指定虚线程工作组类型的虚线程工作组的数量不大于所述调度域中CPU的数量。
所述执行模块,具体用于在确定出处于运行RUNNING状态的虚线程工作组数量小于为所述虚线程工作组分配的调度域中的CPU数量时,重新计算各虚线程工作组的负载值;根据重新计算得到的虚线程工作组的负载值,确定各调度域的总负载,其中,所述总负载是调度域中的CPU正在处理的虚线程工作组的和值;在所有确定出的调度域总负载中:针对总负载最高的调度域,所述调度域保持空闲IDLE状态;以及针对除总负载最高的其它调度域,执行下述操作:在总负载最高的调度域中,确定悬挂SUSPEND状态的虚线程工作组;在确定出的SUSPEND状态的虚线程工作组中,获得指定虚线程工作组,将所述指定虚线程工作组添加到调度域中,其中,所述指定虚线程工作组满足如下条件:将所述指定虚线程工作组添加到调度域中时,所述调度域的总负载不超过设定阈值。
所述执行模块,还用于将处理完毕的虚线程工作组添加时间戳;并将添加时间戳的虚线程工作组置于SUSPEND状态。
通过采用上述技术方案,将处理报文的多核中央处理器CPU划分为至少一个调度域,以及将处理报文的虚线程划分为至少一个虚线程工作组,分别为划分的虚线程工作组分配调度域,按照分配后的调度域,根据负载均衡原则处理每个虚线程工作组中的报文。将虚线程划分为多个工作组,能够提高dcache和icache的利用率,将多核CPU划分为多个调度域,能够增加***的扩展性,减少调度开销,并减低转发性能的波动和提高***吞吐率,根据负载均衡原则处理每个虚线程工作组中的报文,使各调度域之间负载均衡,并使相同类型的虚拟线程工作组能够在调度域之间散列,充分发挥多核的并发处理能力。
附图说明
图1为基于优先级全局调度算法的报文处理方法;
图2为本发明实施例中,提出的报文处理方法流程图;
图3为虚线程状态转换示意图;
图4为本发明实施例中,提出的一种多调度域结构示意图;
图5为本发明实施例中,提出的报文处理装置结构组成示意图。
具体实施方式
一般情况下,在进行报文处理的过程中,主要包括两种方式,一种方式是linux2.6版本之前的调度器采用基于优先级的设计来处理报文。具体为:在多核***中,保存唯一一个运行队列处理报文,每个CPU对于运行队列中所有的进程优先级依次进行比较,选择最高优先级的进程作为下一个被调度的进程。linux2.6版本之后,增加了较多的调度器算法。但是感谢调度器的和快转虚线程调度器的目标不同。linux调度器面向的是操作***,需要同时考虑***的交互响应和批处理能力等。而在报文转发领域,虚线程的调度考虑的是对报文处理阶段的分配,考虑的是报文的转发能力。另一种方式是基于优先级全局调度算法来处理报文。具体为:在报文的转发处理过程中,虚线程的类型往往不是很多,并且一般来说用LOW、NORMAL、HIGH三个优先级就可以区分虚线程之前的优先关系。优先级全局调度算法的实现是,***中对于每个优先级存在一个全局的READY线程队列,每个CPU上的快转线程按照优先级从高到低依次调度就绪队列中的虚线程执行,具体如图1所示。
但是,基于优先级全局调度算法来处理报文存在下述缺陷:
首先,扩展性低。每个CPU在调度虚线程时,需要对全局虚线程队列进行同步操作。虚线程调度引入了同步点,CPU数量越多,调度的开销越大。在报文转发过程中的虚线程,执行时间都非常短暂,因此该算法中调度的同步操作占用的CPU资源比较大。
其次,在设备的某些芯片上,会造成转发性能波动。比如,MIPS体系结构中,同步操作采用了LL、SC指令。LL、SC的作用域是一个cache line。在一个CPU对某个数据执行LL、SC操作的过程中,其它CPU对该数据所在的进行的任何操作,都会造成该CPU的LL、SC操作结果未定义。该算法中,所有CPU需要对同一调度队列进行争用,会造成一段时间内,所有CPU都获取不到虚线程的状况。这种状况往往导致性能波动。CPU越多,争用越频繁,波动越大。
再次,dcache利用率低。在报文转发的过程中,存在多个虚线程需要对同一个报文处理的情况。比如,在流水线模型中,各流水线需要依次对报文进行处理。各流水线所对应的虚线程往往在不同的CPU上运行,故报文需要依次加载到各虚线程所在的CPU上,dcache利用率低。
最后,icache利用率低。在该调度模型下,每个虚线程运行结束之后,需要重新加入到对应优先级的全局调度队列中。待该虚线程被重新调度,其运行的CPU往往不是上次运行的CPU,该虚线程所需要的指令都要重新加载到本地运行的CPU上。
针对上述缺陷,本发明实施例提出的技术方案中,将处理报文的多核中央处理器CPU划分为至少一个调度域,以及将处理报文的虚线程划分为至少一个虚线程工作组,分别为划分的虚线程工作组分配调度域,按照分配后的调度域,根据负载均衡原则处理每个虚线程工作组中的报文。将虚线程划分为多个工作组,能够提高dcache和icache的利用率,将多核CPU划分为多个调度域,能够增加***的扩展性,减少调度开销,并减低转发性能的波动和提高***吞吐率,根据负载均衡原则处理每个虚线程工作组中的报文,使各调度域之间负载均衡,并使相同类型的虚拟线程工作组能够在调度域之间散列,充分发挥多核的并发处理能力。
下面将结合各个附图对本发明实施例技术方案的主要实现原理、具体实施方式及其对应能够达到的有益效果进行详细地阐述。
本发明实施例提出一种报文处理方法,如图2所示,其具体处理流程如下述:
步骤21,将处理报文的虚线程划分为至少一个虚线程工作组,以及将处理报文的多核CPU划分为至少一个调度域。
可以按照报文类型划分虚线程工作组。
其中,在操作***中,线程的调度伴随着上下文的切换操作,该些操作的开销对于转发来说开销相当大,快转对此无法承受。为此,快转将转发过程中需要执行的任务抽象成虚线程,在快转的线程中,调度该些虚线程执行相关的任务。快转线程绑定在CPU上运行,并且在***的运行过程中,尽量少发生上下文切换。这样,即保证了报文转发的任务能够被调度运行,又避免了线程上下文切换的开销。虚线程包含下述三种状态,如图3所示:
第一种状态:悬挂(英文:SUSPEND)状态。该状态表示快转虚线程挂起,不需要被调度执行。
第二种状态:准备(英文:READY)状态。该状态表示虚线程满足执行条件,需要获取CPU资源。
第三种状态:运行(英文:RUNNING)状态。该状态表示虚线程已经获取CPU资源,正在被执行。
虚线程包含三种优先级,分别为低(英文:LOW)、正常(英文:NORMAL)、高(英文:HIGH)。在快转的调度过程中,对READY状态的虚线程按照优先级顺序依次调度执行。
本发明实施例提出的技术方案中,在报文处理过程中,将报文从接收到发送分成多个阶段,例如接收、解析、转发、分发和发送五个阶段,每个报文处理的阶段称为一个流水线。将报文处理分成多个流水线,使每个流水线包含的指令都能够被尽量地容纳在指令缓存中,可以使每个流水线产生尽量少的icache miss。并且每个流水线可以随机地在每个CPU上执行,有效地利用了多核并发的优势。
本发明实施例提出的技术方案中,报文处理的每个流水线,都被当成虚线程。虚线程调度器是将虚线程分配给快转线程,有效地利用CPU的处理时间和CPU本地缓存,提高多核处理器的并发报文处理能力。
虚线程的工作组,是指需要对同一条流水线进行处理的虚线程。
在转发的过程中需要对同一条流水线的报文进行保序,否则有些报文会处理失败。比如应用识别和加密等业务收到乱序的报文,往往无法进行有效的处理。CPU间的并行处理无法保证时间上的先后顺序。为了处理报文的保序功能,在快转的RTC转发模型中,将CPU和数据流进行绑定,避免某个时刻多CPU对同一条流水线进行处理导致的出口乱序现象;在流水线模型中,将接收点和报文进行绑定,保证一条报文流水线只能被一个接收点按顺序接收。同时,将报文的处理按照接收、解析、转发、分发和发送等阶段,优先级从低到高依次执行,并且各个阶段中对报文的处理不能乱序。
流水线模型可以解决Icache miss问题。当报文处理的整个流程中的指令数量超过Icache能够容纳的指令数量,报文处理过程中就不可避免的产生Icachemiss。故流水线模型中,将报文的处理分阶段,各自组织成一个虚线程供快转调度,以保证每个阶段需要的指令数量限制在Icache的容量之内,以此来保证0Icache miss。但是,流水线模型中的接收、解析和转发等虚线程,统一由多核的快转调度,这些虚线程往往在不同的CPU上执行。造成这些虚线程需要的报文和流表数据在不同的CPU间不断迁移,增加了报文处理过程中的Dcache miss。并且,每个虚线程执行结束之后,都返回就绪队列,由多核快转采用FIFO的方式重新调度。虚线程被重新调度之后,不能保证在上次执行的CPU上继续执行,被重新调度的虚线程往往需要重新在CPU上加载对应的指令。Icache miss不可避免。所以,简单的流水线模型可能同时增加报文处理过程中的Icache miss和Dcache miss。
基于上述分析,本发明实施例提出的技术方案中,可以将流水线模型中的接收、解析、转发和分发等虚线程组合成虚线程工作组,并且同一个虚拟工作组的虚线程在同一个CPU中运行。控制每个虚拟工作组一次处理一条流的报文数量,在不超过Dcache的容量的前提下,尽量多的处理报文,以实现尽量利用Dcache达到低Dcache miss的目标。其中,虚拟工作组中的虚线程,按照优先级依次处理完全部的报文。同一工作组的虚线程切换造成了Icache miss,但是因为其摊销在尽可能多的报文身上,因此对于每个报文来说Icache miss数量最低。
较佳地,本发明实施例提出的技术方案中,并不限于一个接收点上的接收、解析和分发等虚线程组成工作组,在具体实施过程中,将需要访问相关报文和流水线的虚线程,均可以划分为虚拟线程工作组。将虚线程划分为虚线程工作组,可以解决干扰问题。并且,将访问相同类型报文的虚线程划分为虚线程工作组,能够有效减少转发过程中的Dcache miss。
划分的每个虚线程工作做均有一个用于做负载均衡的负载值,该负载值可以设置在1~100之间。由于各业务无法知道其它业务的负载情况。故当前所有的虚拟线程工作组负载值,由转发框架和各业务统一协商决定,定义在快转的配置中。快转配置中的虚拟线程工作组负载值只是在其首次添加到快转调度器中使用,在运行的过程中,如果出现各调度域负载不均衡,IDLE状态处理的过程中,则根据虚拟工作组运行的历史值重新计算其负载值,并做新一轮的负载均衡。一种较佳地实现方式,负载值的计算方式可以是其前面十次运行时间的平均值。
以CPU为单位,比较难于实现负载均衡。例如,因为CAVUM芯片IPD的关系,以太网口收到报文之后,只能将报文散列到2的n次幂数量的硬件队列中。因为上述的流序关系,创建的接收点往往也是2的幂次方个。若管理面和数据面共享同一个芯片,且数据面的CPU往往不是2的幂次方。例如EG2000xe数据核31个,管理核1个。为了提高***的性能,在EG2000xe中创建了32个接收点,其对应了32个虚拟线程工作组。以每数据面CPU为单位对这32个虚拟线程工作组进行散列,则必有一个CPU的工作量是其它CPU的两倍。当这两个接收点的报文超过了该CPU处理能力时,因为所有的芯片共享帧缓冲区,故帧缓冲区全部堆积到这两个接收点上,所有其它接收点都不能收到报文。同时因为其它接收点采用了轮询收包方法,其它CPU均以为自己比较繁忙,触发不了负载均衡。需要采用一些机制保证快转线程能够识别到自己的空转状态,而触发负载均衡。在上述的场景下,会出现所有的CPU都对这两个接收点进行争用,在LL、SC同步的情况下,其处理能力可能还不如1个CPU处理这两个接收点。
本发明实施例提出的技术方案中,把多个CPU作为一个调度单位。比如,具体地,以31个CPU,调度域跨度为4的调度域模型如图4所示。以4个CPU为一个调度单位,则一个调度单位的负载只比其它调度单位的负载高25%。在转发调度模型中,将固定CPU的集合作为一个调度域,将调度域中的CPU数量称为调度域跨度,调度域跨度从1到该芯片的数据核数量。同一个调度域共享一个调度队列,所以同一个调度域中的CPU对该调度队列需要做同步操作。调度域跨度越小,调度开销越小。
步骤22,分别为划分的虚线程工作组分配调度域。
一种较佳地实现方式,每个调度域对应一个调度队列,以虚线程工作组为单位在各调度域之间做负载均衡。可以解决多核调度开销和各调度域互相干扰等问题。例如以31个转发核,调度域跨度为4的多调度域调度模型如图3所示。
步骤23,按照分配后的调度域,根据负载均衡原则处理每个虚线程工作组中的报文。
其中,可以针对任一虚线程工作组,确定虚线程工作组的负载值,根据确定出的负载值,为虚线程工作组分配调度域,基于分配的调度域处理报文。
在确定出处于RUNNING状态的虚线程工作组数量和为虚线程工作组分配的调度域中的CPU数量相等,且需要添加新的虚线程工作组时,在所有调度域中,确定是否存在总负载值小于CPU数量,且总负载最小的调度域,其中,所述总负载值是调度域中全部虚线程工作组的负载值的和值,总负载是调度域中的CPU正在处理的虚线程工作组的和值。如果存在,将虚线程工作组添加到调度域中;如果不存在,将虚线程工作组添加到所有调度域中的总负载最小的调度域中。
在每个调度域中有两个调度队列,READY队列和SUSPEND队列,并且有和CPU数量相同的RUNNING虚拟线程工作组。为了达到运行过程中的负载均衡,每过10ms,SUSPEND队列中的虚拟线程工作组负载值递减1。在需要添加新的虚拟线程工作组时,在所有调度域中,确定是否存在总负载值小于CPU数量,且总负载最小的调度域,如果找到该调度域,则将虚拟线程工作组添加到该调度域中。否则,将该虚拟线程工作组添加到所有调度域中的总负载最小的调度域中。
在确定出处于RUNNING状态的虚线程工作组数量小于为所述虚线程工作组分配的调度域中的CPU数量时,重新计算各虚线程工作组的负载值,根据重新计算得到的虚线程工作组的负载值,确定各调度域的总负载,其中,所述总负载是调度域中的CPU正在处理的虚线程工作组的和值,在所有确定出的调度域总负载中:
若调度域是处于IDLE状态时,且处于IDLE状态的该调度域总负载最高,则该调度域仍旧保持IDLE状态,不参与负载均衡,即不为该调度域分配虚线程工作组。
根据确定出的负载值,为虚线程工作组分配调度域,包括:
步骤一:在确定出处于RUNNING状态的虚线程工作组数量小于为虚线程工作组分配的调度域中的CPU数量时,重新计算各虚线程工作组的负载值。
其中,负载值是虚线程工作组运行过程中,根据虚线程工作组每次执行的平均时间计算得到的。
步骤二:根据重新计算得到的虚线程工作组的负载值,确定各调度域的总负载。
其中,总负载是调度域中的CPU正在处理的虚线程工作组的负载值的和值。
步骤三:在所有确定出的调度域总负载中,确定总负载最低的调度域。以及针对除总负载最低的其它调度域,执行下述操作:
首先,根据各调度域的总负载,由高至低依次遍历各调度域,确定各调度域中处于SUSPEND状态的虚线程工作组。
其次,在确定出的SUSPEND状态的虚线程工作组中,获得指定虚线程工作组,将指定虚线程工作组添加到总负载最低的调度域中。
其中,指定虚线程工作组满足如下条件:将指定虚线程工作组添加到总负载最低的调度域中时,该调度域中,指定虚线程工作组类型的虚线程工作组的数量不大于该调度域中CPU的数量。
本发明实施例提出的技术方案中,当调度域IDLE时,运行调度均衡器,重新根据各虚拟线程工作组的运行历史计算各虚拟线程工作组的负载值,以及各调度域的总负载。如果发现自身的总负载最高,则继续保持IDLE状态。否则在确定出的SUSPEND状态的虚线程工作组中,获得指定虚线程工作组,将指定虚线程工作组添加到调度域中,其中,指定虚线程工作组满足如下条件:将所述指定虚线程工作组添加到调度域中时,调度域的总负载不超过设定阈值。
在基于分配的调度域处理报文之后,还包括:将处理完毕的虚线程工作组添加时间戳;并将添加时间戳的虚线程工作组置于SUSPEND状态。
将RUNNING的工作组小于CPU数量的调度域,称之为IDLE调度域。当某个调度域IDLE时,需要处理调度域间的负载均衡,可以最大化地利用CPU资源。
虚拟线程工作组运行结束之后,将其打上时间标签,并将其添加到调度域的SUSPEND队列。每次调度发生时,调度域判断SUSPEND队列中的工作组的时间标签,可以每10ms减1,并且更新该调度域的总负载。当一个工作队列从SUSPEND队列中被激活,在迁移到READY队列时,将其负载恢复成原始负载,并且更新该调度域的总负载。
相应地,本发明实施例还提出一种一种报文处理装置,如图5所示,包括:
划分模块401,用于将处理报文的多核中央处理器CPU划分为至少一个调度域,以及将处理报文的虚线程划分为至少一个虚线程工作组。
分配模块402,用于分别为划分的虚线程工作组分配调度域。
执行模块403,用于按照分配后的调度域,根据负载均衡原则处理每个虚线程工作组中的报文。
具体地,上述执行模块403,具体用于针对任一虚线程工作组,确定所述虚线程工作组的负载值;根据确定出的负载值,为所述虚线程工作组分配调度域,基于分配的调度域处理报文。
具体地,上述执行模块403,具体用于在确定出处于运行RUNNING状态的虚线程工作组数量和为所述虚线程工作组分配的调度域中的CPU数量相等,且需要添加新的虚线程工作组时,在所有调度域中,确定是否存在总负载值小于CPU数量,且总负载最小的调度域,其中,所述总负载值是调度域中全部虚线程工作组的负载值的和值,所述总负载是调度域中的CPU正在处理的虚线程工作组的和值;如果存在,将虚线程工作组添加到所述调度域中;如果不存在,将虚线程工作组添加到所有调度域中的总负载最小的调度域中。
具体地,上述执行模块403,具体用于度域中的CPU数量时,重新计算各虚线程工作组的负载值,其中,所述负载值是虚线程工作组运行过程中,根据所述虚线程工作组每次执行的平均时间计算得到的;
根据重新计算得到的虚线程工作组的负载值,确定各调度域的总负载,其中,所述总负载是调度域中的CPU正在处理的虚线程工作组的负载值的和值;在所有确定出的调度域总负载中:确定总负载最低的调度域;以及针对除总负载最低的其它调度域,执行下述操作:根据各调度域的总负载,由高至低依次遍历各调度域,确定各调度域中处于SUSPEND状态的虚线程工作组;在确定出的SUSPEND状态的虚线程工作组中,获得指定虚线程工作组,将所述指定虚线程工作组添加到总负载最低的调度域中,其中,所述指定虚线程工作组满足如下条件:将所述指定虚线程工作组添加到总负载最低的调度域中时,所述调度域中,指定虚线程工作组类型的虚线程工作组的数量不大于所述调度域中CPU的数量。
上述执行模块403,还用于将处理完毕的虚线程工作组添加时间戳;并将添加时间戳的虚线程工作组置于SUSPEND状态。
本领域的技术人员应明白,本发明的实施例可提供为方法、装置(设备)、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、只读光盘、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、装置(设备)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种报文处理方法,其特征在于,包括:
将处理报文的多核中央处理器CPU划分为至少一个调度域,以及将处理报文的虚线程划分为至少一个虚线程工作组;
分别为划分的虚线程工作组分配调度域;
按照分配后的调度域,根据负载均衡原则处理每个虚线程工作组中的报文。
2.如权利要求1所述的方法,其特征在于,按照分配后的调度域,根据负载均衡原则处理每个虚线程工作组中的报文,包括:
针对任一虚线程工作组,确定所述虚线程工作组的负载值;
根据确定出的负载值,为所述虚线程工作组分配调度域,基于分配的调度域处理报文。
3.如权利要求2所述的方法,其特征在于,根据确定出的负载值,为所述虚线程工作组分配调度域,包括:
在确定出处于运行RUNNING状态的虚线程工作组数量和为所述虚线程工作组分配的调度域中的CPU数量相等,且需要添加新的虚线程工作组时,在所有调度域中,确定是否存在总负载值小于CPU数量,且总负载最小的调度域,其中,所述总负载值是调度域中全部虚线程工作组的负载值的和值,所述总负载是调度域中的CPU正在处理的虚线程工作组的和值;
如果存在,将虚线程工作组添加到所述调度域中;如果不存在,将虚线程工作组添加到所有调度域中的总负载最小的调度域中。
4.如权利要求2所述的方法,其特征在于,根据确定出的负载值,为所述虚线程工作组分配调度域,包括:
在确定出处于运行RUNNING状态的虚线程工作组数量小于为所述虚线程工作组分配的调度域中的CPU数量时,重新计算各虚线程工作组的负载值,其中,所述负载值是虚线程工作组运行过程中,根据所述虚线程工作组每次执行的平均时间计算得到的;
根据重新计算得到的虚线程工作组的负载值,确定各调度域的总负载,其中,所述总负载是调度域中的CPU正在处理的虚线程工作组的负载值的和值;
在所有确定出的调度域总负载中:
确定总负载最低的调度域;以及
针对除总负载最低的其它调度域,执行下述操作:
根据各调度域的总负载,由高至低依次遍历各调度域,确定各调度域中处于SUSPEND状态的虚线程工作组;
在确定出的SUSPEND状态的虚线程工作组中,获得指定虚线程工作组,将所述指定虚线程工作组添加到总负载最低的调度域中,其中,所述指定虚线程工作组满足如下条件:将所述指定虚线程工作组添加到总负载最低的调度域中时,所述调度域中,指定虚线程工作组类型的虚线程工作组的数量不大于所述调度域中CPU的数量。
5.如权利要求2所述的方法,其特征在于,在基于分配的调度域处理报文之后,还包括:
将处理完毕的虚线程工作组添加时间戳;并
将添加时间戳的虚线程工作组置于SUSPEND状态。
6.一种报文处理装置,其特征在于,包括:
划分模块,用于将处理报文的多核中央处理器CPU划分为至少一个调度域,以及将处理报文的虚线程划分为至少一个虚线程工作组;
分配模块,用于分别为划分的虚线程工作组分配调度域;
执行模块,用于按照分配后的调度域,根据负载均衡原则处理每个虚线程工作组中的报文。
7.如权利要求6所述的装置,其特征在于,所述执行模块,具体用于针对任一虚线程工作组,确定所述虚线程工作组的负载值;根据确定出的负载值,为所述虚线程工作组分配调度域,基于分配的调度域处理报文。
8.如权利要求7所述的装置,其特征在于,所述执行模块,具体用于在确定出处于运行RUNNING状态的虚线程工作组数量和为所述虚线程工作组分配的调度域中的CPU数量相等,且需要添加新的虚线程工作组时,在所有调度域中,确定是否存在总负载值小于CPU数量,且总负载最小的调度域,其中,所述总负载值是调度域中全部虚线程工作组的负载值的和值,所述总负载是调度域中的CPU正在处理的虚线程工作组的和值;如果存在,将虚线程工作组添加到所述调度域中;如果不存在,将虚线程工作组添加到所有调度域中的总负载最小的调度域中。
9.如权利要求7所述的装置,其特征在于,所述执行模块,具体用于在确定出处于运行RUNNING状态的虚线程工作组数量小于为所述虚线程工作组分配的调度域中的CPU数量时,重新计算各虚线程工作组的负载值,其中,所述负载值是虚线程工作组运行过程中,根据所述虚线程工作组每次执行的平均时间计算得到的;根据重新计算得到的虚线程工作组的负载值,确定各调度域的总负载,其中,所述总负载是调度域中的CPU正在处理的虚线程工作组的负载值的和值;在所有确定出的调度域总负载中:确定总负载最低的调度域;以及针对除总负载最低的其它调度域,执行下述操作:根据各调度域的总负载,由高至低依次遍历各调度域,确定各调度域中处于SUSPEND状态的虚线程工作组;在确定出的SUSPEND状态的虚线程工作组中,获得指定虚线程工作组,将所述指定虚线程工作组添加到总负载最低的调度域中,其中,所述指定虚线程工作组满足如下条件:将所述指定虚线程工作组添加到总负载最低的调度域中时,所述调度域中,指定虚线程工作组类型的虚线程工作组的数量不大于所述调度域中CPU的数量。
10.如权利要求7所述的装置,其特征在于,所述执行模块,还用于将处理完毕的虚线程工作组添加时间戳;并将添加时间戳的虚线程工作组置于SUSPEND状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410781682.4A CN104506452B (zh) | 2014-12-16 | 2014-12-16 | 一种报文处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410781682.4A CN104506452B (zh) | 2014-12-16 | 2014-12-16 | 一种报文处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104506452A true CN104506452A (zh) | 2015-04-08 |
CN104506452B CN104506452B (zh) | 2017-12-26 |
Family
ID=52948167
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410781682.4A Active CN104506452B (zh) | 2014-12-16 | 2014-12-16 | 一种报文处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104506452B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104994032A (zh) * | 2015-05-15 | 2015-10-21 | 京信通信技术(广州)有限公司 | 一种信息处理的方法和装置 |
CN115168058A (zh) * | 2022-09-06 | 2022-10-11 | 深流微智能科技(深圳)有限公司 | 线程负载均衡方法、装置、设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060123423A1 (en) * | 2004-12-07 | 2006-06-08 | International Business Machines Corporation | Borrowing threads as a form of load balancing in a multiprocessor data processing system |
CN101256515A (zh) * | 2008-03-11 | 2008-09-03 | 浙江大学 | 多核处理器操作***负载均衡的实现方法 |
CN101923491A (zh) * | 2010-08-11 | 2010-12-22 | 上海交通大学 | 多核环境下线程组地址空间调度和切换线程的方法 |
CN102521047A (zh) * | 2011-11-15 | 2012-06-27 | 重庆邮电大学 | 实现多核处理器间中断负载均衡的方法 |
CN102752198A (zh) * | 2012-06-21 | 2012-10-24 | 北京星网锐捷网络技术有限公司 | 多核报文转发方法、多核处理器及网络设备 |
-
2014
- 2014-12-16 CN CN201410781682.4A patent/CN104506452B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060123423A1 (en) * | 2004-12-07 | 2006-06-08 | International Business Machines Corporation | Borrowing threads as a form of load balancing in a multiprocessor data processing system |
CN101256515A (zh) * | 2008-03-11 | 2008-09-03 | 浙江大学 | 多核处理器操作***负载均衡的实现方法 |
CN101923491A (zh) * | 2010-08-11 | 2010-12-22 | 上海交通大学 | 多核环境下线程组地址空间调度和切换线程的方法 |
CN102521047A (zh) * | 2011-11-15 | 2012-06-27 | 重庆邮电大学 | 实现多核处理器间中断负载均衡的方法 |
CN102752198A (zh) * | 2012-06-21 | 2012-10-24 | 北京星网锐捷网络技术有限公司 | 多核报文转发方法、多核处理器及网络设备 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104994032A (zh) * | 2015-05-15 | 2015-10-21 | 京信通信技术(广州)有限公司 | 一种信息处理的方法和装置 |
CN104994032B (zh) * | 2015-05-15 | 2018-09-25 | 京信通信***(中国)有限公司 | 一种信息处理的方法和装置 |
CN115168058A (zh) * | 2022-09-06 | 2022-10-11 | 深流微智能科技(深圳)有限公司 | 线程负载均衡方法、装置、设备及存储介质 |
CN115168058B (zh) * | 2022-09-06 | 2022-11-25 | 深流微智能科技(深圳)有限公司 | 线程负载均衡方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN104506452B (zh) | 2017-12-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10445850B2 (en) | Technologies for offloading network packet processing to a GPU | |
CN108762896B (zh) | 一种基于Hadoop集群任务调度方法及计算机设备 | |
US7694009B2 (en) | System and method for balancing TCP/IP/workload of multi-processor system based on hash buckets | |
Chowdhury et al. | Efficient coflow scheduling with varys | |
Tan et al. | Coupling task progress for mapreduce resource-aware scheduling | |
CN105511954B (zh) | 一种报文处理方法及装置 | |
EP2701074B1 (en) | Method, device, and system for performing scheduling in multi-processor core system | |
CN103309738B (zh) | 用户作业调度方法及装置 | |
CN106445675B (zh) | 一种b2b平台分布式应用调度与资源分配方法 | |
CN109564528B (zh) | 分布式计算中计算资源分配的***和方法 | |
US20160378570A1 (en) | Techniques for Offloading Computational Tasks between Nodes | |
CN111367630A (zh) | 一种基于云计算的多用户多优先级的分布式协同处理方法 | |
CN103412786A (zh) | 一种高性能服务器架构***及数据处理方法 | |
CN103365718A (zh) | 一种线程调度方法、线程调度装置及多核处理器*** | |
Rupprecht et al. | SquirrelJoin: Network-aware distributed join processing with lazy partitioning | |
CN103150213A (zh) | 负载平衡方法和装置 | |
CN108958944A (zh) | 一种多核处理***及其任务分配方法 | |
US11438271B2 (en) | Method, electronic device and computer program product of load balancing | |
CN112162835A (zh) | 一种异构云环境下实时任务的调度优化方法 | |
Komarasamy et al. | A novel approach for Dynamic Load Balancing with effective Bin Packing and VM Reconfiguration in cloud | |
CN106059940A (zh) | 一种流量控制方法及装置 | |
KR20130059300A (ko) | 멀티코어 시스템에서 실시간 및 서비스 품질 지원을 위한 스케줄링 | |
Subalakshmi et al. | Enhanced hybrid approach for load balancing algorithms in cloud computing | |
CN103744735A (zh) | 一种多核资源的调度方法及装置 | |
Alamro et al. | Cred: Cloud right-sizing to meet execution deadlines and data locality |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder |
Address after: Cangshan District of Fuzhou City, Fujian province 350002 Jinshan Road No. 618 Garden State Industrial Park 19 floor Patentee after: RUIJIE NETWORKS Co.,Ltd. Address before: Cangshan District of Fuzhou City, Fujian province 350002 Jinshan Road No. 618 Garden State Industrial Park 19 floor Patentee before: Beijing Star-Net Ruijie Networks Co.,Ltd. |
|
CP01 | Change in the name or title of a patent holder |