CN112685158B - 一种任务调度方法、装置、电子设备及存储介质 - Google Patents
一种任务调度方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN112685158B CN112685158B CN202011595150.3A CN202011595150A CN112685158B CN 112685158 B CN112685158 B CN 112685158B CN 202011595150 A CN202011595150 A CN 202011595150A CN 112685158 B CN112685158 B CN 112685158B
- Authority
- CN
- China
- Prior art keywords
- task
- processed
- subtasks
- processing
- engine
- 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
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明实施例提供了一种任务调度方法、装置、电子设备及存储介质,所述方法包括:获取待处理任务,将待处理任务划分为多个子任务;在待处理任务的优先级与当前处理的任务的优先级相同的情况下,从待处理任务及当前处理的任务中,确定正在被处理的子任务数量最少的任务,作为第一任务;在剩余资源量最多的任务处理引擎无法处理第一任务的一个子任务的情况下,暂停处理目标子任务;将第一任务的一个子任务分配给目标引擎,返回从待处理任务及当前处理的任务中,确定正在被处理的子任务数量最少的任务的步骤,直到满足预设停止条件。通过上述方式可以可以使优先级相同的各个任务的处理进度达到基本平衡,大大降低同一优先级的任务的处理进度的差异。
Description
技术领域
本发明涉及任务处理技术领域,特别是涉及一种任务调度方法、装置、电子设备及存储介质。
背景技术
目前,在许多应用场景中均需要对处理的任务进行合理调度,以提高任务处理效率以及平衡各个任务的处理进度。例如,在视频结构化分析任务中,一般需要将视频内容的特征属性提取出来,进而基于特征属性,采用目标分割、时序分析、对象识别、深度学习等处理手段,分析和识别视频中的目标的相关信息,然后组织成可供计算机和人理解的文本信息。在这个过程中,就需要对多个视频结构化分析任务进行合理调度。
对多个任务的处理通过多个处理引擎实现,例如,处理引擎可以为能够运行深度算法的智能芯片等。为了实现对任务的加速处理,可以将一个任务划分为多个子任务。多个处理引擎可以对多个子任务同时进行处理,以提高任务的处理效率。
为了保证重要的任务能够被及时处理,可以为每个任务设置优先级,高优先级的任务到达处理引擎后会被优先处理。而对于同一优先级的多个任务来说,对于其处理进度应该尽量保持一致,不应有个别任务处理过快而个别任务处理过慢。但是由于目前对于同一优先级的多个任务没有合理的调度方式,因此不能满足这样的处理需求,同一优先级的任务的处理进度差异很大。
发明内容
本发明实施例的目的在于提供一种任务调度方法、装置、电子设备及存储介质,用以降低同一优先级的任务的处理进度的差异。具体技术方案如下:
第一方面,本发明实施例提供了一种任务调度方法,所述方法包括:
获取待处理任务,并将所述待处理任务划分为多个子任务,其中,所述待处理任务具有优先级;
在所述待处理任务的优先级与当前处理的任务的优先级相同的情况下,从所述待处理任务及当前处理的任务中,确定正在被处理的子任务数量最少的任务,作为第一任务,其中,所述当前处理的任务包括多个子任务;
在剩余资源量最多的任务处理引擎无法处理所述第一任务的一个子任务的情况下,暂停处理目标子任务,其中,所述目标子任务为从第二任务的正在被处理的子任务中选取的,所述第二任务为包括了正在被处理的子任务数量最多的任务;
暂停处理所述将所述第一任务的一个子任务分配给目标引擎,并返回所述从所述待处理任务及当前处理的任务中,确定正在被处理的子任务数量最少的任务的步骤,直到满足预设停止条件,其中,所述目标引擎为所述目标子任务暂停之前处理所述目标子任务的任务处理引擎。
可选的,所述目标子任务的选取方式,包括:
从当前处理的任务中,确定正在被处理的子任务数量最多的任务,作为第二任务;
在所述第二任务的正在被处理的子任务数量大于1,且所述第二任务的正在被处理的子任务数量与所述第一任务的正在被处理的子任务数量的差大于1的情况下,从正在处理所述第二任务的子任务的任务处理引擎中,确定剩余资源量最多的任务处理引擎,作为目标引擎;
将所述目标引擎正在处理的所述第二任务的一个子任务确定为目标子任务。
可选的,所述从正在处理所述第二任务的子任务的任务处理引擎中,确定剩余资源量最多的任务处理引擎,作为目标引擎的步骤,包括:
将正在处理所述第二任务的子任务的任务处理引擎,按照剩余资源量进行排序,得到第一排序结果;
基于所述第一排序结果,确定剩余资源量最多的任务处理引擎,作为目标引擎。
可选的,所述从正在处理所述第二任务的子任务的任务处理引擎中,确定剩余资源量最多的任务处理引擎,作为目标引擎的步骤,包括:
将各个任务处理引擎按照剩余资源量进行排序,得到第二排序结果;
基于所述第二排序结果,确定剩余资源量最多的任务处理引擎;
在所述剩余资源量最多的任务处理引擎正在处理的子任务包括所述第二任务的子任务的情况下,将所述剩余资源量最多的任务处理引擎确定为目标引擎;和/或,
在所述剩余资源量最多的任务处理引擎正在处理的子任务不包括所述第二任务的子任务的情况下,从所述第二排序结果中删除该剩余资源量最多的任务处理引擎,得到更新后的第二排序结果,并返回所述基于所述第二排序结果,确定剩余资源量最多的任务处理引擎的步骤。
可选的,所述方法还包括:
在所述第二任务的正在被处理的子任务数量为1的情况下,或,在所述第二任务的正在被处理的子任务数量大于1且所述第二任务的正在被处理的子任务数量与所述第一任务的正在被处理的子任务数量的差不大于1的情况下,确定满足预设停止条件,并将所述第一任务的未处理的子任务放入等待队列中。
可选的,所述方法还包括:
监控所述各个任务处理引擎所处理的子任务是否处理完成;
在存在处理完成的子任务的情况下,返回所述从所述待处理任务及当前处理的任务中,确定正在被处理的子任务数量最少的任务的步骤,直到满足预设停止条件。
可选的,所述方法还包括:
在所述剩余资源量最多的任务处理引擎能够处理所述第一任务的一个子任务的情况下,将所述第一任务的一个子任务分配给所述剩余资源量最多的任务处理引擎;
返回所述从所述待处理任务及当前处理的任务中,确定正在被处理的子任务数量最少的任务的步骤,直到满足预设停止条件。
可选的,所述方法还包括:
在所述待处理任务的优先级高于当前处理的任务的优先级的情况下,暂停处理正在被处理的子任务;
将所述待处理任务的子任务分配至所述任务处理引擎。
可选的,在所述暂停处理正在被处理的子任务的步骤之后,所述方法还包括:
将暂停处理的子任务放入暂停队列,并在所述暂停队列中记录所述暂停处理的子任务的处理进度;
在所述待处理任务的子任务处理完成,且不存在优先级高于或等于所述暂停处理的子任务的情况下,将所述暂停处理的子任务分配至所述各个任务处理引擎,以使所述各个任务处理引擎基于所记录的处理进度继续处理被分配的子任务。
可选的,所述方法还包括:
在所述待处理任务的优先级低于当前处理的任务的优先级的情况下,将所述待处理任务的子任务放入等待队列中。
第二方面,本发明实施例提供了一种任务调度装置,所述装置包括:
任务划分模块,用于获取待处理任务,并将所述待处理任务划分为多个子任务,其中,所述待处理任务具有优先级;
第一任务确定模块,用于在所述待处理任务的优先级与当前处理的任务的优先级相同的情况下,从所述待处理任务及当前处理的任务中,确定正在被处理的子任务数量最少的任务,作为第一任务,其中,所述当前处理的任务包括多个子任务;
第二任务确定模块,用于在剩余资源量最多的任务处理引擎无法处理所述第一任务的一个子任务的情况下,暂停处理目标子任务,其中,所述目标子任务为从第二任务的正在被处理的子任务中选取的,所述第二任务为包括了正在被处理的的子任务数量最多的任务;
第一任务调度模块,用于将所述第一任务的一个子任务分配给目标引擎,并触发所述第一任务确定模块,直到满足预设停止条件,其中,所述目标引擎为所述目标子任务暂停之前处理所述目标子任务的任务处理引擎。
第三方面,本发明实施例提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现上述第一方面任一所述的方法步骤。
第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面任一所述的方法步骤。
本发明实施例有益效果:
本发明实施例提供的方案中,电子设备可以获取待处理任务,并将待处理任务划分为多个子任务,其中,待处理任务具有优先级;在待处理任务的优先级与当前处理的任务的优先级相同的情况下,从待处理任务及当前处理的任务中,确定正在被处理的子任务数量最少的任务,作为第一任务,其中,当前处理的任务包括多个子任务;在剩余资源量最多的任务处理引擎无法处理第一任务的一个子任务的情况下,暂停处理目标子任务,其中,所述目标子任务为从第二任务的正在被处理的子任务中选取的,第二任务为包括了正在被处理的子任务数量最多的任务;将第一任务的一个子任务分配给目标引擎,并返回从待处理任务及当前处理的任务中,确定正在被处理的子任务数量最少的任务的步骤,直到满足预设停止条件,其中,目标引擎为目标子任务暂停之前处理目标子任务的任务处理引擎。由于在待处理任务的优先级与当前处理的任务的优先级相同的情况下,通过上述方式可以使正在被处理的子任务数量最少的任务,逐渐抢占正在被处理的的子任务数量最多的任务所占用的任务处理引擎,所以可以使优先级相同的各个任务的处理进度达到基本平衡,大大降低同一优先级的任务的处理进度的差异。当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
图1为本发明实施例所提供的一种任务调度方法的流程图;
图2为基于图1所示实施例的目标子任务的选取方式的一种流程图;
图3为图2所示实施例中步骤S202的一种具体流程图;
图4为基于图1所示实施例的高优先级任务抢占引擎的一种示意图;
图5为基于图1所示实施例的被暂停的子任务的处理方式的一种流程图;
图6为基于图5所示实施例的子任务池的一种示意图;
图7为本发明实施例所提供的一种任务调度装置的结构示意图;
图8为图7所示实施例中第二任务确定模块730的一种具体结构示意图;
图9为本发明实施例所提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了降低同一优先级的任务的处理进度的差异,本发明实施例提供了一种任务调度方法、装置、电子设备及计算机可读存储介质。下面首先对本发明实施例所提供的一种任务调度方法进行介绍。
本发明实施例所提供的一种任务调度方法可以应用于任意需要进行任务调度的电子设备,例如,可以为服务器、处理器、任务处理引擎中的管理设备等,在此不做具体限定。为了描述清楚,后续称为电子设备。
如图1所示,一种任务调度方法,所述方法包括:
S101,获取待处理任务,并将所述待处理任务划分为多个子任务;
其中,所述待处理任务具有优先级。
S102,在所述待处理任务的优先级与当前处理的任务的优先级相同的情况下,从所述待处理任务及当前处理的任务中,确定正在被处理的子任务数量最少的任务,作为第一任务;
其中,所述当前处理的任务包括多个子任务。
S103,在剩余资源量最多的任务处理引擎无法处理所述第一任务的一个子任务的情况下,暂停处理目标子任务;
其中,所述目标子任务为从第二任务的正在被处理的子任务中选取的,所述第二任务为包括了正在被处理的子任务数量最多的任务。
S104,将所述第一任务的一个子任务分配给目标引擎,并返回所述从所述待处理任务及当前处理的任务中,确定正在被处理的子任务数量最少的任务的步骤,直到满足预设停止条件。
其中,所述目标引擎为所述目标子任务暂停之前处理所述目标子任务的任务处理引擎。
可见,本发明实施例提供的方案中,电子设备可以获取待处理任务,并将待处理任务划分为多个子任务,其中,待处理任务具有优先级;在待处理任务的优先级与当前处理的任务的优先级相同的情况下,从待处理任务及当前处理的任务中,确定正在被处理的子任务数量最少的任务,作为第一任务,当前处理的任务包括多个子任务;在剩余资源量最多的任务处理引擎无法处理第一任务的一个子任务的情况下,暂停处理目标子任务,其中,目标子任务为从第二任务的正在被处理的子任务中选取的,第二任务为包括了正在被处理的子任务数量最多的任务;将第一任务的一个子任务分配给目标引擎,并返回从待处理任务及当前处理的任务中,确定正在被处理的子任务数量最少的任务的步骤,直到满足预设停止条件,其中,目标引擎为目标子任务暂停之前处理目标子任务的任务处理引擎。由于在待处理任务的优先级与当前处理的任务的优先级相同的情况下,通过上述方式可以使正在被处理的子任务数量最少的任务,逐渐抢占正在被处理的的子任务数量最多的任务所占用的任务处理引擎,所以可以使优先级相同的各个任务的处理进度达到基本平衡,大大降低同一优先级的任务的处理进度的差异。
电子设备在获取待处理任务之后,为了加速处理该待处理任务,可以将其划分为多个子任务。其中,待处理任务可以为待分析的视频、图像、设备日志文件等,在此不做具体限定。一般情况下,划分得到的子任务的大小是基本相同的,或者,划分得到的最后一个子任务会小于其他子任务的大小。
在一种实施方式中,待处理任务为待分析的视频,那么电子设备可以按照预设划分时长将待分析的视频划分为多个视频片段,作为子任务。预设划分时长可以根据任务处理速度、任务处理引擎数量等因素确定,例如,可以为10分钟、12分钟、15分钟等,在此不做具体限定。
例如,如果一个待分析的视频的时长为57分钟,预设划分时长10分钟,那么电子设备可以将该待分析的视频划分为5个时长为10分钟的子任务和1个时长为7分钟的子任务。
上述待处理任务具有优先级,该优先级可以根据待处理任务的处理速度的要求设定。在一种实施方式中,如果处理速度要求很快,那么待处理任务的优先级可以为高优先级;如果处理速度要求较快,那么待处理任务的优先级可以为中优先级;如果处理速度没有特殊要求,那么待处理任务的优先级可以为低优先级。待处理任务的优先级可以采用标识来表示,例如,可以为1、2、3,或者a、b、c,等等。
接下来,电子设备可以确定待处理任务的优先级与当前处理的任务的优先级是否相同,如果相同,说明待处理任务与当前处理的任务需要同时进行处理,并且处理待处理任务与处理当前处理的任务的任务处理引擎的数量应该尽量相同,以保证待处理任务与当前处理的任务的处理进度不会差异过大。
所以电子设备可以执行上述步骤S102,即从待处理任务及当前处理的任务中,确定正在被处理的子任务数量最少的任务,作为第一任务。由于当前正在处理的子任务数量最少的任务是需要抢占更多的任务处理引擎的,这样才能保证正在处理的子任务数量最少的任务能够尽快被处理,加快其处理进度,所以电子设备可以从待处理任务及当前处理的任务中,确定正在被处理的子任务数量最少的任务,作为第一任务。其中,当前处理的任务也可以包括多个子任务,其具体划分方式可以与上述待处理任务的划分方式相同,在此不再赘述。
在待处理任务还没开始被处理时,由于待处理任务对应的正在被处理的子任务数量为0,所以此时待处理任务必然被确定为第一任务。进而,电子设备可以获取各个任务处理引擎的剩余资源量,并确定剩余资源量最多的任务处理引擎是否能够处理第一任务的一个子任务。
由于剩余资源量最多的任务处理引擎当前正在处理的子任务数量是最少的,为了保证各个任务处理引擎的负载均衡和任务处理速度,可以确定剩余资源量最多的任务处理引擎是否能够处理第一任务的一个子任务。
在上述步骤S103中,如果剩余资源量最多的任务处理引擎无法处理第一任务的一个子任务,那么说明当前所有引擎的剩余资源量均不够处理第一任务的一个子任务,此时为了保证第一任务的更多子任务能够得到处理,电子设备可以暂停处理目标子任务。具体来说,
电子设备可以从第二任务的正在被处理的子任务中确定目标子任务,其中,第二任务为正在被处理的的子任务数量最多的任务。也就是说,电子设备可以从正在被处理的的子任务数量最多的任务的子任务中选择一个作为目标子任务。进而,暂停处理目标子任务后,电子设备可以执行步骤S104,即将第一任务的一个子任务分配给目标引擎,其中,目标引擎为目标子任务暂停之前处理目标子任务的任务处理引擎。
由于当前所有引擎的剩余资源量均不够处理第一任务的一个子任务,所以需要释放某个任务处理引擎的资源,以使其可以处理第一任务的一个子任务。为了尽量保证各个优先级相同的任务的处理进度一致,此时可以暂停处理正在被处理的的子任务数量最多的任务的一个子任务,也就是目标子任务,进而,将第一任务的一个未处理的子任务分配给目标引擎。
这样,子任务数量最多的第二任务的处理速度可以减缓,正在被处理的子任务数量最少的第一任务的处理速度可以加快,从而平衡二者之间的处理进度。由于此时虽然减缓了第二任务的处理速度,加快了第一任务的处理速度,但是二者之间的处理进度差异可能仍然很大。
例如,假设共有30个任务处理引擎,其中,26个正在处理第二任务的子任务,4个正在处理第一任务,电子设备暂停处理第二任务的目标子任务,此时,正在处理第二任务的子任务的任务处理引擎变为25个,正在处理第一任务的子任务的任务处理引擎变为5个,可见,二者对应的任务处理引擎的数量相差仍然很大。
所以为了进一步降低优先级相同的任务的处理进度的差异,可以返回上述从待处理任务及当前处理的任务中,确定正在被处理的子任务数量最少的任务的步骤,继续执行上述步骤S102-步骤S104,直到满足预设停止条件。每一次重复执行上述步骤S102-步骤S104,上述待处理任务的子任务中可能都会有一个被处理,以使上述待处理任务的子任务可以逐步抢占正在被处理的子任务数量最多的任务的任务处理引擎。当重复执行一定次数之后,再次执行上述步骤S102时,确定正在被处理的子任务数量最少的第一任务时,确定出的第一任务便可能为上述当前处理的任务,这样,上述当前处理的子任务便可以抢占待处理任务的子任务的任务处理引擎,以达到平衡优先级相同的任务的处理进度的目的。
其中,预设停止条件可以为所有子任务均被分配给任务处理引擎、正在被处理的子任务数量最少的任务与正在被处理的子任务数量最多的任务对应的任务处理引擎的数量的差值小于预设值、即使暂停目标子任务,各个任务处理引擎也无法处理第一任务的子任务等,在此不做具体限定。这样,在满足预设停止条件的情况下,可以不再循环执行上述步骤S102-步骤S104。
作为本发明实施例的一种实施方式,如图2所示,上述目标子任务的选取方式,可以包括:
S201,从当前处理的任务中,确定正在被处理的子任务数量最多的任务,作为第二任务;
为了确定需要暂停处理的目标子任务,电子设备可以从当前处理的任务中,确定正在被处理的子任务数量最多的任务,作为第二任务。例如,当前处理的任务包括任务1和任务2,任务1具有22个正在处理的子任务,任务2具有10个正在处理的子任务,那么电子设备可以确定正在被处理的子任务数量最多的任务为任务1,那么任务1也就是第二任务。
S202,在所述第二任务的正在被处理的子任务数量大于1,且所述第二任务的正在被处理的子任务数量与所述第一任务的正在被处理的子任务数量的差大于1的情况下,从正在处理所述第二任务的子任务的任务处理引擎中,确定剩余资源量最多的任务处理引擎,作为目标引擎;
如果第二任务的正在被处理的子任务数量不大于1,也就是等于1,说明第二任务并不具有子任务,那么也就是无法暂停其中一个子任务,所以电子设备可以确定第二任务的正在被处理的子任务数量是否大于1。
由于如果第二任务的正在被处理的子任务数量与第一任务的正在被处理的子任务数量的差不大于1,说明虽然第二任务的正在被处理的子任务数量最多,第一任务的正在被处理的子任务数量最少,但是二者之间的差距为1,这时二者的正在被处理的子任务数量实际上只相差1。
如果此时第一任务抢占第二任务的任务处理引擎,那么其对应的正在被处理的子任务数量增加1,第二任务的正在被处理的子任务数量减少1,那么在下一次循环执行上述步骤S102-步骤S105的过程中,第二任务又要抢占第一任务的任务处理引擎,这样将会出现第二任务与第一任务交替抢占任务处理引擎的情况。
所以为了避免上述情况发生,电子设备进一步可以确定第二任务的正在被处理的子任务数量与第一任务的正在被处理的子任务数量的差是否大于1。在第二任务的正在被处理的子任务数量与第一任务的正在被处理的子任务数量的差大于1的情况下,电子设备可以从正在处理第二任务的子任务的任务处理引擎中,确定剩余资源量最多的任务处理引擎,作为目标引擎。
为了保证暂停处理目标子任务后,对应的目标引擎的剩余资源量可以足够处理第一任务的一个未处理的子任务,电子设备可以从正在处理第二任务的子任务的任务处理引擎中,选择剩余资源量最多的任务处理引擎作为目标引擎。
S203,将所述目标引擎正在处理的所述第二任务的一个子任务确定为目标子任务。
接下来,电子设备便可以将目标引擎正在处理的第二任务的一个子任务确定为目标子任务。在一种实施方式中,如果目标引擎正在处理的第二任务的子任务只有一个,那么该子任务即为目标子任务。如果目标引擎正在处理的第二任务的子任务为多个,那么电子设备可以从该多个子任务中随机选择一个作为目标子任务。
可见,在本实施例中,电子设备可以从当前处理的任务中,确定正在被处理的子任务数量最多的任务,作为第二任务,在第二任务的正在被处理的子任务数量大于1,且第二任务的正在被处理的子任务数量与第一任务的正在被处理的子任务数量的差大于1的情况下,从正在处理第二任务的子任务的任务处理引擎中,确定剩余资源量最多的任务处理引擎,作为目标引擎,进而将目标引擎正在处理的第二任务的一个子任务确定为目标子任务。这样,可以从正在被处理的子任务数量最多的第二任务的子任务中合理选择一个子任务作为需要暂停处理的目标子任务,保证后续过程中第一任务的子任务可以被处理。
作为本发明实施例的一种实施方式,上述从正在处理所述第二任务的子任务的任务处理引擎中,确定剩余资源量最多的任务处理引擎,作为目标引擎的步骤,至少可以包括以下两种实施方式:
第一种实施方式:将正在处理所述第二任务的子任务的任务处理引擎,按照剩余资源量进行排序,得到第一排序结果;基于所述第一排序结果,确定剩余资源量最多的任务处理引擎,作为目标引擎。
在这种实施方式中,电子设备可以从所有任务处理引擎中确定出正在处理第二任务的子任务的任务处理引擎,进而将这些任务处理引擎按照剩余资源量进行排序,得到第一排序结果。其中,排序的具体方式可以为按照剩余资源量从多到少进行排序,也可以为按照剩余资源量从少到到进行排序,这都是合理的。
得到第一排序结果后,电子设备便可以基于第一排序结果,确定剩余资源量最多的任务处理引擎,作为目标引擎。如果第一排序结果为按照剩余资源量从多到少进行排序得到的,那么电子设备可以将排在第一位的任务处理引擎确定为目标引擎。如果第一排序结果为按照剩余资源量从少到多进行排序得到的,那么电子设备可以将排在最后一位的任务处理引擎确定为目标引擎。
例如,正在处理第二任务的子任务的任务处理引擎为引擎1、引擎2、引擎4、引擎7、引擎8、引擎11,将这6个任务处理引擎按照剩余资源量多到少进行排序得到第一排序结果:引擎7、引擎2、引擎1、引擎11、引擎8、引擎4。那么电子设备可以确定引擎7为目标引擎。
第二种实施方式如图3所示,可以包括以下步骤:
S301,将所述各个任务处理引擎按照剩余资源量进行排序,得到第二排序结果;
在这种实施方式中,电子设备可以将各个任务处理引擎按照剩余资源量进行排序,得到第二排序结果。其中,排序的具体方式可以为按照剩余资源量从多到少进行排序,也可以为按照剩余资源量从少到到进行排序,这都是合理的。
S302,基于所述第二排序结果,确定剩余资源量最多的任务处理引擎;
得到第二排序结果后,电子设备便可以基于第二排序结果,确定剩余资源量最多的任务处理引擎。如果第二排序结果为按照剩余资源量从多到少进行排序得到的,那么电子设备可以将排在第一位的任务处理引擎确定为剩余资源量最多的任务处理引擎。如果第二排序结果为按照剩余资源量从少到多进行排序得到的,那么电子设备可以将排在最后一位的任务处理引擎确定为剩余资源量最多的任务处理引擎。
S303,在所述剩余资源量最多的任务处理引擎正在处理的子任务包括所述第二任务的子任务的情况下,将所述剩余资源量最多的任务处理引擎确定为目标引擎;和/或,
由于各个任务处理引擎中剩余资源量最多的任务处理引擎不一定正在处理第二任务的子任务,所以电子设备可以确定剩余资源量最多的任务处理引擎正在处理的子任务是否包括第二任务的子任务,如果包括,便可以将该剩余资源量最多的任务处理引擎确定为目标引擎。
S304,在所述剩余资源量最多的任务处理引擎正在处理的子任务不包括所述第二任务的子任务的情况下,从所述排序结果中删除该剩余资源量最多的任务处理引擎,得到更新后的第二排序结果,并返回步骤S302。
如果剩余资源量最多的任务处理引擎没有处理第二任务的子任务,电子设备可以从第二排序结果中删除该剩余资源量最多的任务处理引擎,得到更新后的第二排序结果,并返回上述基于第二排序结果,确定剩余资源量最多的任务处理引擎的步骤,此时更新后的第二排序结果中已经不包括上述剩余资源量最多的任务处理引擎,此时剩余资源量最多的任务处理引擎为原来在第二排序结果排在第二位或者倒数第二位的任务处理引擎。
接下来,电子设备可以返回执行上述步骤S302,直到找到正在处理的子任务包括第二任务的子任务的剩余资源量最多的任务处理引擎,将其确定为目标引擎。
例如,共有10个任务处理引擎,分别为引擎a、引擎b…引擎j。将各个任务处理引擎按照剩余资源量从多到少的顺序进行排序,得到第二排序结果为:引擎a、引擎c、引擎j、引擎f、引擎g、引擎b、引擎e、引擎d、引擎h、引擎i。电子设备可以确定剩余资源量最多的任务处理引擎为引擎a,如果引擎a正在处理的子任务包括所述第二任务的子任务,便可以将引擎a确定为目标引擎。
如果引擎a正在处理的子任务不包括第二任务的子任务,从第二排序结果中删除该剩余资源量最多的任务处理引擎,那么更新后得第二排序结果变为:引擎c、引擎j、引擎f、引擎g、引擎b、引擎e、引擎d、引擎h、引擎i,此时可以返回执行上述步骤S302,也就可以找到引擎c。
如果引擎c正在处理的子任务包括所述第二任务的子任务,便可以将引擎c确定为目标引擎,如果引擎c正在处理的子任务不包括第二任务的子任务,从第二排序结果中删除该剩余资源量最多的任务处理引擎,那么第二排序结果变为:引擎j、引擎f、引擎g、引擎b、引擎e、引擎d、引擎h、引擎i,此时再次返回执行上述步骤S302,直到找到正在处理的子任务包括第二任务的子任务的剩余资源量最多的任务处理引擎。
可见,在本实施例中,电子设备至少可以采用上述两种方式中的任一种来确定目标引擎,无论采用哪种方式,均可以准确确定出正在处理的子任务包括第二任务的子任务的剩余资源量最多的任务处理引擎。
作为本发明实施例的一种实施方式,上述方法还可以包括:
在所述第二任务的正在被处理的子任务数量为1的情况下,或,在所述第二任务的正在被处理的子任务数量大于1且所述第二任务的正在被处理的子任务数量与所述第一任务的正在被处理的子任务数量的差不大于1的情况下,将所述第一任务的未处理的子任务放入等待队列中。
在第一种情况中,第二任务的正在被处理的子任务数量为1,说明第二任务并不具有子任务,而第二任务又是长在处理的子任务数量最多的任务,那么说明所有正在处理的任务都不具有子任务,也就是无法暂停其中一个子任务,那么第一任务的未处理的子任务只能等待当前处理的任务处理完成之后才能被处理,所以电子设备可以确定满足预设停止条件,并将第一任务的未处理的子任务放入等待队列中。
在第二种情况中,第二任务的正在被处理的子任务数量大于1且第二任务的正在被处理的子任务数量与第一任务的正在被处理的子任务数量的差不大于1,那么第二任务的正在被处理的子任务数量与第一任务的正在被处理的子任务数量的差也就是等于1,此时虽然第二任务的正在被处理的子任务数量最多,第一任务的正在被处理的子任务数量最少,但是二者之间的差距为1,这时二者的正在被处理的子任务数量实际上只相差1。
如果此时第一任务抢占第二任务的任务处理引擎,那么其对应的正在被处理的子任务数量增加1,第二任务的正在被处理的子任务数量减少1,那么在下一次循环执行上述步骤S102-步骤S105的过程中,第二任务又要抢占第一任务的任务处理引擎,这样将会出现第二任务与第一任务交替抢占任务处理引擎的情况。所以电子设备可以确定满足预设停止条件,并第一任务的未处理的子任务放入等待队列中。
可见,在本实施例中,在上述两种情况下,电子设备可以确定满足预设停止条件,并将第一任务的未处理的子任务放入等待队列中,以等待正在处理的子任务或任务被处理完成后,任务处理引擎可以对等待队列中的未处理的子任务进行处理。
作为本发明实施例的一种实施方式,上述方法还可以包括:
监控所述各个任务处理引擎所处理的子任务是否处理完成;在存在处理完成的子任务的情况下,返回上述从所述待处理任务及当前处理的任务中,确定正在被处理的子任务数量最少的任务的步骤,直到满足预设停止条件。
为了确定任务处理引擎正在处理的子任务是否处理完成,电子设备可以监控各个任务处理引擎所处理的子任务是否处理完成,在一种实施方式中,各个任务处理引擎可以在所处理的子任务处理完成时发送预设信号至电子设备,以告知电子设备其所处理的子任务已经处理完成。
在存在处理完成的子任务的情况下,电子设备可以返回执行上述从所述待处理任务及当前处理的任务中,确定正在被处理的子任务数量最少的任务的步骤,直到满足预设停止条件。其中,待处理任务可以包括上述被放入等待队列中的子任务以及被暂停处理的子任务所对应的任务。
可见,在本实施例中,电子设备还可以监控各个任务处理引擎所处理的子任务是否处理完成,进而在存在处理完成的子任务的情况下,返回上述从待处理任务及当前处理的任务中,确定正在被处理的子任务数量最少的任务的步骤,直到满足预设停止条件,这样可以在各个任务处理引擎所处理的子任务是否处理完成时,继续处理其他未处理完成的子任务。
作为本发明实施例的一种实施方式,上述方法还可以包括:
在所述剩余资源量最多的任务处理引擎能够处理所述第一任务的一个子任务的情况下,将所述第一任务的一个子任务分配给所述剩余资源量最多的任务处理引擎;返回所述从所述待处理任务及当前处理的任务中,确定正在被处理的子任务数量最少的任务的步骤,直到满足预设停止条件。
如果电子设备确定上述剩余资源量最多的任务处理引擎能够处理上述目标任务的一个子任务,那么电子设备便可以将目标任务的一个子任务分配给该剩余资源量最多的任务处理引擎,以使该剩余资源量最多的任务处理引擎可以对该子任务进行处理,并尽量保证各个任务处理引擎的负载均衡。
由于此时虽然加快了第一任务的处理速度,但是第一任务与正在被处理的子任务数量最多的第二任务所占用的任务处理引擎的数量可能仍然差距较大,所以为了进一步加快第一任务的处理速度,电子设备可以返回执行上述从所述待处理任务及当前处理的任务中,确定正在被处理的子任务数量最少的任务的步骤,直到满足预设停止条件。
可见,在本实施例中,在上述剩余资源量最多的任务处理引擎能够处理目标任务的一个子任务的情况下,电子设备可以将第一任务的一个子任务分配给剩余资源量最多的任务处理引擎,进而返回执行上述从所述待处理任务及当前处理的任务中,确定正在被处理的子任务数量最少的任务的步骤,直到满足预设停止条件。这样,无论是在剩余资源量最多的任务处理引擎不够处理第一任务的一个子任务的情况下,还是剩余资源量最多的任务处理引擎能够处理第一任务的一个子任务的情况下,均可以将第一任务的一个子任务分配出去,保证第一任务能够迅速开始处理,同时逐调整各个优先级相同的任务所占用的引擎的数量,以准建降低各个优先级相同的任务的处理进度之间的差异。
作为本发明实施例的一种实施方式,上述方法还可以包括:
在所述待处理任务的优先级高于当前处理的任务的优先级的情况下,暂停处理正在被处理的子任务;将所述待处理任务的子任务分配至所述任务处理引擎。
如果上述待处理任务的优先级高于当前处理的任务的优先级,说明此时需要优先处理该待处理任务,所以电子设备可以暂停处理正在被处理的子任务,进而,可以将待处理任务的子任务分配至任务处理引擎,以达到高优先级任务抢占低优先级任务的任务处理引擎的目的。在一种实施方式中,电子设备可以将待处理任务的子任务分配至各个任务处理引擎,这样可以尽量快速地处理高优先级任务,提高高优先级任务的处理效率。
如图4所示,假设任务处理引擎为4个,分别为引擎1-引擎4,当前分别正在处理任务Task1的4个子任务:Sudtask-1、Sudtask-2、Sudtask-3及Sudtask-4。此时获取待处理任务Newtask,电子设备确定待处理任务Newtask的优先级高于任务Task1,那么可以暂停处理子任务Sudtask-1、Sudtask-2、Sudtask-3及Sudtask-4,并将待处理任务Newtask划分为4个子任务:NewSudtask-1、NewSudtask-2、NewSudtask-3及NewSudtask-4。进而将子任务NewSudtask-1、NewSudtask-2、NewSudtask-3及NewSudtask-4分别分配至引擎1-引擎4,完成高优先级任务对任务处理引擎的抢占。
可见,在本实施例中,在待处理任务的优先级高于当前处理的任务的优先级的情况下,电子设备可以暂停处理正在被处理的子任务,进而将待处理任务的子任务分配至任务处理引擎,以使高优先级的任务能够得到尽快的处理,满足不同优先级任务的不同处理需求。
作为本发明实施例的一种实施方式,如图5所示,在上述暂停处理正在被处理的子任务的步骤之后,上述方法还可以包括:
S501,将暂停处理的子任务放入暂停队列,并在所述暂停队列中记录所述暂停处理的子任务的处理进度;
暂停处理上述正在被处理的子任务之后,电子设备可以将暂停处理的子任务放入暂停队列,并在暂停队列中记录暂停处理的子任务的处理进度。
承接如图4所示的示例,电子设备暂停处理子任务Sudtask-1、Sudtask-2、Sudtask-3及Sudtask-4后,如图6所示,电子设备可以将子任务Sudtask-1、Sudtask-2、Sudtask-3及Sudtask-4放入暂停队列610中,并记录子任务Sudtask-1、Sudtask-2、Sudtask-3及Sudtask-4的处理进度。
在一种实施方式中,可以构建子任务池,该子任务池可以用于放置需要被处理的子任务,当前正在处理的子任务被处理完成之后,后续的子任务可以进入子任务池以被处理。由于暂停队列中的子任务并没有处理完成,需要继续被处理,因此如图6所示,暂停队列610可以位于子任务池600中。其中,子任务池600中的Sudtask-5、Sudtask-6、Sudtask-7…Sudtask-N表示后续可能到来的需要处理的子任务。
S502,在所述待处理任务的子任务处理完成,且不存在优先级高于或等于所述暂停处理的子任务的情况下,将所述暂停处理的子任务分配至所述各个任务处理引擎,以使所述各个任务处理引擎基于所记录的处理进度继续处理被分配的子任务。
上述待处理任务的子任务处理完成,且不存在优先级高于或等于暂停处理的子任务的情况下,说明此时已经没有优先级高于暂停处理的子任务的其他任务了,那么电子设备可以将该暂停处理的子任务分配至各个任务处理引擎,这样,各个任务处理引擎便可以基于暂停队列中所记录的暂停处理的子任务的处理进度,继续处理被分配的子任务。
在一种实施方式中,为了尽量保证各个任务处理引擎的负载均衡以及各个子任务均能够被处理,可以将暂停处理的子任务平均分配至各个任务处理引擎。
可见,在本实施例中,在暂停处理正在被处理的子任务后,电子设备还可以将暂停处理的子任务放入暂停队列,并在暂停队列中记录暂停处理的子任务的处理进度,进而在待处理任务的子任务处理完成,且不存在优先级高于或等于暂停处理的子任务的情况下,将暂停处理的子任务分配至各个任务处理引擎进行处理。这样,各个任务处理引擎可以基于所记录的处理进度继续处理各暂停处理的子任务,而无需重新开始处理暂停处理的子任务,可以有效提高任务处理速度,避免造成资源的浪费。
作为本发明实施例的一种实施方式,上述方法还可以包括:
在所述待处理任务的优先级低于当前处理的任务的优先级的情况下,将所述待处理任务的子任务放入等待队列中。
如果待处理任务的优先级低于当前处理的任务的优先级,说明当前处理的任务相比于待处理任务来说需要被尽快处理,所以电子设备可以将待处理任务的子任务放入等待队列中,这样,各个任务处理引擎可以继续当前处理的任务。
当前处理的任务被处理完成后,电子设备可以获取等待队列中的待处理任务,进而将其分配至任务处理引擎进行处理,作为一种实施方式,可以将其划分为多个子任务,分配至各个任务处理引擎进行处理,以提高任务处理速度。
可见,在本实施例中,在待处理任务的优先级低于当前处理的任务的优先级的情况下,电子设备可以将待处理任务的子任务放入等待队列中,以等待当前处理的任务完成后任务处理引擎可以对其进行处理,满足不同优先级任务的不同处理需求。
在上述任务处理过程中,每当获取新的需要处理的任务时,均可以按照上述实施例所提供的方式确定当前处理的任务与新的需要处理的任务的优先级之间的高低关系,进而按照不同情况对应的具体方式进行任务调度,可以保证针对不同优先级的任务,按照处理需求优先处理优先级高的任务,针对相同优先级的任务,尽可能地缩小不同任务的处理进度差异,尽量保证不会出现个别任务处理进度过快,而个别任务处理进度过慢的问题。
相应于上述任务调度方法,本发明实施例提供了一种任务调度装置。下面对本发明实施例所提供的一种任务调度装置进行介绍。
如图7所示,一种任务调度装置,所述装置包括:
任务划分模块710,用于获取待处理任务,并将所述待处理任务划分为多个子任务,其中,所述待处理任务具有优先级;
第一任务确定模块720,用于在所述待处理任务的优先级与当前处理的任务的优先级相同的情况下,从所述待处理任务及当前处理的任务中,确定正在被处理的子任务数量最少的任务,作为第一任务;
其中,所述当前处理的任务包括多个子任务。
第二任务确定模块730,用于在剩余资源量最多的任务处理引擎无法处理所述第一任务的一个子任务的情况下,暂停处理目标子任务;
其中,所述目标子任务为从第二任务的正在被处理的子任务中选取的,所述第二任务为包括了正在被处理的的子任务数量最多的任务。
第一任务调度模块740,用于将所述第一任务的一个子任务分配给目标引擎,并触发所述第一任务确定模块,直到满足预设停止条件。
其中,所述目标引擎为所述目标子任务暂停之前处理所述目标子任务的任务处理引擎。
可见,本发明实施例提供的方案中,电子设备可以获取待处理任务,并将待处理任务划分为多个子任务,其中,待处理任务具有优先级;在待处理任务的优先级与当前处理的任务的优先级相同的情况下,从待处理任务及当前处理的任务中,确定正在被处理的子任务数量最少的任务,作为第一任务,其中,当前处理的任务包括多个子任务;在剩余资源量最多的任务处理引擎无法处理第一任务的一个子任务的情况下,暂停处理目标子任务,其中,目标子任务为从第二任务的正在被处理的子任务中选取的,第二任务为包括了正在被处理的的子任务数量最多的任务;将第一任务的一个子任务分配给目标引擎,并返回从待处理任务及当前处理的任务中,确定正在被处理的子任务数量最少的任务的步骤,直到满足预设停止条件,其中,目标引擎为目标子任务暂停之前处理目标子任务的任务处理引擎。由于在待处理任务的优先级与当前处理的任务的优先级相同的情况下,通过上述方式可以使正在被处理的子任务数量最少的任务,逐渐抢占正在被处理的的子任务数量最多的任务所占用的任务处理引擎,所以可以使优先级相同的各个任务的处理进度达到基本平衡,大大降低同一优先级的任务的处理进度的差异。
作为本发明实施例的一种实施方式,如图8所示,上述第二任务确定模块730可以包括:
任务确定单元731,用于从当前处理的任务中,确定正在被处理的子任务数量最多的任务,作为第二任务;
目标引擎确定单元732,用于在所述第二任务的正在被处理的子任务数量大于1,且所述第二任务的正在被处理的子任务数量与所述第一任务的正在被处理的子任务数量的差大于1的情况下,从正在处理所述第二任务的子任务的任务处理引擎中,确定剩余资源量最多的任务处理引擎,作为目标引擎;
子任务确定单元733,用于将所述目标引擎正在处理的所述第二任务的一个子任务确定为目标子任务。
作为本发明实施例的一种实施方式,上述目标引擎确定单元732可以包括:
第一排序子单元,用于将正在处理所述第二任务的子任务的任务处理引擎,按照剩余资源量进行排序,得到第一排序结果;
第一目标引擎确定子单元,用于基于所述第一排序结果,确定剩余资源量最多的任务处理引擎,作为目标引擎。
作为本发明实施例的一种实施方式,上述目标引擎确定单元732可以包括:
第二排序子单元,用于将所述各个任务处理引擎按照剩余资源量进行排序,得到第二排序结果;
引擎确定子单元,用于基于所述第二排序结果,确定剩余资源量最多的任务处理引擎;
第二目标引擎确定子单元,用于在所述剩余资源量最多的任务处理引擎正在处理的子任务包括所述第二任务的子任务的情况下,将所述剩余资源量最多的任务处理引擎确定为目标引擎;和/或,
引擎删除子单元,用于在所述剩余资源量最多的任务处理引擎正在处理的子任务不包括所述第二任务的子任务的情况下,从所述第二排序结果中删除该剩余资源量最多的任务处理引擎,得到更新后的第二排序结果,并触发所述基于所述引擎确定子单元。
作为本发明实施例的一种实施方式,上述装置还可以包括:
第二任务调度模块,用于在所述第二任务的正在被处理的子任务数量为1的情况下,或,在所述第二任务的正在被处理的子任务数量大于1且所述第二任务的正在被处理的子任务数量与所述第一任务的正在被处理的子任务数量的差不大于1的情况下,确定满足预设停止条件,并将所述第一任务的未处理的子任务放入等待队列中。
作为本发明实施例的一种实施方式,上述装置还可以包括:
任务监控模块,用于监控所述各个任务处理引擎所处理的子任务是否处理完成;
第三任务调度模块,用于在存在处理完成的子任务的情况下,触发所述第一任务确定模块,直到满足预设停止条件。
作为本发明实施例的一种实施方式,上述装置还可以包括:
第四任务调度模块,用于在所述剩余资源量最多的任务处理引擎能够处理所述第一任务的一个子任务的情况下,将所述第一任务的一个子任务分配给所述剩余资源量最多的任务处理引擎,并触发所述第一任务确定模块,直到满足预设停止条件。
作为本发明实施例的一种实施方式,上述装置还可以包括:
任务暂停模块,用于在所述待处理任务的优先级高于当前处理的任务的优先级的情况下,暂停处理正在被处理的子任务;
第五任务调度模块,用于将所述待处理任务的子任务分配至所述任务处理引擎。
作为本发明实施例的一种实施方式,上述装置还可以包括:
处理进度记录模块,用于在暂停处理正在被处理的子任务之后,将暂停处理的子任务放入暂停队列,并在所述暂停队列中记录所述暂停处理的子任务的处理进度;
第六任务调度模块,用于在所述待处理任务的子任务处理完成,且不存在优先级高于或等于所述暂停处理的子任务的情况下,将所述暂停处理的子任务分配至所述各个任务处理引擎,以使所述各个任务处理引擎基于所记录的处理进度继续处理被分配的子任务。
作为本发明实施例的一种实施方式,上述装置还可以包括:
第七任务调度模块,用于在所述待处理任务的优先级低于当前处理的任务的优先级的情况下,将所述待处理任务的子任务放入等待队列中。
本发明实施例还提供了一种电子设备,如图9所示,包括处理器901、通信接口902、存储器903和通信总线904,其中,处理器901,通信接口902,存储器903通过通信总线904完成相互间的通信,
存储器903,用于存放计算机程序;
处理器901,用于执行存储器903上所存放的程序时,实现上述任一实施例所述的任务调度方法步骤。
可见,本发明实施例提供的方案中,电子设备可以获取待处理任务,并将待处理任务划分为多个子任务,其中,待处理任务具有优先级;在待处理任务的优先级与当前处理的任务的优先级相同的情况下,从待处理任务及当前处理的任务中,确定正在被处理的子任务数量最少的任务,作为第一任务,其中,当前处理的任务包括多个子任务;在剩余资源量最多的任务处理引擎无法处理第一任务的一个子任务的情况下,暂停处理目标子任务,其中,所述目标子任务为从第二任务的正在被处理的子任务中选取的,第二任务为包括了正在被处理的的子任务数量最多的任务;将第一任务的一个子任务分配给目标引擎,并返回从待处理任务及当前处理的任务中,确定正在被处理的子任务数量最少的任务的步骤,直到满足预设停止条件,其中,目标引擎为目标子任务暂停之前处理目标子任务的任务处理引擎。由于在待处理任务的优先级与当前处理的任务的优先级相同的情况下,通过上述方式可以使正在被处理的子任务数量最少的任务,逐渐抢占正在被处理的的子任务数量最多的任务所占用的任务处理引擎,所以可以使优先级相同的各个任务的处理进度达到基本平衡,大大降低同一优先级的任务的处理进度的差异。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一实施例所述的任务调度方法的步骤。
可见,本发明实施例提供的方案中,计算机程序被处理器执行时可以获取待处理任务,并将待处理任务划分为多个子任务,其中,待处理任务具有优先级;在待处理任务的优先级与当前处理的任务的优先级相同的情况下,从待处理任务及当前处理的任务中,确定正在被处理的子任务数量最少的任务,作为第一任务,其中,当前处理的任务包括多个子任务;在剩余资源量最多的任务处理引擎无法处理第一任务的一个子任务的情况下,暂停处理目标子任务,其中,所述目标子任务为从第二任务的正在被处理的子任务中选取的,第二任务为包括了正在被处理的的子任务数量最多的任务;将第一任务的一个子任务分配给目标引擎,并返回从待处理任务及当前处理的任务中,确定正在被处理的子任务数量最少的任务的步骤,直到满足预设停止条件,其中,目标引擎为目标子任务暂停之前处理目标子任务的任务处理引擎。由于在待处理任务的优先级与当前处理的任务的优先级相同的情况下,通过上述方式可以使正在被处理的子任务数量最少的任务,逐渐抢占正在被处理的的子任务数量最多的任务所占用的任务处理引擎,所以可以使优先级相同的各个任务的处理进度达到基本平衡,大大降低同一优先级的任务的处理进度的差异。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一实施例所述的任务调度方法。
可见,本发明实施例提供的方案中,计算机程序产品在计算机上运行时可以获取待处理任务,并将待处理任务划分为多个子任务,其中,待处理任务具有优先级;在待处理任务的优先级与当前处理的任务的优先级相同的情况下,从待处理任务及当前处理的任务中,确定正在被处理的子任务数量最少的任务,作为第一任务,其中,当前处理的任务包括多个子任务;在剩余资源量最多的任务处理引擎无法处理第一任务的一个子任务的情况下,暂停处理目标子任务,其中,所述目标子任务为从第二任务的正在被处理的子任务中选取的,第二任务为包括了正在被处理的的子任务数量最多的任务;将第一任务的一个子任务分配给目标引擎,并返回从待处理任务及当前处理的任务中,确定正在被处理的子任务数量最少的任务的步骤,直到满足预设停止条件,其中,目标引擎为目标子任务暂停之前处理目标子任务的任务处理引擎。由于在待处理任务的优先级与当前处理的任务的优先级相同的情况下,通过上述方式可以使正在被处理的子任务数量最少的任务,逐渐抢占正在被处理的的子任务数量最多的任务所占用的任务处理引擎,所以可以使优先级相同的各个任务的处理进度达到基本平衡,大大降低同一优先级的任务的处理进度的差异。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、电子设备、计算机可读存储介质及计算机程序产品实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (12)
1.一种任务调度方法,其特征在于,所述方法包括:
获取待处理任务,并将所述待处理任务划分为多个子任务,其中,所述待处理任务具有优先级;
在所述待处理任务的优先级与当前处理的任务的优先级相同的情况下,从所述待处理任务及当前处理的任务中,确定正在被处理的子任务数量最少的任务,作为第一任务,其中,所述当前处理的任务包括多个子任务;
在剩余资源量最多的任务处理引擎无法处理所述第一任务的一个子任务的情况下,暂停处理目标子任务,其中,所述目标子任务为从第二任务的正在被处理的子任务中选取的,所述第二任务为包括了正在被处理的子任务数量最多的任务;
将所述第一任务的一个子任务分配给目标引擎,并返回所述从所述待处理任务及当前处理的任务中,确定正在被处理的子任务数量最少的任务的步骤,直到满足预设停止条件,其中,所述目标引擎为所述目标子任务暂停之前处理所述目标子任务的任务处理引擎;
其中,所述目标子任务的选取方式,包括:
从当前处理的任务中,确定正在被处理的子任务数量最多的任务,作为第二任务;
在所述第二任务的正在被处理的子任务数量大于1,且所述第二任务的正在被处理的子任务数量与所述第一任务的正在被处理的子任务数量的差大于1的情况下,从正在处理所述第二任务的子任务的任务处理引擎中,确定剩余资源量最多的任务处理引擎,作为目标引擎;
将所述目标引擎正在处理的所述第二任务的一个子任务确定为目标子任务;
在所述第二任务的正在被处理的子任务数量为1的情况下,或,在所述第二任务的正在被处理的子任务数量大于1且所述第二任务的正在被处理的子任务数量与所述第一任务的正在被处理的子任务数量的差不大于1的情况下,确定满足预设停止条件,并将所述第一任务的未处理的子任务放入等待队列中。
2.根据权利要求1所述的方法,其特征在于,所述从正在处理所述第二任务的子任务的任务处理引擎中,确定剩余资源量最多的任务处理引擎,作为目标引擎的步骤,包括:
将正在处理所述第二任务的子任务的任务处理引擎,按照剩余资源量进行排序,得到第一排序结果;
基于所述第一排序结果,确定剩余资源量最多的任务处理引擎,作为目标引擎。
3.根据权利要求1所述的方法,其特征在于,所述从正在处理所述第二任务的子任务的任务处理引擎中,确定剩余资源量最多的任务处理引擎,作为目标引擎的步骤,包括:
将各个任务处理引擎按照剩余资源量进行排序,得到第二排序结果;
基于所述第二排序结果,确定剩余资源量最多的任务处理引擎;
在所述剩余资源量最多的任务处理引擎正在处理的子任务包括所述第二任务的子任务的情况下,将所述剩余资源量最多的任务处理引擎确定为目标引擎;和/或,
在所述剩余资源量最多的任务处理引擎正在处理的子任务不包括所述第二任务的子任务的情况下,从所述第二排序结果中删除该剩余资源量最多的任务处理引擎,得到更新后的第二排序结果,并返回所述基于所述第二排序结果,确定剩余资源量最多的任务处理引擎的步骤。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述方法还包括:
监控所述各个任务处理引擎所处理的子任务是否处理完成;
在存在处理完成的子任务的情况下,返回所述从所述待处理任务及当前处理的任务中,确定正在被处理的子任务数量最少的任务的步骤,直到满足预设停止条件。
5.根据权利要求1-3任一项所述的方法,其特征在于,所述方法还包括:
在所述剩余资源量最多的任务处理引擎能够处理所述第一任务的一个子任务的情况下,将所述第一任务的一个子任务分配给所述剩余资源量最多的任务处理引擎;
返回所述从所述待处理任务及当前处理的任务中,确定正在被处理的子任务数量最少的任务的步骤,直到满足预设停止条件。
6.根据权利要求1-3任一项所述的方法,其特征在于,所述方法还包括:
在所述待处理任务的优先级高于当前处理的任务的优先级的情况下,暂停处理正在被处理的子任务;
将所述待处理任务的子任务分配至所述任务处理引擎。
7.根据权利要求6所述的方法,其特征在于,在所述暂停处理正在被处理的子任务的步骤之后,所述方法还包括:
将暂停处理的子任务放入暂停队列,并在所述暂停队列中记录所述暂停处理的子任务的处理进度;
在所述待处理任务的子任务处理完成,且不存在优先级高于或等于所述暂停处理的子任务的情况下,将所述暂停处理的子任务分配至所述各个任务处理引擎,以使所述各个任务处理引擎基于所记录的处理进度继续处理被分配的子任务。
8.根据权利要求1-3任一项所述的方法,其特征在于,所述方法还包括:
在所述待处理任务的优先级低于当前处理的任务的优先级的情况下,将所述待处理任务的子任务放入等待队列中。
9.一种任务调度装置,其特征在于,所述装置包括:
任务划分模块,用于获取待处理任务,并将所述待处理任务划分为多个子任务,其中,所述待处理任务具有优先级;
第一任务确定模块,用于在所述待处理任务的优先级与当前处理的任务的优先级相同的情况下,从所述待处理任务及当前处理的任务中,确定正在被处理的子任务数量最少的任务,作为第一任务,其中,所述当前处理的任务包括多个子任务;
第二任务确定模块,用于在剩余资源量最多的任务处理引擎无法处理所述第一任务的一个子任务的情况下,暂停处理目标子任务,其中,所述目标子任务为从第二任务的正在被处理的子任务中选取的,所述第二任务为包括了正在被处理的的子任务数量最多的任务;
第一任务调度模块,用于将所述第一任务的一个子任务分配给目标引擎,并触发所述第一任务确定模块,直到满足预设停止条件,其中,所述目标引擎为所述目标子任务暂停之前处理所述目标子任务的任务处理引擎;
其中,所述第二任务确定模块包括:
任务确定单元,用于从当前处理的任务中,确定正在被处理的子任务数量最多的任务,作为第二任务;
目标引擎确定单元,用于在所述第二任务的正在被处理的子任务数量大于1,且所述第二任务的正在被处理的子任务数量与所述第一任务的正在被处理的子任务数量的差大于1的情况下,从正在处理所述第二任务的子任务的任务处理引擎中,确定剩余资源量最多的任务处理引擎,作为目标引擎;
子任务确定单元,用于将所述目标引擎正在处理的所述第二任务的一个子任务确定为目标子任务;
所述装置还包括第二任务调度模块;
所述第二任务调度模块,用于在所述第二任务的正在被处理的子任务数量为1的情况下,或,在所述第二任务的正在被处理的子任务数量大于1且所述第二任务的正在被处理的子任务数量与所述第一任务的正在被处理的子任务数量的差不大于1的情况下,确定满足预设停止条件,并将所述第一任务的未处理的子任务放入等待队列中。
10.根据权利要求9所述的装置,其特征在于,所述目标引擎确定单元包括:
第一排序子单元,用于将正在处理所述第二任务的子任务的任务处理引擎,按照剩余资源量进行排序,得到第一排序结果;
第一目标引擎确定子单元,用于基于所述第一排序结果,确定剩余资源量最多的任务处理引擎,作为目标引擎;
所述目标引擎确定单元包括:
第二排序子单元,用于将所述各个任务处理引擎按照剩余资源量进行排序,得到第二排序结果;
引擎确定子单元,用于基于所述第二排序结果,确定剩余资源量最多的任务处理引擎;
第二目标引擎确定子单元,用于在所述剩余资源量最多的任务处理引擎正在处理的子任务包括所述第二任务的子任务的情况下,将所述剩余资源量最多的任务处理引擎确定为目标引擎;和/或,
引擎删除子单元,用于在所述剩余资源量最多的任务处理引擎正在处理的子任务不包括所述第二任务的子任务的情况下,从所述第二排序结果中删除该剩余资源量最多的任务处理引擎,得到更新后的第二排序结果,并触发所述基于所述引擎确定子单元;
所述装置还包括:
任务监控模块,用于监控所述各个任务处理引擎所处理的子任务是否处理完成;
第三任务调度模块,用于在存在处理完成的子任务的情况下,触发所述第一任务确定模块,直到满足预设停止条件;
所述装置还包括:
第四任务调度模块,用于在所述剩余资源量最多的任务处理引擎能够处理所述第一任务的一个子任务的情况下,将所述第一任务的一个子任务分配给所述剩余资源量最多的任务处理引擎,并触发所述第一任务确定模块,直到满足预设停止条件;
所述装置还包括:
任务暂停模块,用于在所述待处理任务的优先级高于当前处理的任务的优先级的情况下,暂停处理正在被处理的子任务;
第五任务调度模块,用于将所述待处理任务的子任务分配至所述任务处理引擎;
所述装置还包括:
处理进度记录模块,用于在暂停处理正在被处理的子任务之后,将暂停处理的子任务放入暂停队列,并在所述暂停队列中记录所述暂停处理的子任务的处理进度;
第六任务调度模块,用于在所述待处理任务的子任务处理完成,且不存在优先级高于或等于所述暂停处理的子任务的情况下,将所述暂停处理的子任务分配至所述各个任务处理引擎,以使所述各个任务处理引擎基于所记录的处理进度继续处理被分配的子任务;
所述装置还包括:
第七任务调度模块,用于在所述待处理任务的优先级低于当前处理的任务的优先级的情况下,将所述待处理任务的子任务放入等待队列中。
11.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-8任一所述的方法步骤。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-8任一所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011595150.3A CN112685158B (zh) | 2020-12-29 | 2020-12-29 | 一种任务调度方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011595150.3A CN112685158B (zh) | 2020-12-29 | 2020-12-29 | 一种任务调度方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112685158A CN112685158A (zh) | 2021-04-20 |
CN112685158B true CN112685158B (zh) | 2023-08-04 |
Family
ID=75455235
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011595150.3A Active CN112685158B (zh) | 2020-12-29 | 2020-12-29 | 一种任务调度方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112685158B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113965481B (zh) * | 2021-10-11 | 2024-06-07 | 山东星维九州安全技术有限公司 | 一种网络资产探测多任务调度优化方法 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5636124A (en) * | 1995-03-08 | 1997-06-03 | Allen-Bradley Company, Inc. | Multitasking industrial controller |
CN1910553A (zh) * | 2004-01-08 | 2007-02-07 | 皇家飞利浦电子股份有限公司 | 基于存储器要求在多处理器系统中进行任务调度的方法和设备 |
CN102783129A (zh) * | 2009-10-08 | 2012-11-14 | 电子湾有限公司 | 用于处理在应用程序接口处接收的请求的系统和方法 |
CN103914754A (zh) * | 2014-03-12 | 2014-07-09 | 中国科学院信息工程研究所 | 一种工作流的任务调度方法、多工作流调度方法及其系统 |
CN108123980A (zh) * | 2016-11-30 | 2018-06-05 | 中移(苏州)软件技术有限公司 | 一种资源调度方法及系统 |
CN108769254A (zh) * | 2018-06-25 | 2018-11-06 | 星环信息科技(上海)有限公司 | 基于抢占式调度的资源共享使用方法、系统及设备 |
CN109542600A (zh) * | 2018-11-15 | 2019-03-29 | 口碑(上海)信息技术有限公司 | 分布式任务调度系统及方法 |
CN110134521A (zh) * | 2019-05-28 | 2019-08-16 | 北京达佳互联信息技术有限公司 | 资源分配的方法、装置、资源管理器及存储介质 |
CN110673944A (zh) * | 2018-07-03 | 2020-01-10 | 杭州海康威视数字技术股份有限公司 | 执行任务的方法和装置 |
CN111064746A (zh) * | 2019-12-30 | 2020-04-24 | 深信服科技股份有限公司 | 一种资源分配方法、装置、设备及存储介质 |
CN112000452A (zh) * | 2020-08-20 | 2020-11-27 | 杭州电子科技大学 | 一种基于排队论的自动驾驶系统实时性分析方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7448036B2 (en) * | 2002-05-02 | 2008-11-04 | International Business Machines Corporation | System and method for thread scheduling with weak preemption policy |
US20050022173A1 (en) * | 2003-05-30 | 2005-01-27 | Codito Technologies Private Limited | Method and system for allocation of special purpose computing resources in a multiprocessor system |
US8479207B2 (en) * | 2011-02-25 | 2013-07-02 | Qualcomm Incorporated | Priority inheritance in multithreaded systems |
US10095526B2 (en) * | 2012-10-12 | 2018-10-09 | Nvidia Corporation | Technique for improving performance in multi-threaded processing units |
US20150293783A1 (en) * | 2014-04-09 | 2015-10-15 | International Business Machines Corporation | Scheduling identity manager reconciliation to execute at an optimal time |
US11106495B2 (en) * | 2019-06-13 | 2021-08-31 | Intel Corporation | Techniques to dynamically partition tasks |
-
2020
- 2020-12-29 CN CN202011595150.3A patent/CN112685158B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5636124A (en) * | 1995-03-08 | 1997-06-03 | Allen-Bradley Company, Inc. | Multitasking industrial controller |
CN1910553A (zh) * | 2004-01-08 | 2007-02-07 | 皇家飞利浦电子股份有限公司 | 基于存储器要求在多处理器系统中进行任务调度的方法和设备 |
CN102783129A (zh) * | 2009-10-08 | 2012-11-14 | 电子湾有限公司 | 用于处理在应用程序接口处接收的请求的系统和方法 |
CN103914754A (zh) * | 2014-03-12 | 2014-07-09 | 中国科学院信息工程研究所 | 一种工作流的任务调度方法、多工作流调度方法及其系统 |
CN108123980A (zh) * | 2016-11-30 | 2018-06-05 | 中移(苏州)软件技术有限公司 | 一种资源调度方法及系统 |
CN108769254A (zh) * | 2018-06-25 | 2018-11-06 | 星环信息科技(上海)有限公司 | 基于抢占式调度的资源共享使用方法、系统及设备 |
WO2020000944A1 (zh) * | 2018-06-25 | 2020-01-02 | 星环信息科技(上海)有限公司 | 基于抢占式调度的资源共享使用方法、系统及设备 |
CN110673944A (zh) * | 2018-07-03 | 2020-01-10 | 杭州海康威视数字技术股份有限公司 | 执行任务的方法和装置 |
CN109542600A (zh) * | 2018-11-15 | 2019-03-29 | 口碑(上海)信息技术有限公司 | 分布式任务调度系统及方法 |
CN110134521A (zh) * | 2019-05-28 | 2019-08-16 | 北京达佳互联信息技术有限公司 | 资源分配的方法、装置、资源管理器及存储介质 |
CN111064746A (zh) * | 2019-12-30 | 2020-04-24 | 深信服科技股份有限公司 | 一种资源分配方法、装置、设备及存储介质 |
CN112000452A (zh) * | 2020-08-20 | 2020-11-27 | 杭州电子科技大学 | 一种基于排队论的自动驾驶系统实时性分析方法 |
Non-Patent Citations (1)
Title |
---|
基于任务的 SolCS 内核实时能力的实现;曾小进等;微计算机信息;第23卷(第4-2期);第54-56页 * |
Also Published As
Publication number | Publication date |
---|---|
CN112685158A (zh) | 2021-04-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113535367B (zh) | 任务调度方法及相关装置 | |
KR101644800B1 (ko) | 컴퓨팅 시스템 및 방법 | |
WO2016197716A1 (zh) | 一种作业调度方法和装置 | |
US9015724B2 (en) | Job dispatching with scheduler record updates containing characteristics combinations of job characteristics | |
US7681196B2 (en) | Providing optimal number of threads to applications performing multi-tasking using threads | |
CN109840149B (zh) | 任务调度方法、装置、设备及存储介质 | |
CN112148468A (zh) | 一种资源调度方法、装置、电子设备及存储介质 | |
CN106775975B (zh) | 进程调度方法及装置 | |
CN114168302A (zh) | 任务调度方法、装置、设备及存储介质 | |
CN113886069A (zh) | 一种资源分配方法、装置、电子设备及存储介质 | |
CN107357640B (zh) | 多线程数据库的请求处理方法及装置、电子设备 | |
CN112685158B (zh) | 一种任务调度方法、装置、电子设备及存储介质 | |
CN114327894A (zh) | 资源分配方法、装置、电子设备及存储介质 | |
CN116483546B (zh) | 分布式训练任务调度方法、装置、设备及存储介质 | |
CN111143063B (zh) | 任务的资源预约方法及装置 | |
CN113760369A (zh) | 并发线程处理方法、装置、电子设备以及存储介质 | |
CN111831408A (zh) | 异步任务处理方法、装置、电子设备及介质 | |
CN110968420A (zh) | 一种多爬虫平台的调度方法、装置、存储介质及处理器 | |
WO2021253875A1 (zh) | 内存管理方法和相关产品 | |
US20140047454A1 (en) | Load balancing in an sap system | |
US11307974B2 (en) | Horizontally scalable distributed system for automated firmware testing and method thereof | |
CN112395063B (zh) | 一种动态多线程调度方法及系统 | |
CN112181640A (zh) | 一种任务处理方法及装置 | |
CN112631743B (zh) | 任务调度方法、装置及存储介质 | |
US20230418667A1 (en) | Computing device for handling tasks in a multi-core processor, and method for operating computing device |
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 |