CN111506398B - 任务调度方法和装置、存储介质、电子装置 - Google Patents
任务调度方法和装置、存储介质、电子装置 Download PDFInfo
- Publication number
- CN111506398B CN111506398B CN202010138785.4A CN202010138785A CN111506398B CN 111506398 B CN111506398 B CN 111506398B CN 202010138785 A CN202010138785 A CN 202010138785A CN 111506398 B CN111506398 B CN 111506398B
- Authority
- CN
- China
- Prior art keywords
- task
- module
- execution
- current
- load
- 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
- 238000000034 method Methods 0.000 title claims abstract description 35
- 238000013500 data storage Methods 0.000 claims description 31
- 238000004364 calculation method Methods 0.000 claims description 18
- 238000004590 computer program Methods 0.000 claims description 16
- 239000000284 extract Substances 0.000 claims description 3
- 238000000605 extraction Methods 0.000 claims description 3
- 230000005540 biological transmission Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 230000000737 periodic effect Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003442 weekly effect Effects 0.000 description 1
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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
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)
Abstract
本发明提供了一种任务调度方法和装置、存储介质、电子装置,其中,该方法包括:任务调度模块在待分配任务队列中确定当前待分配任务;任务调度模块确定当前待分配任务的负载参数;任务调度模块获取每个任务执行模块的当前任务队列,并计算每个任务执行模块的实时剩余负载;任务调度模块根据当前待分配任务的负载参数、以及每个任务执行模块的实时剩余负载,确定针对当前待分配任务的分配策略,从而在任务调度时,根据任务负载参数以及每个任务执行模块的负载情况分配任务,更加细化的控制调度逻辑,使得整个调度系统的负荷趋向均衡。
Description
技术领域
本发明涉及数据库领域,具体而言,涉及一种任务调度方法和装置、存储介质、电子装置。
背景技术
在构建企业大数据平台时,存在以下的数据接入场景:需要从源数据库(比如面向具体事务处理的传统关系数据库)中将数据表导入到目标库(比如分布式数据库)。上述的数据接入场景,既可以是全量接入,也可以是周期性(比如每天、每月)增量接入。
在现有技术中针对上述的数据接入场景,任务调度系统通常都是以表为粒度进行任务调度。在调度过程中,任务调度系统通常是以表的优先级来做比较粗的调度;有些任务调度系统可能也会考虑不同处理模块之间的负载均衡,但是考虑的因素较少,对于调度任务的负荷需要人工设置,不够智能化和自动化。
发明内容
本发明实施例提供了一种任务调度方法和装置、存储介质、电子装置,以至少解决现有技术中的调度任务的负荷需要人工设置,不够智能化和自动化问题。
根据本发明的一个实施例,提供了一种任务调度方法,包括:任务调度模块在待分配任务队列中确定当前待分配任务;任务调度模块确定当前待分配任务的负载参数;任务调度模块获取每个任务执行模块的当前任务队列,并计算每个任务执行模块的实时剩余负载;任务调度模块根据当前待分配任务的负载参数、以及每个任务执行模块的实时剩余负载,确定针对当前待分配任务的分配策略。
进一步地,任务调度模块确定当前待分配任务的负载参数,包括:任务调度模块确定当前待分配任务的任务类型标识;任务调度模块向数据存储模块获取任务类型标识对应的负载参数。
进一步地,在任务调度模块向数据存储模块获取任务类型标识对应的负载参数之前,该方法还包括:任务调度模块在每个任务执行模块执行完毕一个任务之后,获取任务执行模块反馈的任务执行信息日志;任务调度模块提取任务执行信息日志的执行信息;任务调度模块将提取出的执行信息发送至数据存储模块,以使任务参数负载模块根据执行信息更新对应类型任务的负载参数。
进一步地,负载参数包括预测任务执行时长,在任务调度模块向数据存储模块获取任务类型标识对应的负载参数之前,该方法还包括:任务调度模块确定当前待分配任务对应类型的历史平均执行速度;任务调度模块确定当前待分配任务的本次执行时间间隔;任务调度模块根据历史平均执行速度和本次执行时间间隔的乘积,确定当前待分配任务的预测任务执行时长。
进一步地,任务调度模块获取每个任务执行模块的当前任务队列,并计算每个任务执行模块的实时剩余负载,包括:任务调度模块请求每个任务执行模块反馈针对当前任务队列的执行情况;任务调度模块根据当前任务队列的执行情况,计算对应任务执行模块的实时剩余负载,计算公式如下:
其中,N表示对应任务执行模块允许同时执行的最大任务数,C表示CPU利用率,M表示内存利用率;n表示对应任务执行模块的当前任务队列的任务数,Li表示第i个任务的负载,Tni表示第i个任务的预测时长,t0i表示第i个任务的启动时间点,t表示当前时间点。
根据本发明的另一个实施例,提供了一种任务调度装置,包括:第一确定模块,用于使任务调度模块在待分配任务队列中确定当前待分配任务;第二确定模块,用于使任务调度模块确定当前待分配任务的负载参数;第一获取模块,用于使任务调度模块获取每个任务执行模块的当前任务队列,并计算每个任务执行模块的实时剩余负载;第三确定模块,用于使任务调度模块根据当前待分配任务的负载参数、以及每个任务执行模块的实时剩余负载,确定针对当前待分配任务的分配策略。
进一步地,第二确定模块包括:确定单元,用于使任务调度模块确定当前待分配任务的任务类型标识;获取单元,用于使任务调度模块向数据存储模块获取任务类型标识对应的负载参数。
进一步地,该装置还包括:第二获取模块,用于在任务调度模块向数据存储模块获取任务类型标识对应的负载参数之前,使任务调度模块在每个任务执行模块执行完毕一个任务之后,获取任务执行模块反馈的任务执行信息日志;提取模块,用于使任务调度模块提取任务执行信息日志的执行信息;发送模块,用于使任务调度模块将提取出的执行信息发送至数据存储模块,以使任务参数负载模块根据执行信息更新对应类型任务的负载参数。
进一步地,负载参数包括预测任务执行时长,该装置还包括:第四确定模块,用于在任务调度模块向数据存储模块获取任务类型标识对应的负载参数之前,使任务调度模块确定当前待分配任务对应类型的历史平均执行速度;第五确定模块,用于使任务调度模块确定当前待分配任务的本次执行时间间隔;第六确定模块,用于使任务调度模块根据历史平均执行速度和本次执行时间间隔的乘积,确定当前待分配任务的预测任务执行时长。
进一步地,第一获取模块包括:请求单元,用于使任务调度模块请求每个任务执行模块反馈针对当前任务队列的执行情况;计算单元,用于任务调度模块根据当前任务队列的执行情况,计算对应任务执行模块的实时剩余负载,计算公式如下:
其中,N表示对应任务执行模块允许同时执行的最大任务数,C表示CPU利用率,M表示内存利用率;n表示对应任务执行模块的当前任务队列的任务数,Li表示第i个任务的负载,Tni表示第i个任务的预测时长,t0i表示第i个任务的启动时间点,t表示当前时间点。
根据本发明的又一个实施例,还提供了一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
根据本发明的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。
通过本发明,通过任务调度模块在待分配任务队列中确定当前待分配任务;任务调度模块确定当前待分配任务的负载参数;任务调度模块获取每个任务执行模块的当前任务队列,并计算每个任务执行模块的实时剩余负载;任务调度模块根据当前待分配任务的负载参数、以及每个任务执行模块的实时剩余负载,确定针对当前待分配任务的分配策略,从而在任务调度时,根据任务负载参数以及每个任务执行模块的负载情况分配任务,更加细化的控制调度逻辑,使得整个调度系统的负荷趋向均衡。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的任务调度方法的一种可选的应用场景的示例图;
图2是根据本发明实施例的任务调度方法的流程图;
图3是根据本发明实施例的任务调度装置的示意图;
图4是本发明实施例的一种电子装置的硬件结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例1
本实施例提供了一种任务调度方法,可以应用于调度系统,图1所示为一种可选的调度系统的示例,如图1所示,该调度系统可以包括任务调度模块、配置模块、一个或多个任务执行模块、数据存储模块、任务负载计算模块。其中,配置模块用于配置任务信息(如任务的优先级)、负载参数信息(如用于计算任务负载的负载权重因子等),并且把它们保存到数据存储模块中;数据存储模块用于存储任务配置信息、任务执行日志信息、任务执行时长和接入的数据大小,从数据存储模块,可以检索到一个数据表所对应的接入任务历次执行时长以及每次接入的数据大小,等等;任务负载计算模块用于计算任务的负载参数,以及每个任务执行模块的剩余负载;任务执行模块用于执行任务;任务调度模块用于确定待分配任务、根据待分配任务的负载参数和每个任务执行模块的剩余负载确定任务的分配策略。
应理解,上述调度系统可以运行在电脑、工作站、服务器或类似的运算设备或运算设备集群之中,例如,上述各个模块可以分布在运算设备集群的不同设备之中。运行在不同的运算设备仅是方案在执行主体上的差异,本领域人员可预见在不同运算设备中运行能够产生相同的技术效果。
本实施例提供的任务调度方法,通过任务调度模块在分配任务时,基于任务的历史处理情况所计算的负载分配任务,其中,每个任务执行模块在处理完任务之后,会将任务的历史调度的耗时、数据量等信息反馈至任务调度模块,以使任务调度模块可以根据任务的历史处理情况进行调度;此外,任务调度模块在分配任务时,还需要实时获取各个任务执行模块的当前任务队列,判断每个任务执行模块的当前负载,进而根据待分配的任务的负载确定待分配任务的分配策略。本实施例的任务调度方法在任务调度时,根据任务负载参数以及每个任务执行模块的负载情况分配任务,更加细化的控制调度逻辑,使得整个调度系统的负荷趋向均衡。
如图2所示,本实施例提供的任务调度方法包括如下步骤:
步骤101,任务调度模块在待分配任务队列中确定当前待分配任务。
待分配队列可以存储在数据存储模块中。待分配任务队列中包括多个任务,每个任务可以是针对一个数据表执行数据接入,即,将该数据表从其数据来源更新至目标库,具体的数据接入方式可以是全量接入、也可以是增量接入,本实施例对此不作具体限定。
任务调度模块可以使用配置模块获取任务信息,并根据预先配置的规则确定当前待分配任务。任务信息可以包括任务所对应的数据表的多种属性信息,例如,数据表的来源、数据表的数据量大小、数据表的优先级,等等。配置模块可以用于接收用户的操作配置,例如,数据表的优先级和数据表的来源等信息可以是用户的配置操作确定的,此外,配置模块还可以用于获取数据表的其它不可配置的属性信息,例如,数据表的类型、数据表的数据量大小等等。可选的,配置模块获取到的任务信息可以存储到数据存储模块中,以便于后续需要对应任务的任务信息时可以从数据存储模块中读取。
例如,待分配任务队列每个任务可以具有优先级的属性,优先级用于表示任务执行的优先级,优先级较高的任务会比优先级较低的任务优先执行,优先级相同的任务则可以其它属性进行排序,例如,排序方式可以是,首先基于优先级顺序排列待分配任务队列中的任务,进而基于接收到任务的时间顺序(或者基于任务的负载大小)排列相同优先级的多个任务。具体而言,任务调度模块在接收到新建的任务之后,根据任务接收时间将该任务插入到相同优先级的任务队列中,任务调度模块在调度任务时,先从高优先级队列中取出首位的任务进行分发,只有高优先级任务队列的任务分发完毕,才会分发低一级的任务队列。
步骤102,任务调度模块确定当前待分配任务的负载参数。
负载参数是用于衡量任务执行模块处理该任务的负载的参数,负载参数可以依据同类型任务的历史执行时长和数据量来评估。任务执行模块用于执行具体的任务,每个任务执行模块可以同时执行一个任务或并行的执行多个任务。任务的类型可以是预先配置的,具体来说,可以通过任务的类型标识来指示任务的类型。举例来说,针对相同的数据来源、相同的业务、在相同的时间间隔内获取数据表的任务,可以配置相同的任务类型标识。例如,针对某银行的定期储蓄业务,以一周时间为固定周期获取存储定期存储业务的具体数据,相应的,每周到固定的时间都会生成一个任务,以针对该银行的定期储蓄业务的数据表执行数据接入。
具体的,确定负载参数的一种可选的实施方式为,每个任务执行模块在执行完一个任务之后,获取任务执行信息日志,提取该任务的历史执行信息,包括:数据量、任务标识(例如预先为该任务表分配的标识码或该表在目标库中的任务地址)等信息反馈至数据存储模块,针对于每个任务,由任务负载计算模块根据接收到的历史执行信息确定该任务的负载参数。可选的,如果根据任务执行信息日志判断出该任务未被执行过,可以将预设的默认数值作为当前待分配任务的负载参数。
负载参数可以包括预测任务执行时长。其中,预测的任务执行时长可以通过以下方式计算:确定当前待分配任务对应类型的历史平均执行速度;确定当前待分配任务的本次执行时间间隔;根据历史平均执行速度和本次执行时间间隔的乘积,确定当前待分配任务的预测任务执行时长。
例如,一个任务每个周期(每天、或者每周、每个月)执行一次数据接入。以分钟作为任务执行时长的单位,用T表示任务执行时长。那么,根据任务对应的时间周期和数据表的接入方式的不同,将上述计算预测的任务执行时长的方式分为以下几种情况分别讨论。
(1)如果一个表在每个周期每次都是全量接入全表的记录数据,那么通过相邻两次接入数据量D,可以计算出该表每个周期的增量数据大小(deltaD,deltaD=Di–Di-1);同理,通过相邻两次任务执行时长T,可以计算出该表每个周期的增量时长(deltaT,deltaT=Ti–Ti-1)。
(1a)如果一个表的接入周期是不变的,也即,任意两次相邻的数据接入任务的时间间隔是相同的,那么通过对一个表历史记录中所有的deltaD可以计算出该表的周期平均增量数据大小(avgDeltaD),进一步,可以估算出该表在新的执行批次中所要接入的数据量:Dn=Dn-1+avgDeltaD。
同理,可以估算出该表在新的执行批次中所要的时长:Tn=Tn-1+avgDeltaT。avgDeltaT为该表的周期平均增加执行时长。
(1b)如果一个表的接入周期是变化的,那么通过对deltaD以及对应的Ti进行计算,折算出天平均增量数据avgDeltaDd,进一步,可以估算出该表在新的执行批次中所要接入的预测数据量:Dn=Dn-1+avgDeltaDd*d,其中d为当前任务执行日期与上次执行日期相隔的天数。
同理,可以估算出该表在新的执行批次中所要的预测时长:Tn=Tn-1+avgDeltaTd*d。
(2)如果一个表每次都是增量接入,那么可以直接获取到该表每个周期的数据接入量大小,也即该表的增量数据大小(deltaD)。
(2a)如果一个表的接入周期是不变的,那么通过对一个表历史记录中所有的deltaD可以计算出该表的周期平均数据接入量(avgdeltaD),进一步,可以确定该表在本次待执行任务中所要接入的预测数据量为avgdeltaD。
同理,可以估算出该表在新的执行批次中所要的预测时长为avgT。
(2b)如果一个表的接入周期是变化的,那么通过对deltaD以及对应的Ti进行计算,折算出天平均数据avgdeltaDd,进一步,可以估算出该表在本次任务执行所要接入的数据量为avgdeltaDd*d,其中d为本次任务执行日期跟上次任务执行日期相隔的天数。
同理,可以估算出该表在新的执行批次中所要的预测时长:Tn=avgTd*d。
此外,不管一个表是全量接入还是增量接入,用Dmax表示该表历次接入数据量的最大值,用Dmin表示该表历次接入数据量的最小值,用Tmax表示该表历次任务执行时长的最大值,用Tmin表示该表历次任务执行时长的最小值。
进而利用Dmax和Dmin对Dn进行归一化,得到该表在本次任务执行的预测任务负载L1,L1=(Dn-Dmin)/(Dmax-Dmin)。L1是从数据量的角度来衡量任务负载,这里称为预测数据量负载。
并利用Tmax和Tmin对Tn进行归一化,得到该表在本次任务执行的预测任务负载L2,L2=(Tn-Tmin)/(Tmax-Tmin)。L2是从任务执行模块的执行时长的角度衡量任务负载,这里称为预测时长负载。
用a表示负载权重因子,0<=a<=1,组合数据量负载和时长负载,得到任务预测负载L,L=a*L1+(1–a)*L2。当a=0时,表示只用时长来衡量任务负载,当a=1时,表示只用数据量来衡量任务负载。负载权重因子a可以在参数配置模块中配置,并保存在数据存储模块中。
对于一个任务,使用二元组(L,Tn)来表示该任务的负载信息,前一个表示任务预测负载,后一个表示任务的预测执行时长。
可选的,上述负载参数可以是任务负载计算模块计算的,在每个任务执行模块执行完任务之后,可以将执行的信息反馈给任务执行模块,由任务调度模块将计算负载参数的相关信息提供给任务负载计算模块,例如,任务的类型标识、任务建立的时间、执行任务的时长、任务的数据量大小、执行任务时占用的系统资源(计算资源和存储资源)大小等相关信息,任务负载计算模块利用任务调度模块提供的相关信息对任务的负载参数进行计算。可选的,任务负载计算模块计算后得到的每个类型任务的负载参数可以存储至数据存储模块。
步骤103,任务调度模块获取每个任务执行模块的当前任务队列,并计算每个任务执行模块的实时剩余负载。
由于任务执行模块所能够的计算资源和存储资源有限,因此不能同时执行过多任务,可以利用CPU利用率和内存利用率等来计算每个任务执行模块的剩余负载。
在实际系统中,会同时存在多个任务执行模块。任务执行模块接受任务调度模块分发过来的任务,执行任务;同时记录每个任务的负载以及启动时间;当任务执行完成后,把任务执行时长、任务接入的数据量以及任务标识一起返回给任务调度模块,由任务调度模块把这些信息保存到数据存储模块中。
在任务调度模块计算每个任务执行模块的实时剩余负载时,任务调度模块请求任务执行模块反馈该执行模块的当前任务执行情况,任务执行模块统计分发到本执行模块的任务负载总和,以及当前任务数n、能够执行的最大任务数N,一起返回给任务调度模块。对于已经开始执行的任务,需要根据已经执行时长折算出剩余负载。一种可选的实时剩余负载的计算公式如下:
上式中,N表示任务执行模块允许同时执行的最大任务数,C表示CPU利用率,M表示内存利用率,C和M越高,表示负载越高;n表示当前任务执行模块的任务数,Li表示第i个任务的负载,Tni表示第i个任务的预测时长,t0i表示第i个任务的启动时间点,t表示当前时间点,(t-t0i)换算到以分钟为单位。
步骤104,任务调度模块根据当前待分配任务的负载参数、以及每个任务执行模块的实时剩余负载,确定针对当前待分配任务的分配策略。
当调度系统刚启动时,各个任务执行模块还没接收到任务调度模块分发的任务,还是空载状态,各个任务执行模块的Lexecutor均是0。此时,任务调度模块轮流分发任务到各个任务执行模块,让每个任务执行模块都有任务执行。
当每个任务执行模块都处于非空载时,任务调度模块每次要分发一个任务时,先请求所有任务执行模块返回各自的(Lexecutor、n、N),然后把任务分发给满足n<N的任务执行模块中负载最小的那个任务执行模块。
当所有任务执行模块的n=N时,调度系统进入满负荷状态,在任务队列中的任务只能等待,直到某个任务执行模块的n<N时,才会被分发执行。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
实施例2
在本实施例中还提供了一种任务调度装置,该装置用于实现上述实施例1及其优选实施方式,对于本实施例中未详述的术语或实现方式,可参见实施例1中的相关说明,已经进行过说明的不再赘述。
如以下所使用的术语“模块”,是可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可以被构想的。
图3是根据本发明实施例的任务调度装置的示意图,如图3所示,该装置包括第一确定模块10,第二确定模块20,第一获取模块30和第三确定模块40。
其中,第一确定模块,用于使任务调度模块在待分配任务队列中确定当前待分配任务;第二确定模块,用于使任务调度模块确定当前待分配任务的负载参数;第一获取模块,用于使任务调度模块获取每个任务执行模块的当前任务队列,并计算每个任务执行模块的实时剩余负载;第三确定模块,用于使任务调度模块根据当前待分配任务的负载参数、以及每个任务执行模块的实时剩余负载,确定针对当前待分配任务的分配策略。
可选的,第二确定模块包括:确定单元,用于使任务调度模块确定当前待分配任务的任务类型标识;获取单元,用于使任务调度模块向数据存储模块获取任务类型标识对应的负载参数。
可选的,该装置还包括:第二获取模块,用于在任务调度模块向数据存储模块获取任务类型标识对应的负载参数之前,使任务调度模块在每个任务执行模块执行完毕一个任务之后,获取任务执行模块反馈的任务执行信息日志;提取模块,用于使任务调度模块提取任务执行信息日志的执行信息;发送模块,用于使任务调度模块将提取出的执行信息发送至数据存储模块,以使任务参数负载模块根据执行信息更新对应类型任务的负载参数。
可选的,负载参数包括预测任务执行时长,该装置还包括:第四确定模块,用于在任务调度模块向数据存储模块获取任务类型标识对应的负载参数之前,使任务调度模块确定当前待分配任务对应类型的历史平均执行速度;第五确定模块,用于使任务调度模块确定当前待分配任务的本次执行时间间隔;第六确定模块,用于使任务调度模块根据历史平均执行速度和本次执行时间间隔的乘积,确定当前待分配任务的预测任务执行时长。
可选的,第一获取模块包括:请求单元,用于使任务调度模块请求每个任务执行模块反馈针对当前任务队列的执行情况;计算单元,用于任务调度模块根据当前任务队列的执行情况,计算对应任务执行模块的实时剩余负载,计算公式如下:
其中,N表示对应任务执行模块允许同时执行的最大任务数,C表示CPU利用率,M表示内存利用率;n表示对应任务执行模块的当前任务队列的任务数,Li表示第i个任务的负载,Tni表示第i个任务的预测时长,t0i表示第i个任务的启动时间点,t表示当前时间点。
本实施例提供的任务调度装置,通过使任务调度模块在分配任务时,基于任务的历史处理情况所计算的负载分配任务,其中,每个任务执行模块在处理完任务之后,会将任务的历史调度的耗时、数据量等信息反馈至任务调度模块,以使任务调度模块可以根据任务的历史处理情况进行调度;此外,任务调度模块在分配任务时,还需要实时获取各个任务执行模块的当前任务队列,判断每个任务执行模块的当前负载,进而根据待分配的任务的负载确定待分配任务的分配策略。本实施例的任务调度装置在任务调度时,根据任务负载参数以及每个任务执行模块的负载情况分配任务,更加细化的控制调度逻辑,使得整个调度系统的负荷趋向均衡。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
实施例3
本发明的实施例还提供了一种存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
实施例4
本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。以电子装置为电子装置为例,图4是本发明实施例的一种电子装置的硬件结构框图。如图4所示,电子装置可以包括一个或多个(图4中仅示出一个)处理器302(处理器302可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器304,可选地,上述电子装置还可以包括用于通信功能的传输设备306以及输入输出设备308。本领域普通技术人员可以理解,图4所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,电子装置还可包括比图3中所示更多或者更少的组件,或者具有与图4所示不同的配置。
存储器304可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的图像的识别方法对应的计算机程序,处理器302通过运行存储在存储器304内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器304可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器304可进一步包括相对于处理器302远程设置的存储器,这些远程存储器可以通过网络连接至电子装置。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置306用于经由一个网络接收或者发送数据。上述的网络具体实例可包括电子装置的通信供应商提供的无线网络。在一个实例中,传输装置306包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置306可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种任务调度方法,其特征在于,所述方法包括:
任务调度模块在待分配任务队列中确定当前待分配任务;
所述任务调度模块确定所述当前待分配任务的负载参数;
所述任务调度模块获取每个任务执行模块的当前任务队列,并计算每个所述任务执行模块的实时剩余负载;
所述任务调度模块根据所述当前待分配任务的负载参数、以及每个任务执行模块的实时剩余负载,确定针对所述当前待分配任务的分配策略;
所述任务调度模块确定所述当前待分配任务的负载参数,包括:
所述任务调度模块确定所述当前待分配任务的任务类型标识;
所述任务调度模块向数据存储模块获取所述任务类型标识对应的负载参数;
其中,所述负载参数包括预测任务执行时长,在所述任务调度模块向数据存储模块获取所述任务类型标识对应的负载参数之前,所述方法还包括:
所述任务调度模块确定所述当前待分配任务对应类型的历史平均执行速度;
所述任务调度模块确定所述当前待分配任务的本次执行时间间隔;
所述任务调度模块根据所述历史平均执行速度和所述本次执行时间间隔的乘积,确定所述当前待分配任务的预测任务执行时长;
所述任务调度模块获取每个任务执行模块的当前任务队列,并计算每个所述任务执行模块的实时剩余负载,包括:
所述任务调度模块请求每个任务执行模块反馈针对所述当前任务队列的执行情况;
所述任务调度模块根据所述当前任务队列的执行情况,计算对应任务执行模块的实时剩余负载,计算公式如下:
其中,N表示所述对应任务执行模块允许同时执行的最大任务数,C表示CPU利用率,M表示内存利用率;n表示所述对应任务执行模块的当前任务队列的任务数,Li表示第i个任务的负载,Tni表示第i个任务的预测时长,t0i表示第i个任务的启动时间点,t表示当前时间点。
2.根据权利要求1所述的方法,其特征在于,在所述任务调度模块向数据存储模块获取所述任务类型标识对应的负载参数之前,所述方法还包括:
所述任务调度模块在每个所述任务执行模块执行完毕一个任务之后,获取所述任务执行模块反馈的任务执行信息日志;
所述任务调度模块提取所述任务执行信息日志的执行信息;
所述任务调度模块将提取出的执行信息发送至所述数据存储模块,以使任务参数负载模块根据所述执行信息更新对应类型任务的负载参数。
3.一种任务调度装置,其特征在于,所述装置包括:
第一确定模块,用于使任务调度模块在待分配任务队列中确定当前待分配任务;
第二确定模块,用于使所述任务调度模块确定所述当前待分配任务的负载参数;
第一获取模块,用于使所述任务调度模块获取每个任务执行模块的当前任务队列,并计算每个所述任务执行模块的实时剩余负载;
第三确定模块,用于使所述任务调度模块根据所述当前待分配任务的负载参数、以及每个任务执行模块的实时剩余负载,确定针对所述当前待分配任务的分配策略;
所述第二确定模块包括:
确定单元,用于使所述任务调度模块确定所述当前待分配任务的任务类型标识;
获取单元,用于使所述任务调度模块向数据存储模块获取所述任务类型标识对应的负载参数;
所述负载参数包括预测任务执行时长,所述装置还包括:第四确定模块,用于在任务调度模块向数据存储模块获取任务类型标识对应的负载参数之前,使任务调度模块确定当前待分配任务对应类型的历史平均执行速度;第五确定模块,用于使任务调度模块确定当前待分配任务的本次执行时间间隔;第六确定模块,用于使任务调度模块根据历史平均执行速度和本次执行时间间隔的乘积,确定当前待分配任务的预测任务执行时长;
所述第一获取模块包括:请求单元,用于使任务调度模块请求每个任务执行模块反馈针对当前任务队列的执行情况;计算单元,用于任务调度模块根据当前任务队列的执行情况,计算对应任务执行模块的实时剩余负载,计算公式如下:
其中,N表示对应任务执行模块允许同时执行的最大任务数,C表示CPU利用率,M表示内存利用率;n表示对应任务执行模块的当前任务队列的任务数,Li表示第i个任务的负载,Tni表示第i个任务的预测时长,t0i表示第i个任务的启动时间点,t表示当前时间点。
4.根据权利要求3所述的装置,其特征在于,所述装置还包括:
第二获取模块,用于在所述任务调度模块向数据存储模块获取所述任务类型标识对应的负载参数之前,使所述任务调度模块在每个所述任务执行模块执行完毕一个任务之后,获取所述任务执行模块反馈的任务执行信息日志;
提取模块,用于使所述任务调度模块提取所述任务执行信息日志的执行信息;
发送模块,用于使所述任务调度模块将提取出的执行信息发送至所述数据存储模块,以使所述任务参数负载模块根据所述执行信息更新对应类型任务的负载参数。
5.一种存储介质,其特征在于,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行权利要求1至2任一项中所述的方法。
6.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行权利要求1至2任一项中所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010138785.4A CN111506398B (zh) | 2020-03-03 | 2020-03-03 | 任务调度方法和装置、存储介质、电子装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010138785.4A CN111506398B (zh) | 2020-03-03 | 2020-03-03 | 任务调度方法和装置、存储介质、电子装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111506398A CN111506398A (zh) | 2020-08-07 |
CN111506398B true CN111506398B (zh) | 2024-05-10 |
Family
ID=71864716
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010138785.4A Active CN111506398B (zh) | 2020-03-03 | 2020-03-03 | 任务调度方法和装置、存储介质、电子装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111506398B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112052081B (zh) * | 2020-08-13 | 2022-06-03 | 烽火通信科技股份有限公司 | 一种任务调度方法、装置及电子设备 |
CN111913808A (zh) * | 2020-08-19 | 2020-11-10 | 百度时代网络技术(北京)有限公司 | 任务分配的方法、装置、设备以及存储介质 |
CN112035236B (zh) * | 2020-09-08 | 2023-02-14 | 深圳天源迪科信息技术股份有限公司 | 基于多因子协同的任务调度方法、装置、及存储介质 |
CN112486644A (zh) * | 2020-11-27 | 2021-03-12 | 北京百度网讯科技有限公司 | 用于生成信息的方法、装置、设备以及存储介质 |
CN113436003A (zh) * | 2021-06-29 | 2021-09-24 | 中国工商银行股份有限公司 | 时长确定方法、装置、电子设备、介质和程序产品 |
CN113608869A (zh) * | 2021-07-21 | 2021-11-05 | 中央广播电视总台 | 任务调度方法、装置、电子设备和计算机存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1835453A (zh) * | 2005-03-16 | 2006-09-20 | 华为技术有限公司 | 一种实现分布式系统中负载分担的方法 |
CN101517576A (zh) * | 2006-05-22 | 2009-08-26 | 相干罗辑公司 | 基于软件程序在处理系统上的运行而设计asic |
CN109710407A (zh) * | 2018-12-21 | 2019-05-03 | 浪潮电子信息产业股份有限公司 | 分布式系统实时任务调度方法、装置、设备及存储介质 |
CN110795244A (zh) * | 2019-10-24 | 2020-02-14 | 浙江大华技术股份有限公司 | 一种任务分配方法、装置、设备及介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104123184B (zh) * | 2013-04-28 | 2017-12-22 | 国际商业机器公司 | 一种用于为构建过程中的任务分配资源的方法和系统 |
-
2020
- 2020-03-03 CN CN202010138785.4A patent/CN111506398B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1835453A (zh) * | 2005-03-16 | 2006-09-20 | 华为技术有限公司 | 一种实现分布式系统中负载分担的方法 |
CN101517576A (zh) * | 2006-05-22 | 2009-08-26 | 相干罗辑公司 | 基于软件程序在处理系统上的运行而设计asic |
CN109710407A (zh) * | 2018-12-21 | 2019-05-03 | 浪潮电子信息产业股份有限公司 | 分布式系统实时任务调度方法、装置、设备及存储介质 |
CN110795244A (zh) * | 2019-10-24 | 2020-02-14 | 浙江大华技术股份有限公司 | 一种任务分配方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111506398A (zh) | 2020-08-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111506398B (zh) | 任务调度方法和装置、存储介质、电子装置 | |
CN106911592B (zh) | 一种自适应资源分配方法及装置 | |
CN112162865A (zh) | 服务器的调度方法、装置和服务器 | |
US10686728B2 (en) | Systems and methods for allocating computing resources in distributed computing | |
CN111858055B (zh) | 任务处理方法、服务器及存储介质 | |
CN111176840B (zh) | 分布式任务的分配优化方法和装置、存储介质及电子装置 | |
CN103458052A (zh) | 一种基于IaaS云平台的资源调度方法和装置 | |
CN112817728B (zh) | 任务调度方法、网络设备和存储介质 | |
CN111290917A (zh) | 基于yarn的资源监控方法、装置及终端设备 | |
CN103810045A (zh) | 资源分配方法、资源管理器、资源服务器及系统 | |
CN114265679A (zh) | 数据处理方法、装置和服务器 | |
CN112559147A (zh) | 基于gpu占用资源特点的动态匹配算法、系统和设备 | |
CN110569129A (zh) | 资源分配方法及装置、存储介质、电子装置 | |
CN107193749B (zh) | 测试方法、装置及设备 | |
CN117149388A (zh) | 一种批量任务调度方法和系统、电子设备、存储介质 | |
CN116820729A (zh) | 离线任务调度方法、装置及电子设备 | |
CN114493113A (zh) | 任务分配方法、装置、电子装置和存储介质 | |
CN114860408A (zh) | 线程池资源管理方法及装置 | |
CN111796934B (zh) | 任务下发方法、装置、存储介质和电子设备 | |
CN114490083A (zh) | Cpu资源的绑定方法、装置、存储介质及电子装置 | |
CN114035940A (zh) | 资源分配方法以及装置 | |
CN113419836A (zh) | 任务处理方法、装置、电子设备和计算机可读存储介质 | |
CN109857539B (zh) | 资源调度方法和终端 | |
CN113010310A (zh) | 作业数据的处理方法、装置和服务器 | |
CN111258728A (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 |