CN109086128B - 任务调度方法及装置 - Google Patents
任务调度方法及装置 Download PDFInfo
- Publication number
- CN109086128B CN109086128B CN201810991732.XA CN201810991732A CN109086128B CN 109086128 B CN109086128 B CN 109086128B CN 201810991732 A CN201810991732 A CN 201810991732A CN 109086128 B CN109086128 B CN 109086128B
- Authority
- CN
- China
- Prior art keywords
- core
- task
- cores
- processed
- actual
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请实施例提供一种任务调度方法及装置,属于数据处理领域。本方法包括:获取多核处理器的至少两个核中每个核在预设时间段内已处理的实际报文数量;根据所述每个核在所述预设时间段内已处理的实际报文数量,将在所述至少两个核中的第一核中的至少一个任务块调度至第二核中,其中,所述第一核在所述预设时间段内已处理的第一实际报文数量大于所述第二核在所述预设时间段内已处理的第二实际报文数量。本方案中,通过获取每个核的已处理的实际报文数量为依据来实现任务块在多个核之间的调度,由此可以更加精确的统计每个核任务的有效运行工作量,进而更有效的在多核间分配任务,达到系统整体的最优性能。
Description
技术领域
本申请涉及数据处理领域,具体而言,涉及一种任务调度方法及装置。
背景技术
在网络功能虚拟化(Network Function Virtualization,简称NFV)系统中,为了实现数据处理的极限性能,大多采用以下技术:采用轮询处理而不是中断通知以消除中断开销;为多核处理器的每一个核绑定唯一一个轮询处理线程,以消除在多核之间的任务调度开销。但数据处理流程中某些处理步骤并不一定能归属到固定的核,例如Qos出队列操作,可能有上千个队列需要进行出队处理,需要将这些出队处理分配到不同的核。通常的做法是将报文处理流程中这些不同的处理步骤切分为一个个基本任务块,统称为job,这些job的特点是:不是操作系统看到的线程或进程,主要的任务都是处理报文,对这些job的在多核处理器的多个核间的调度更类似于无操作系统环境下的任务调度。
但是,通过现有的做法计算出的每个核的负载是相同的,由此则无法对每个核中的job进行调度,而实际应用中,每个核的负载是不均衡的,所以,通过现有的做法来实现job的调度是无法真正达到每个核的负载均衡的。
发明内容
本申请实施例的目的在于提供一种任务调度方法及装置。
第一方面,本申请实施例提供了一种任务调度方法,所述方法包括:获取多核处理器的至少两个核中每个核在预设时间段内已处理的实际报文数量;根据所述每个核在所述预设时间段内已处理的实际报文数量,将在所述至少两个核中的第一核中的至少一个任务块调度至第二核中,其中,所述第一核在所述预设时间段内已处理的第一实际报文数量大于所述第二核在所述预设时间段内已处理的第二实际报文数量。本方案中,通过获取每个核的已处理的实际报文数量为依据来实现任务块在多个核之间的调度,由此可以更加精确的统计每个核任务的有效运行工作量,进而更有效的在多核间分配任务,达到系统整体的最优性能。
进一步地,所述第一核为所述至少两个核中在所述预设时间段内已处理的第一实际报文数量最大的负载最大核;所述第二核为所述至少两个核中在所述预设时间段内已处理的第二实际报文数量最小的负载最小核;根据所述每个核在所述预设时间段内已处理的实际报文数量,将在所述至少两个核中的第一核中的至少一个任务块调度至第二核中,包括:从所述负载最大核中选择所述至少一个任务块调度至所述负载最小核中。本实施例中,通过将负载最大核中的任务块调度至负载最小核中,从而实现负载最大核和负载最小核之间的负载均衡。
进一步地,根据所述每个核在所述预设时间段内已处理的实际报文数量,将在所述至少两个核中的第一核中的至少一个任务块调度至第二核中,包括:根据所述第一实际报文数量与所述第二实际报文数量计算出从所述第一核中调度所述至少一个任务块至所述第二核的依据值;若所述依据值与所述至少一个任务块的实际报文数量的差值小于预设阈值,则将所述至少一个任务单元调度至所述第二核中。本方案中,将所述第一核已处理的第一实际报文数量与所述第二核已处理的第二实际报文数量作为任务块调度的依据,由此可以更加精确的统计每个核任务的有效运行工作量,进而更有效的在多核间分配任务,达到系统整体的最优性能。
进一步地,所述依据值为所述第一实际报文数量与所述第二实际报文数量的差值除以2。
进一步地,获取多核处理器的至少两个核中每个核在预设时间段内已处理的实际报文数量之前,所述方法还包括:
根据需处理的报文的业务类型,将多个任务块分配给所述至少两个核。
进一步地,根据需处理的报文的业务类型,将多个任务块分配给所述至少两个核,包括:为所述多个任务块中的每个任务块分配属性标识;根据需处理的报文的业务类型以及根据所述每个任务块的属性标识,将所述多个任务块分配给所述至少两个核。本实施例中,在分配任务块时将任务块分配属性标识,以根据属性标识将任务块分配至多个核中,从而达到对任务块的有效分配和调度。
第二方面,本申请实施例提供了一种任务调度装置,所述装置包括:
报文处理数量获取模块,用于获取多核处理器的至少两个核中每个核在预设时间段内已处理的实际报文数量;
任务调度模块,用于根据所述每个核在所述预设时间段内已处理的实际报文数量,将在所述至少两个核中的第一核中的至少一个任务块调度至第二核中,其中,所述第一核在所述预设时间段内已处理的第一实际报文数量大于所述第二核在所述预设时间段内已处理的第二实际报文数量。
进一步地,所述第一核为所述至少两个核中在所述预设时间段内已处理的第一实际报文数量最大的负载最大核;所述第二核为所述至少两个核中在所述预设时间段内已处理的第二实际报文数量最小的负载最小核;所述任务调度模块,具体用于从所述负载最大核中选择所述至少一个任务块调度至所述负载最小核中。
进一步地,所述任务调度模块,具体用于根据所述第一实际报文数量与所述第二实际报文数量计算出从所述第一核中调度所述至少一个任务块至所述第二核的依据值;若所述依据值与所述至少一个任务块的实际报文数量的差值小于预设阈值,则将所述至少一个任务单元调度至所述第二核中。
进一步地,所述依据值为所述第一实际报文数量与所述第二实际报文数量的差值除以2。
进一步地,所述装置还包括:
任务分配模块,用于根据需处理的报文的业务类型,将多个任务块分配给所述至少两个核。
进一步地,所述任务分配模块,具体用于为所述多个任务块中的每个任务块分配属性标识;根据需处理的报文的业务类型以及根据所述每个任务块的属性标识,将所述多个任务块分配给所述至少两个核。
第三方面,本申请实施例提供一种电子设备,包括处理器以及存储器,所述存储器存储有计算机可读取指令,当所述计算机可读取指令由所述处理器执行时,运行如上述第一方面提供的所述方法中的步骤。
第四方面,本申请实施例提供一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时运行如上述第一方面提供的所述方法中的步骤。
本申请实施例提供一种任务调度方法及装置,本方法通过获取多核处理器的至少两个核中每个核在预设时间段内已处理的实际报文数量,然后根据所述每个核在所述预设时间段内已处理的实际报文数量,将在所述至少两个核中的第一核中的至少一个任务块调度至第二核中,其中,所述第一核在所述预设时间段内已处理的第一实际报文数量大于所述第二核在所述预设时间段内已处理的第二实际报文数量。本方案中,通过获取每个核的已处理的实际报文数量为依据来实现任务块在多个核之间的调度,由此可以更加精确的统计每个核任务的有效运行工作量,进而更有效的在多核间分配任务,达到系统整体的最优性能。
本申请的其他特征和优点将在随后的说明书阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请实施例了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的一种任务调度方法的流程图;
图2为本申请实施例提供的一种任务调度方法的第一应用示意图;
图3为本申请实施例提供的一种任务调度方法的第二应用示意图;
图4为本申请实施例提供的一种任务调度装置的结构框图;
图5为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
由于NFV系统是一种无操作系统,通常情况下无操作系统调度机制会将任务块job的执行时间Job_time和调度代码的执行时间Schel_time进行比较,如果这两者的比值Job_time/Schel_time偏小,说明job的执行时间非常短,可能存在负载较轻或者没有事物需要处理,此时job处于空转状态,所以,需要从比值高的核调度一些job到比值低的核,以平衡每个核的处理负载,达到多核处理的平衡。但是这种情况存在两个问题:1.例如,如果一个核有3个job,一个核有1个job,这4个job每次执行的时间是相同的,调度代码的执行时间也是相同的,即Job_time/Schel_time的比值也相同,因此这两个核计算出来的繁忙程度是一样的,但实际情况确实一个核分配了3个job,一个核只有1个job,两个核的任务分配是不均匀的;2.由于job是串行执行,并没有操作系统接入,因此job的执行独占多核处理器的,且需要自己主动退出,如果job运行实际不能量化,可能出现部分job运行时间过长,部分job运行时间过短,造成整个系统的不平衡。
所以,为了改善上述问题,本申请实施例提供了一种任务调度方法。
请参照图1,图1为本申请实施例提供的一种任务调度方法的流程图,所述方法包括如下步骤:
步骤S110:获取多核处理器的至少两个核中每个核在预设时间段内已处理的实际报文数量。
一般在多核处理器中包括有多个核,即包括至少两个核,每个核可单独用于对报文进行处理,每个核之间进行报文处理任务是并行的,而每个核中包括有至少两个任务块job,任务块用于对报文进行业务处理,也就是,每个任务块均用于处理不同业务的报文,如一个任务块用于对报文进行加密处理,一个任务块用于对报文进行解密处理,一个报文可以被多个任务块进行处理,但是,在每个核内,任务块之间是串行处理的,也就是只有一个任务块进行报文处理完之后,下一个任务块才开始进行报文处理。
为了对每个核的繁忙程度进行判断,所以需获取在预设时间段内每个核已处理的实际报文数量,每个核已处理的实际报文数量为每个核内的多个任务块已处理的实际报文数量总和,即,若某个核内有3个任务块,这3个任务块在预设时间段内已处理的实际报文数量分别为6、7、8,则这个核已处理的实际报文数量为21。
其中,预设时间段可以为当前时间以前的十分钟内,或者历史时间的某个时间段,当然,为了更加准确的表示每个核的繁忙程度,以便对任务块进行灵活调度,则预设时间段优选为当前时间以前的某个时间段,如当前时间以前的十分钟。
步骤S120:根据所述每个核在所述预设时间段内已处理的实际报文数量,将所述至少两个核中的第一核中的至少一个任务块调度至第二核。
在获取到每个核在所述预设时间段内的已处理的实际报文数量,则将每个核已处理的实际报文数量进行比较,如若第一核在所述预设时间段内已处理的第一实际报文数量大于所述第二核在所述预设时间段内已处理的第二实际报文数量,则将第一核中的至少一个任务块调度至第二核中。
具体地,例如,若第一核在预设时间段内已处理的实际报文数量为500,第二核在预设时间段内已处理的实际报文数量为300,由于每个核内的任务块限制的最大报文处理数量相同,所以,若第一核已处理的实际报文数量大于第二核已处理的实际报文数量,则表明第一核中的任务块的数量大于第二核中任务块的数量,所以可将第一核中的至少一个任务块调度至第二核中,由此,使得第一核与第二核的负载可达到均衡。
其中,至少一个任务块可选择第一核中的任意至少一个任务块。
需要说明的是,由于多核处理器中有多个核,需要均衡每个核之间的负载,所以,负载大的核可能有多个,负载小的核也可能有多个,则负载大的核可能均会调度任务块到负载小的核,例如,负载最大的核调度其任务块到负载最小的核,负载第二大的核调度其任务块到负载第二小的核中,依此方法,可以调度负载大的核中的任务块到负载小的核中,达到系统中的多个核之间的负载均衡,本实施例中通过计算每个核的已处理的实际报文数量为依据来实现多个核之间的任务块的调度,由此可以更加精确的统计每个核任务的有效运行工作量,进而更有效的在多核间分配任务,达到系统整体的最优性能。
另外,在上述实施例的基础上,由于多核处理器中包括有多个核,为了实现对任务块更好的调度,使得多个核之间达到更好的负载均衡,则所述第一核为所述至少两个核中在所述预设时间段内已处理的第一实际报文数量最大的负载最大核,所述第二核为所述至少两个核中在所述预设时间段内已处理的第二实际报文数量最小的负载最小核,在可从所述负载最大核中选择所述至少一个任务块调度至所述负载最小核。
可以理解地,为了实现减轻负载最大核的任务负担,则将负载最大核中的至少一个任务块调度至负载最小核,从而使得负载最大核的报文处理数量可以减少,负载最小核的报文处理数量增多,由此达到负载最大核和负载最小核之间的负载平衡。
作为一种实施方式,在从第一核调度至少一个任务块至所述第二核中时,为了选择需要调度哪些任务块,则还可以根据所述第一实际报文数量与所述第二实际报文数量计算出从所述第一核中调度所述至少一个任务块至所述第二核的依据值,若所述依据值与所述至少一个任务块的实际报文数量的差值小于预设值,则将所述至少一个任务块调度至所述第二核中。
其中,所述依据值可以为所述第一实际报文数量与所述第二实际报文数量的差值除以2,如第一实际报文数量为500,第二实际报文数量为300,则依据值为100,其预设阈值设置为10,若第一核中第一个任务块已处理的实际报文数量为98,则第一个任务块已处理的实际报文数量与依据值的差值小于预设阈值,则将第一个任务块调度至第二核中,若第一核中第二个任务块已处理的实际报文数量为96,则第二个任务块已处理的实际报文数量与依据值的差值也小于预设阈值,则也可将第二个任务块调度至第二核中。
需要说明的是,若第一核中有多个任务块需调度至第二核中,可能使得在未来的一段时间内第一核和第二核的负载不均衡,即第二核的负载较大,第一核的负载较小,所以还可从多个任务块中选择其中一个任务块调度至第二核中,其中,可以从多个任务块中任意选择一个任务块调度至第二核,也可从多个任务块中选择已处理的实际报文数量最接近依据值的任务块调度至第二核中。
NFV系统在启动后,会根据多核处理器的核数,生成一些用于报文处理的任务块,例如,多核处理器有四个核,可根据实际需求,如有100个报文需处理,则可生成10个任务块,根据需要处理的报文的业务类型,可将这些任务块随机分配到每个核中,当然这些任务块也可按数量平均分配到这四个核中,即在本实施例中,将包含所述至少一个任务块的多个任务块分配给所述至少两个核。其中,业务类型可以包括但不限于:加密、解密、封装等业务。
其中,任务块在分配到每个核中时,可为多个任务块中的每个任务块分配属性标识,然后根据需处理的报文的业务类型以及每个任务块的属性标识,将这多个任务块分配给所述至少两个核。任务块的属性标识与核的标识对应,如多核处理器包括核1和核2,若为第一个任务块分配的属性标识为1,第二个任务块分配的属性标识为2,则将第一个任务块分配给核1,表明第一个任务块属于核1,将第二个任务块分配给核2,表明第二个任务块属于核2,若需要将第一个任务块调度至核2中时,则可将第一个任务块的属性标识更改为2,然后在分配给核2即可。
在上述实施例的基础上,为了实现对每个核中的每个任务块已处理的实际报文数量进行监控,使得每个任务块不会有较大的任务处理负担,则在为每个核分配任务块时,设置一个任务块的最大报文处理数量,如1000,即每个任务块最多只能处理1000个报文,则上述获取的每个任务块已处理的实际报文数量可能与最大报文处理数量相等,也可能小于最大报文处理数量。
另外,为了及时结束每个核中任务块的处理任务,防止任务块处于空闲,则可获取每个核中的至少一个任务块已处理的实际报文数量,然后判断所述至少一个任务块已处理的实际报文数量是否达到所述至少一个任务块的最大报文处理数量,在为是时,结束所述至少一个任务块的处理任务。或者,判断每个核中的至少一个任务块是否已处理完所需处理的报文,即判断该至少一个任务块是否没有报文要处理,在为是时,结束所述至少一个任务块的处理任务。由此,可避免任务块和任务块之间工作量的不平衡,避免某些任务块占用多核处理器过长,某些任务块占用多核处理器过短。
下面以一个具体的实施例对本申请实施例提供的任务调度方法进行说明。
如图2所示,核CORE0和核CORE1为多核处理器中的两个核,在核CORE0中其任务块job队列包括三个任务块job:任务块job1、任务块job2和任务块job3,在核CORE1中其任务块job队列包括一个任务块job1。其中,核CORE0中的任务块job1、任务块job2和任务块job3的属性标识均为Core=0,获取到的任务块job1已处理的实际报文数量为50,任务块job2已处理的实际报文数量为100,任务块job3已处理的实际报文数量为150,则该核0已处理的实际报文数量为STATISTIC_HIGH=300;核CORE1中的任务块job1的属性标识为Core=1,其任务块job1已处理的实际报文数量为100,则该核1已处理的实际报文数量为STATISTIC_LOW=100,则核CORE0为负载最大核,核CORE1为负载最小核,则调度任务块的依据值:STATISTIC_JOB=(STATISTIC_HIGH-STATISTIC_LOW)/2=(300-100)/2=100,则依据值为100,若采用将已处理的实际报文数量最接近的任务单元进行调度,则将核CORE0中的任务块job2调度至核CORE1中,如图3所示,先修改任务块job2的属性标识为Core=1,按照属性标识加入到核CORE1的Job队列中,由此,完成了将任务核CORE0中的任务块job2调度至核CORE1中,实现了核CORE0与核CORE1之间的负载均衡。
请参照图4,图4为本申请实施例提供的一种任务调度装置200的结构框图,所述装置包括:
报文处理数量获取模块210,用于获取多核处理器的至少两个核中每个核在预设时间段内已处理的实际报文数量;
任务调度模块220,用于根据所述每个核在所述预设时间段内已处理的实际报文数量,将在所述至少两个核中的第一核中的至少一个任务块调度至第二核中,其中,所述第一核在所述预设时间段内已处理的第一实际报文数量大于所述第二核在所述预设时间段内已处理的第二实际报文数量。
进一步地,所述所述第一核为所述至少两个核中在所述预设时间段内已处理的第一实际报文数量最大的负载最大核;所述第二核为所述至少两个核中在所述预设时间段内已处理的第二实际报文数量最小的负载最小核;所述任务调度模块220,具体用于从所述负载最大核中选择所述至少一个任务块调度至所述负载最小核中。
进一步地,所述任务调度模块220,具体用于根据所述第一实际报文数量与所述第二实际报文数量计算出从所述第一核中调度所述至少一个任务块至所述第二核的依据值;若所述依据值与所述至少一个任务块的实际报文数量的差值小于预设阈值,则将所述至少一个任务单元调度至所述第二核中。
进一步地,所述依据值为所述第一实际报文数量与所述第二实际报文数量的差值除以2。
进一步地,所述装置还包括:
任务分配模块,用于根据需处理的报文的业务类型,将包含所述至少一个任务块的多个任务块分配给所述至少两个核。
进一步地,所述任务分配模块,具体用于为多个任务块中的每个任务块分配属性标识;根据需处理的报文的业务类型以及根据所述每个任务块的属性标识,将所述多个任务块分配给所述至少两个核。
请参照图5,图5为本申请实施例提供的一种电子设备的结构示意图,所述电子设备可以包括:至少一个处理器110,例如多核处理器,至少一个通信接口120,至少一个存储器130和至少一个通信总线140。其中,通信总线140用于实现这些组件直接的连接通信。其中,本申请实施例中设备的通信接口120用于与其他节点设备进行信令或数据的通信。存储器130可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器130可选的还可以是至少一个位于远离前述处理器的存储装置。存储器130中存储有计算机可读取指令,当所述计算机可读取指令由所述处理器110执行时,电子设备执行上述图1所示方法过程。
本申请实施例提供一种可读取存储介质,所述计算机程序被处理器执行时,执行如图1所示方法实施例中电子设备所执行的方法过程。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置的具体工作过程,可以参考前述方法中的对应过程,在此不再过多赘述。
综上所述,本申请实施例提供一种任务调度方法及装置,本方法通过获取多核处理器的至少两个核中每个核在预设时间段内已处理的实际报文数量,然后根据所述每个核在所述预设时间段内已处理的实际报文数量,将在所述至少两个核中的第一核中的至少一个任务块调度至第二核中,其中,所述第一核在所述预设时间段内已处理的第一实际报文数量大于所述第二核在所述预设时间段内已处理的第二实际报文数量。本方案中,通过获取每个核的已处理的实际报文数量为依据来实现任务块在多个核之间的调度,由此可以更加精确的统计每个核任务的有效运行工作量,进而更有效的在多核间分配任务,达到系统整体的最优性能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
Claims (8)
1.一种任务调度方法,其特征在于,所述方法包括:
获取多核处理器的至少两个核中每个核在预设时间段内已处理的实际报文数量;
根据所述每个核在所述预设时间段内已处理的实际报文数量,将在所述至少两个核中的第一核中的至少一个任务块调度至第二核中,其中,所述第一核在所述预设时间段内已处理的第一实际报文数量大于所述第二核在所述预设时间段内已处理的第二实际报文数量;
其中,根据所述每个核在所述预设时间段内已处理的实际报文数量,将在所述至少两个核中的第一核中的至少一个任务块调度至第二核中,包括:
根据所述第一实际报文数量与所述第二实际报文数量计算出从所述第一核中调度所述至少一个任务块至所述第二核的依据值,其中,所述依据值为所述第一实际报文数量与所述第二实际报文数量的差值除以2;
若所述依据值与所述至少一个任务块已处理的实际报文数量的差值小于预设阈值,则将所述至少一个任务块调度至所述第二核中。
2.根据权利要求1所述的方法,其特征在于,所述第一核为所述至少两个核中在所述预设时间段内的负载最大核;所述第二核为所述至少两个核中在所述预设时间段内的负载最小核;根据所述每个核在所述预设时间段内已处理的实际报文数量,将在所述至少两个核中的第一核中的至少一个任务块调度至第二核中,包括:
从所述负载最大核中选择所述至少一个任务块调度至所述负载最小核中。
3.根据权利要求1或2所述的方法,其特征在于,获取多核处理器的至少两个核中每个核在预设时间段内已处理的实际报文数量之前,所述方法还包括:
根据需处理的报文的业务类型,将多个任务块分配给所述至少两个核。
4.根据权利要求3所述的方法,其特征在于,根据需处理的报文的业务类型,将多个任务块分配给所述至少两个核,包括:
为所述多个任务块中的每个任务块分配属性标识;
根据需处理的报文的业务类型以及根据所述每个任务块的属性标识,将所述多个任务块分配给所述至少两个核。
5.一种任务调度装置,其特征在于,所述装置包括:
报文处理数量获取模块,用于获取多核处理器的至少两个核中每个核在预设时间段内已处理的实际报文数量;
任务调度模块,用于根据所述每个核在所述预设时间段内已处理的实际报文数量,将在所述至少两个核中的第一核中的至少一个任务块调度至第二核中,其中,所述第一核在所述预设时间段内已处理的第一实际报文数量大于所述第二核在所述预设时间段内已处理的第二实际报文数量;
其中,所述任务调度模块,具体用于根据所述第一实际报文数量与所述第二实际报文数量计算出从所述第一核中调度所述至少一个任务块至所述第二核的依据值,其中,所述依据值为所述第一实际报文数量与所述第二实际报文数量的差值除以2;若所述依据值与所述至少一个任务块已处理的实际报文数量的差值小于预设阈值,则将所述至少一个任务块调度至所述第二核中。
6.根据权利要求5所述的装置,其特征在于,所述第一核为所述至少两个核中在所述预设时间段内已处理的第一实际报文数量最大的负载最大核;所述第二核为所述至少两个核中在所述预设时间段内已处理的第二实际报文数量最小的负载最小核;所述任务调度模块,具体用于从所述负载最大核中选择所述至少一个任务块调度至所述负载最小核中。
7.根据权利要求5或6所述的装置,其特征在于,所述装置还包括:
任务分配模块,用于根据需处理的报文的业务类型,将多个任务块分配给所述至少两个核。
8.根据权利要求7所述的装置,其特征在于,所述任务分配模块,具体用于为所述多个任务块中的每个任务块分配属性标识;根据需处理的报文的业务类型以及根据所述每个任务块的属性标识,将所述多个任务块分配给所述至少两个核。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810991732.XA CN109086128B (zh) | 2018-08-28 | 2018-08-28 | 任务调度方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810991732.XA CN109086128B (zh) | 2018-08-28 | 2018-08-28 | 任务调度方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109086128A CN109086128A (zh) | 2018-12-25 |
CN109086128B true CN109086128B (zh) | 2021-06-18 |
Family
ID=64795091
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810991732.XA Active CN109086128B (zh) | 2018-08-28 | 2018-08-28 | 任务调度方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109086128B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109947015B (zh) * | 2019-03-15 | 2020-08-28 | 浙江中控技术股份有限公司 | 任务的执行方法及主控制器 |
CN111752692B (zh) * | 2020-06-23 | 2024-04-12 | 北京经纬恒润科技股份有限公司 | 仿真环境下的多核任务处理方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101217467A (zh) * | 2007-12-28 | 2008-07-09 | 杭州华三通信技术有限公司 | 核间负载分发装置及方法 |
CN102455944A (zh) * | 2010-10-29 | 2012-05-16 | 迈普通信技术股份有限公司 | 多核负载均衡的方法以及处理器 |
CN105471770A (zh) * | 2015-11-20 | 2016-04-06 | 福建星网锐捷网络有限公司 | 一种基于多核处理器的报文处理方法及装置 |
CN105786674A (zh) * | 2016-03-24 | 2016-07-20 | 华为技术有限公司 | 一种调度方法及电子设备 |
CN106506393A (zh) * | 2016-02-05 | 2017-03-15 | 华为技术有限公司 | 一种数据流处理方法、装置和系统 |
CN108306912A (zh) * | 2017-01-12 | 2018-07-20 | 中兴通讯股份有限公司 | 虚拟网络功能管理方法及其装置、网络功能虚拟化系统 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103870322B (zh) * | 2012-12-17 | 2017-06-30 | 联发科技股份有限公司 | 控制任务转移的方法、非暂时性计算机可读介质、异构多核系统 |
CN105511954B (zh) * | 2014-09-23 | 2020-07-07 | 华为技术有限公司 | 一种报文处理方法及装置 |
US10275206B2 (en) * | 2017-01-26 | 2019-04-30 | Bandlab | Plug-in load balancing |
-
2018
- 2018-08-28 CN CN201810991732.XA patent/CN109086128B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101217467A (zh) * | 2007-12-28 | 2008-07-09 | 杭州华三通信技术有限公司 | 核间负载分发装置及方法 |
CN102455944A (zh) * | 2010-10-29 | 2012-05-16 | 迈普通信技术股份有限公司 | 多核负载均衡的方法以及处理器 |
CN105471770A (zh) * | 2015-11-20 | 2016-04-06 | 福建星网锐捷网络有限公司 | 一种基于多核处理器的报文处理方法及装置 |
CN106506393A (zh) * | 2016-02-05 | 2017-03-15 | 华为技术有限公司 | 一种数据流处理方法、装置和系统 |
CN105786674A (zh) * | 2016-03-24 | 2016-07-20 | 华为技术有限公司 | 一种调度方法及电子设备 |
CN108306912A (zh) * | 2017-01-12 | 2018-07-20 | 中兴通讯股份有限公司 | 虚拟网络功能管理方法及其装置、网络功能虚拟化系统 |
Also Published As
Publication number | Publication date |
---|---|
CN109086128A (zh) | 2018-12-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20190324819A1 (en) | Distributed-system task assignment method and apparatus | |
CN107800768B (zh) | 开放平台控制方法和系统 | |
CN109936604B (zh) | 一种资源调度方法、装置和系统 | |
CN109564528B (zh) | 分布式计算中计算资源分配的系统和方法 | |
CN109582447B (zh) | 计算资源分配方法、任务处理方法及装置 | |
CN107018091B (zh) | 资源请求的调度方法和装置 | |
US9870269B1 (en) | Job allocation in a clustered environment | |
CN110659123B (zh) | 一种基于消息的分布式任务分发调度方法及装置 | |
KR20170029263A (ko) | 부하 분산 장치 및 방법 | |
CN104468407A (zh) | 实现业务平台资源弹性分配的方法与装置 | |
US9535749B2 (en) | Methods for managing work load bursts and devices thereof | |
CN106844055B (zh) | 一种任务的执行方法和装置 | |
KR20110080735A (ko) | 컴퓨팅 시스템 및 방법 | |
CN109710416B (zh) | 资源调度方法及装置 | |
CN109039953B (zh) | 带宽调度方法及装置 | |
CN105159779B (zh) | 提高多核cpu数据处理性能的方法和系统 | |
CN105022668B (zh) | 一种作业调度方法及系统 | |
CN110837401A (zh) | 一种java线程池分级处理方法和装置 | |
CN109086128B (zh) | 任务调度方法及装置 | |
CN111930516B (zh) | 一种负载均衡方法及相关装置 | |
CN113568721A (zh) | 一种任务调度方法及相关设备 | |
CN112860387A (zh) | 分布式任务调度方法、装置、计算机设备及存储介质 | |
CN112073532B (zh) | 一种资源分配的方法及装置 | |
US10733024B2 (en) | Task packing scheduling process for long running applications | |
Hu et al. | Job scheduling without prior information in big data processing systems |
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 |