CN119166310A - 任务调度方法、任务调度装置、存储介质和电子设备 - Google Patents
任务调度方法、任务调度装置、存储介质和电子设备 Download PDFInfo
- Publication number
- CN119166310A CN119166310A CN202411327608.5A CN202411327608A CN119166310A CN 119166310 A CN119166310 A CN 119166310A CN 202411327608 A CN202411327608 A CN 202411327608A CN 119166310 A CN119166310 A CN 119166310A
- Authority
- CN
- China
- Prior art keywords
- execution
- execution time
- scheduled
- task
- tasks
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
-
- 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
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请提供了一种任务调度方法、任务调度装置、存储介质和电子设备,该方法包括:获取多个待调度任务;获取多个用于执行待调度任务的执行机,待调度任务的个数大于执行机的个数;根据各待调度任务在执行机上的执行时间,对所有的待调度任务进行调度,确定目标调度方案,以使得所有的待调度任务的总执行时间最短且所有的执行机的执行时间的方差最小,目标调度方案包括各执行机的执行任务队列,执行任务队列包括至少一个待调度任务。该方法通过优化任务调度算法,解决任务组内执行时间差距较大出现的资源浪费,局部分配不合理的问题。同时不影响正常任务队列的调度结果。
Description
技术领域
本申请涉及软件任务调度领域,具体而言,涉及一种任务调度方法、任务调度装置、计算机可读存储介质和电子设备。
背景技术
随着用户量和数据量的增长,单台服务器远远无法满足互联网应用对于硬件性能、响应速度等各方面的要求,因此往往采用由多台部署相同服务的服务器构成一个集群,对外提供一个访问入口形成一个整体提供服务。在集群应用中,核心的技术之一就是任务调度,通过对待执行的任务合理地排序与分组,实现任务的整体执行效率最高。
由于每个任务的执行时间不同,假定所有执行机的性能相同,可通过回溯算法根据任务的执行时间与执行机的数量计算出最佳的调度策略。通过回溯算法对任务进行分配时,即目前通用的回溯算法只能对整体的执行效率做判断,若部分任务的执行时间与其他任务相差较大,则会出现多组最优解,此时,现有技术则无法判断最优解集合内部的执行效率差异,会出现局部资源分配不合理的问题。
发明内容
本申请的主要目的在于提供一种任务调度方法、任务调度装置、计算机可读存储介质和电子设备,以至少解决现有技术中当任务组内执行时间差距较大会出现资源浪费,局部资源分配不合理的问题。
为了实现上述目的,根据本申请的一个方面,提供了一种任务调度方法,包括:获取多个待调度任务;获取多个用于执行所述待调度任务的执行机,所述待调度任务的个数大于所述执行机的个数;根据各所述待调度任务在所述执行机上的执行时间,对所有的所述待调度任务进行调度,确定目标调度方案,以使得所有的所述待调度任务的总执行时间最短且所有的所述执行机的执行时间的方差最小,所述目标调度方案包括各所述执行机的执行任务队列,所述执行任务队列包括至少一个所述待调度任务。
可选地,根据各所述待调度任务在所述执行机上的执行时间,对所有的所述待调度任务进行调度,确定目标调度方案,包括:基于所述待调度任务和所述执行机,构建任务空间树;采用回溯算法对所述任务空间树进行求解,得到多个解,每个所述解表征一种初始调度方案;依次执行多个所述初始调度方案,得到各所述初始调度方案的总执行时间与所述初始调度方案中各所述执行机的执行时间;根据所述初始调度方案的总执行时间以及所述初始调度方案中所有的所述执行机的执行时间的方差,确定所述目标调度方案。
可选地,基于所述待调度任务和所述执行机,构建任务空间树,包括:根据所述待调度任务,确定所述任务空间树的节点;根据所述执行机,确定所述任务空间树的连接各所述节点之间的边;其中,所述任务空间树的每条支路表征一种调度方案,所述支路上的节点表征所述待调度任务,所述支路上当前节点与下一节点连接的边表征所述当前节点对应的所述待调度任务分配执行的执行机。
可选地,根据所述初始调度方案的总执行时间以及所述初始调度方案中所有的所述执行机的执行时间的方差,确定所述目标调度方案,包括:在当前执行的所述初始调度方案的总执行时间等于缓存执行时间的情况下,比较当前执行方差与缓存执行方差的大小,所述缓存执行时间为存储的上一个执行的所述初始调度方案的总执行时间,所述当前执行方差为当前执行的所述初始调度方案中所有的所述执行机执行分配的所述待调度任务的执行时间的方差,所述缓存执行方差为存储的上一个执行的所述初始调度方案中所有的所述执行机执行分配的所述待调度任务的执行时间的方差;在所述当前执行方差小于所述缓存执行方差的情况下,将当前执行的所述初始调度方案确定为预备调度方案;确定所有的所述初始调度方案是否执行完成,在所有的所述初始调度方案执行完成的情况下,将所述预备调度方案确定为所述目标调度方案。
可选地,根据所述初始调度方案的总执行时间以及所述初始调度方案中所有的所述执行机的执行时间的方差,确定所述目标调度方案,包括:在当前执行的所述初始调度方案的总执行时间小于缓存执行时间的情况下,将当前执行的所述初始调度方案确定为预备调度方案,所述缓存执行时间为存储的上一个执行的所述初始调度方案的总执行时间;确定所有的所述初始调度方案是否执行完成,在所有的所述初始调度方案执行完成的情况下,将所述预备调度方案确定为所述目标调度方案。
可选地,所述方法还包括:在当前执行的所述初始调度方案的总执行时间大于缓存执行时间的情况下,继续执行下一个所述初始调度方案,所述缓存执行时间为存储的上一个执行的所述初始调度方案的总执行时间。
可选地,在根据各所述待调度任务在所述执行机上的执行时间,对所有的所述待调度任务进行调度,确定目标调度方案之后,所述方法还包括:在目标执行机还未执行完成所述待调度任务且非目标执行机均已执行完成对应的所述待调度任务的情况下,确定所述目标执行机的剩余执行时间;在所述目标执行机的剩余执行时间大于执行时间阈值的情况下,将所述目标执行机的剩余执行时间保留至下一次任务调度过程中进行调度。
根据本申请的另一方面,提供了一种任务调度装置,包括:第一获取单元,用于获取多个待调度任务;第二获取单元,用于获取多个用于执行所述待调度任务的执行机,所述待调度任务的个数大于所述执行机的个数;确定单元,用于根据各所述待调度任务在所述执行机上的执行时间,对所有的所述待调度任务进行调度,确定目标调度方案,以使得所有的所述待调度任务的总执行时间最短且所有的所述执行机的执行时间的方差最小,所述目标调度方案包括各所述执行机的执行任务队列,所述执行任务队列包括至少一个所述待调度任务。
根据本申请的另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的程序,其中,在所述程序运行时控制所述计算机可读存储介质所在设备执行任意一种所述的任务调度方法。
根据本申请的另一方面,提供了一种电子设备,包括:一个或多个处理器,存储器,以及一个或多个程序,其中,所述一个或多个程序被存储在所述存储器中,并且被配置为由所述一个或多个处理器执行,所述一个或多个程序包括用于执行任意一种所述的任务调度方法。
应用本申请的技术方案,上述任务调度方法,首先获取多个待调度任务;之后获取多个用于执行待调度任务的执行机,待调度任务的个数大于执行机的个数;最后根据各待调度任务在执行机上的执行时间,对所有的待调度任务进行调度,确定目标调度方案,以使得所有的待调度任务的总执行时间最短且所有的执行机的执行时间的方差最小,目标调度方案包括各执行机的执行任务队列,执行任务队列包括至少一个待调度任务。该方法针对任务连续性调度出现的资源浪费问题,通过优化任务调度算法,增加最优解集合,从最优结果集合中筛选执行机执行总时间方差最小的结果,并且在调度过程中同步完成了结果的筛选。在保证原有最小总执行时间的前提下,解决现有技术中当任务组内执行时间差距较大会出现资源浪费,局部资源分配不合理的问题,同时不影响正常任务队列的调度结果。
附图说明
构成本申请的一部分的说明书附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1示出了根据本申请的实施例中提供的一种执行任务调度方法的移动终端的硬件结构框图;
图2示出了根据本申请的实施例提供的一种任务调度方法的流程示意图;
图3示出了根据本申请的实施例提供的一种任务空间树的结构示意图;
图4示出了根据本申请的实施例提供的一种任务调度系统的结构示意图;
图5示出了根据本申请的实施例提供的另一种任务调度方法的流程示意图;
图6示出了根据本申请的实施例提供的一种任务调度装置的结构框图。
其中,上述附图包括以下附图标记:
01、调度器;02、执行器;03、监控器;04、分析器;102、处理器;104、存储器;106、传输设备;108、输入输出设备。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为了便于描述,以下对本申请实施例涉及的部分名词或术语进行说明:
任务调度:采用合理的方式为待执行的多个任务设置先后顺序与分配资源。
执行机:为任务的执行者,具有执行某种任务所需的硬件和软件资源。本发明中所述执行机,若为分布式服务场景,则代表一个服务器;若为单机的多线程场景,代表一个线程。
正如背景技术中所介绍的,采用现有回溯算法完成任务调度时,只能保证整体最优解,但若存在“大任务”(指代执行时间明显大于其他任务)时,可能导致存在多组最优解的情况。举例说明如下:假设有3个执行机,待调度任务有5个,执行时间分别为100、18、20、12、10。通过回溯算法计算分组,结果如下:执行时间为100的任务在第一台执行机,执行时间为100;执行时间为18、20、12、10的任务在第二台执行机,执行时间为60;第三台执行机没有分配任务,执行时间为0。综上,得到最短执行时间为100。
从上述举例可以看出,由于“大任务”的执行时间超过剩余所有任务的和,“大任务”的执行时间即为本组最小执行时间,整体的分配结果是符合最佳调度的,但从第二、第三台执行机的局部结果来看,存在第三台执行机空闲的现象,导致资源分配不均,不利于任务调度的长期性发展,结合后续的任务分配并不是最优解。
为解决现有技术中当任务组内执行时间差距较大会出现资源浪费,局部资源分配不合理的问题,本申请的实施例提供了一种任务调度方法、任务调度装置、计算机可读存储介质和电子设备。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
本申请实施例中所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在移动终端上为例,图1是本发明实施例的一种任务调度方法的移动终端的硬件结构框图。如图1所示,移动终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,其中,上述移动终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述移动终端的结构造成限定。例如,移动终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中任务调度方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至移动终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。传输设备106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括移动终端的通信供应商提供的无线网络。在一个实例中,传输设备106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
在本实施例中提供了一种运行于移动终端、计算机终端或者类似的运算装置的任务调度方法,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图2是根据本申请实施例的任务调度方法的流程图。如图2所示,该方法包括以下步骤:
步骤S201,获取多个待调度任务;
具体地,各待调度任务的执行时间不同,在各待调度任务的执行时间相差较小的情况下,执行机的资源分配较为均匀,但是在其中一个待调度任务的执行时间与其他待调度任务的执行时间相差较大的情况下,执行机就会出现资源分配不均的问题。
步骤S202,获取多个用于执行上述待调度任务的执行机,上述待调度任务的个数大于上述执行机的个数;
具体地,执行机为任务的执行者,具有执行某种任务所需的硬件和软件资源。本发明中上述执行机,若为分布式服务场景,则代表一个服务器;若为单机的多线程场景,代表一个线程。并且,所有的执行机的性能相同。
步骤S203,根据各上述待调度任务在上述执行机上的执行时间,对所有的上述待调度任务进行调度,确定目标调度方案,以使得所有的上述待调度任务的总执行时间最短且所有的上述执行机的执行时间的方差最小,上述目标调度方案包括各上述执行机的执行任务队列,上述执行任务队列包括至少一个上述待调度任务。
具体地,针对上述任务列表中执行时间差距较大的情况,分配结果甚至会出现某“大任务”独占执行机,且该任务的执行时间超过了剩余任务的执行时间总和,那么分配结果中剩余任务的分配会出现随机性,有可能分散在剩余的执行机中,也有可能集中在某一个执行机,导致资源浪费。
针对上述问题,也可以通过预先分析,将“大任务”先分配执行机,剩余任务队列和执行机队列按照调度算法进行分配。但是“大任务”的鉴定标准与分配策略较为复杂,降低了调度本身的执行效率,且可能会影响总执行时间最小的前提,因此,采用本实施例提供的任务调度方法来解决现有技术中当任务组内执行时间差距较大会出现资源浪费,局部资源分配不合理的问题。
其中,根据各上述待调度任务在上述执行机上的执行时间,对所有的上述待调度任务进行调度,确定目标调度方案,包括如下步骤:
步骤S301,基于上述待调度任务和上述执行机,构建任务空间树;
其中,基于上述待调度任务和上述执行机,构建任务空间树,包括如下步骤:
步骤S3011,根据上述待调度任务,确定上述任务空间树的节点;
步骤S3012,根据上述执行机,确定上述任务空间树的连接各上述节点之间的边;其中,上述任务空间树的每条支路表征一种调度方案,上述支路上的节点表征上述待调度任务,上述支路上当前节点与下一节点连接的边表征上述当前节点对应的上述待调度任务分配执行的执行机。
具体地,这样可以遍历所有调度方案,最后选择出最优调度方案。
其中,如图3所示,针对现有的N个待执行任务与执行机数量K进行计算,每一个任务都有K个选择,解空间树也就是一颗深度为N的满K叉树。假设任务个数N=3,执行机个数K=2,解空间树如图3所示。采用深度优先遍历算法,首次遍历到叶子节点,记录当前所有执行机的最大累计执行时间为临时最优解。再次遍历时,若为某个任务安排执行机时,执行机的累计执行时间已超过当前临时最优解执行时间,则回溯开始遍历下一个分支即剪枝操作。当全部分支遍历完成时,即得到任务安排的最优解。
步骤S302,采用回溯算法对上述任务空间树进行求解,得到多个解,每个上述解表征一种初始调度方案;
步骤S303,依次执行多个上述初始调度方案,得到各上述初始调度方案的总执行时间与上述初始调度方案中各上述执行机的执行时间;
步骤S304,根据上述初始调度方案的总执行时间以及上述初始调度方案中所有的上述执行机的执行时间的方差,确定上述目标调度方案。
具体地,由于目前回溯算法得到的最佳调度方案(总执行时间最小)是一个结果集合,结果集合中必然存在所有执行机均被占用且不考虑“大任务”所在执行机时剩余执行机的执行时间分布较为均匀的一个结果,因此,采用执行机所分配的任务队列执行时间和的方差来评估任务分布的均匀性,可以得出调度算法的优化方案为在最小执行时间结果集合中筛选执行机队列执行总时间方差最小的结果。
其中,根据上述初始调度方案的总执行时间以及上述初始调度方案中所有的上述执行机的执行时间的方差,确定上述目标调度方案,包括如下步骤:
步骤S401,在当前执行的上述初始调度方案的总执行时间等于缓存执行时间的情况下,比较当前执行方差与缓存执行方差的大小,上述缓存执行时间为存储的上一个执行的上述初始调度方案的总执行时间,上述当前执行方差为当前执行的上述初始调度方案中所有的上述执行机执行分配的上述待调度任务的执行时间的方差,上述缓存执行方差为存储的上一个执行的上述初始调度方案中所有的上述执行机执行分配的上述待调度任务的执行时间的方差;
步骤S402,在上述当前执行方差小于上述缓存执行方差的情况下,将当前执行的上述初始调度方案确定为预备调度方案;
步骤S403,确定所有的上述初始调度方案是否执行完成,在所有的上述初始调度方案执行完成的情况下,将上述预备调度方案确定为上述目标调度方案。
具体地,在任务调度算法中,从最优结果集合中筛选执行机执行总时间方差最小的结果,并且在调度过程中同步完成了结果的筛选。在保证原有最小总执行时间的前提下,解决了任务队列执行时间分布差距较大导致的资源浪费问题。
其中,缓存执行时间为当前记录的最小总执行时间,即在当前执行的调度方案的总执行时间与当前记录的最小总执行时间相等的情况下,则比较两次执行时间的方差,若当前执行的调度方案的执行时间的方差更小,则更新当前记录的最小总执行时间与方差。同时,原有分支更新最小总执行时间时,同步记录方差值便于与下次结果做比较。
其中,根据上述初始调度方案的总执行时间以及上述初始调度方案中所有的上述执行机的执行时间的方差,确定上述目标调度方案,包括如下步骤:
步骤S501,在当前执行的上述初始调度方案的总执行时间小于缓存执行时间的情况下,将当前执行的上述初始调度方案确定为预备调度方案,上述缓存执行时间为存储的上一个执行的上述初始调度方案的总执行时间;
步骤S502,确定所有的上述初始调度方案是否执行完成,在所有的上述初始调度方案执行完成的情况下,将上述预备调度方案确定为上述目标调度方案。
具体地,通过增加最优解集合筛选改进现有任务调度算法中针对任务队列执行时间分布差距较大导致的资源浪费问题。
其中,缓存执行时间为当前记录的最小总执行时间,即在当前执行的调度方案的总执行时间小于缓存的执行时间的情况下,证明当前执行的调度方案为更优的调度方案,因此,此时无需再比较方差,直接将当前执行的调度方案确定为目标调度方案。
其中,上述方法还包括:在当前执行的上述初始调度方案的总执行时间大于缓存执行时间的情况下,继续执行下一个上述初始调度方案,上述缓存执行时间为存储的上一个执行的上述初始调度方案的总执行时间。
具体地,在任务调度算法中,从最优结果集合中筛选执行机执行总时间方差最小的结果,并且在调度过程中同步完成了结果的筛选。在保证原有最小总执行时间的前提下,解决了任务队列执行时间分布差距较大导致的资源浪费问题。
其中,缓存执行时间为当前记录的最小总执行时间,即在当前执行的调度方案的总执行时间大于缓存的执行时间的情况下,证明当前执行的调度方案为更优的调度方案,因此,此时无需再比较方差,直接将当前执行的调度方案确定为目标调度方案。
其中,在根据各上述待调度任务在上述执行机上的执行时间,对所有的上述待调度任务进行调度,确定目标调度方案之后,上述方法还包括如下步骤:
步骤S601,在目标执行机还未执行完成上述待调度任务且非目标执行机均已执行完成对应的上述待调度任务的情况下,确定上述目标执行机的剩余执行时间;
步骤S602,在上述目标执行机的剩余执行时间大于执行时间阈值的情况下,将上述目标执行机的剩余执行时间保留至下一次任务调度过程中进行调度。
具体地,除了“大任务”所在执行机以外,其他的执行机均已执行完成,如果等待“大任务”执行结束或剩余执行机单独参加下一轮任务的调度同样会存在资源浪费。因此当剩余执行机均已执行完成后,可将大任务剩余的执行时间作为单独的任务参与到下一轮的任务集合中,所有的执行机共同参与任务分配。保证了任务连续调度过程中的调度合理性。
本申请的上述任务调度方法,首先获取多个待调度任务;之后获取多个用于执行待调度任务的执行机,待调度任务的个数大于执行机的个数;最后根据各待调度任务在执行机上的执行时间,对所有的待调度任务进行调度,确定目标调度方案,以使得所有的待调度任务的总执行时间最短且所有的执行机的执行时间的方差最小,目标调度方案包括各执行机的执行任务队列,执行任务队列包括至少一个待调度任务。该方法针对任务连续性调度出现的资源浪费问题,通过优化任务调度算法,增加最优解集合,从最优结果集合中筛选执行机执行总时间方差最小的结果,并且在调度过程中同步完成了结果的筛选。在保证原有最小总执行时间的前提下,解决现有技术中当任务组内执行时间差距较大会出现资源浪费,局部资源分配不合理的问题,同时不影响正常任务队列的调度结果。
原有调度算法当所有任务分配完成后,计算当前执行机队列所有执行机执行总时间的最大值,作为当前分配结果的总执行时间,若比当前记录的最小总执行时间小,则更新记录。优化后的调度算法,增加一个分支判断,如表1所示,采用java语言分别实现优化前与优化后的算法,采用多组数据进行验证:假设有3个性能相同的执行机,设置多组正常任务队列,与多组本发明上述特点的任务队列,分别采用优化前后的算法进行调度。对比算法优前后的调度结果,部分测试数据如表1所示,当存在五个待调度任务,且五个待调度任务的执行时间相差不大的情况下,优化前的调度方案和优化后的调度方案相差不大,但是当五个待调度任务中有一个的执行时间远大于其他待调度任务的情况下,可以看到优化前的调度方案中有一个执行机没有分配到任务,而优化后的方案每个执行机都分配到了对应的任务,这样更有利于任务连续调度过程中的调度合理性。
表1、任务调度方法的效果示意表
以表1为例,分别有M1、M2和M3三个执行机,第一个任务队列中优化前分配结果的执行时间方差为105、84与0与41三个执行时间的方差,优化后分配结果的执行时间方差为105、43与41三个执行时间的方差,明显得到优化后分配结果的执行时间方差小于优化前分配结果的执行时间方差。
即由表1可以看出当任务队列中存在某个执行时间明显长于其他任务时,优化后的调度结果最小执行时间与优化前相同,但M2、M3执行机的分配更合理,不存在资源浪费的情况。当任务队列中执行时间分布较为均匀时,调度结果相同,未对原有调度产生影响。测试效果符合预期。
图4为一个任务调度系统的结构示意图,如图4所示,任务调度系统包括调度器01、执行器02、监控器03和分析器04。其中,调度器用于执行上述任务调度方法,接收任务集合,将任务集合根据执行机数量分组,得到任务集合整体执行时间最优解集合,并从最优解集合中筛选任务分布最为均衡的一个,即执行机利用率最高。执行器用于按照调度器中的计算结果,为任务集合设置队列并分配执行机执行。监控器用于监控执行器中所有执行机的任务队列执行情况,判断下一次调度算法触发时机。可在监控器中根据系统实际情况配置触发条件,例如:存在50%以上的机器空闲,待分组任务数量阈值等。分析器用于在监控器发出重新进行任务调度指令后,分析器负责分析待调度任务集合与现有队列中执行中及待执行的任务,进行任务集合重整。重整包括待执行任务与待调度任务集合合并,执行中任务根据任务的剩余执行时间判断是否参与下一次任务调度。可设定阈值灵活调整,例如设定剩余执行时间的阈值为30s,那么执行中任务的剩余执行时间大于30s则将该任务的剩余执行时间作为一个独立的虚拟任务参与下一次任务调度。任务集合的重整操作保证了任务调度的连续性。
通过调度器、执行器、分析器、监控器架构,灵活控制调度触发策略,并将执行时间过长的任务剩余时间与新任务一起参与任务调度,补充了算法优化无法解决的任务连续性调度导致的资源浪费情况,提供了该优化算法的落地方案。
为了使得本领域技术人员能够更加清楚地了解本申请的技术方案,以下将结合具体的实施例对本申请的任务调度方法的实现过程进行详细说明。
本实施例涉及一种具体的任务调度方法,如图5所示,包括如下步骤:
步骤S1:遍历任务队列分配执行机,判断所有任务是否均分配完成,在所有任务均分配完成的情况下,确定当前任务总执行时间是否大于缓存的最小的总执行时间,在当前任务总执行时间大于缓存的最小的总执行时间的情况下,执行步骤S2;
步骤S2:确定结果树是否遍历完成,在结果树遍历完成的情况下,将缓存的最小的总执行时间对应的调度方案确定为最优调度结果,在结果树未遍历完成的情况下,继续遍历结果树其他分支;
步骤S3:在当前任务总执行时间不大于缓存的最小的总执行时间的情况下,确定当前任务总执行时间是否等于缓存的最小的总执行时间,在当前任务总执行时间不等于缓存的最小的总执行时间的情况下,将当前执行的调度方案与执行时间方差作为临时最优调度方案和最小方差对缓存进行更新,之后执行步骤S2;
步骤S4:在当前任务总执行时间等于缓存的最小的总执行时间的情况下,计算当前任务执行时间的方差,并与缓存的最小的总执行时间的执行时间方差进行比较,
步骤S5:在计算的方差小于缓存的方差的情况下,将当前执行的调度方案与执行时间方差作为临时最优调度方案和最小方差对缓存进行更新,之后执行步骤S2;在计算的方差大于或者等于缓存的方差的情况下,直接执行步骤S2。
本申请实施例还提供了一种任务调度装置,需要说明的是,本申请实施例的任务调度装置可以用于执行本申请实施例所提供的用于任务调度方法。该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
以下对本申请实施例提供的任务调度装置进行介绍。
图6是根据本申请实施例的任务调度装置的示意图。如图6所示,该装置包括第一获取单元10、第二获取单元20和确定单元30,第一获取单元10用于获取多个待调度任务;第二获取单元20用于获取多个用于执行上述待调度任务的执行机,上述待调度任务的个数大于上述执行机的个数;确定单元30用于根据各上述待调度任务在上述执行机上的执行时间,对所有的上述待调度任务进行调度,确定目标调度方案,以使得所有的上述待调度任务的总执行时间最短且所有的上述执行机的执行时间的方差最小,上述目标调度方案包括各上述执行机的执行任务队列,上述执行任务队列包括至少一个上述待调度任务。
本申请的上述任务调度装置,包括第一获取单元、第二获取单元和确定单元,第一获取单元用于获取多个待调度任务;第二获取单元用于获取多个用于执行待调度任务的执行机,待调度任务的个数大于执行机的个数;确定单元用于根据各待调度任务在执行机上的执行时间,对所有的待调度任务进行调度,确定目标调度方案,以使得所有的待调度任务的总执行时间最短且所有的执行机的执行时间的方差最小,目标调度方案包括各执行机的执行任务队列,执行任务队列包括至少一个待调度任务。该装置针对任务连续性调度出现的资源浪费问题,通过优化任务调度算法,增加最优解集合,从最优结果集合中筛选执行机执行总时间方差最小的结果,并且在调度过程中同步完成了结果的筛选。在保证原有最小总执行时间的前提下,解决现有技术中当任务组内执行时间差距较大会出现资源浪费,局部资源分配不合理的问题,同时不影响正常任务队列的调度结果。
一些实例中,确定单元包括构建模块、求解模块、第一执行模块和第一确定模块,构建模块用于基于上述待调度任务和上述执行机,构建任务空间树;求解模块用于采用回溯算法对上述任务空间树进行求解,得到多个解,每个上述解表征一种初始调度方案;第一执行模块用于依次执行多个上述初始调度方案,得到各上述初始调度方案的总执行时间与上述初始调度方案中各上述执行机的执行时间;第一确定模块用于根据上述初始调度方案的总执行时间以及上述初始调度方案中所有的上述执行机的执行时间的方差,确定上述目标调度方案。可以得出调度算法的优化方案为在最小执行时间结果集合中筛选执行机队列执行总时间方差最小的结果。
一些实例中,构建模块包括第二确定模块和第三确定模块,第一确定模块用于根据上述待调度任务,确定上述任务空间树的节点;第二确定模块用于根据上述执行机,确定上述任务空间树的连接各上述节点之间的边;其中,上述任务空间树的每条支路表征一种调度方案,上述支路上的节点表征上述待调度任务,上述支路上当前节点与下一节点连接的边表征上述当前节点对应的上述待调度任务分配执行的执行机。这样可以遍历所有调度方案,最后选择出最优调度方案。
一些实例中,第一确定模块包括第一比较模块、第一确定子模块、第二确定子模块,第一比较模块用于在当前执行的上述初始调度方案的总执行时间等于缓存执行时间的情况下,比较当前执行方差与缓存执行方差的大小,上述缓存执行时间为存储的上一个执行的上述初始调度方案的总执行时间,上述当前执行方差为当前执行的上述初始调度方案中所有的上述执行机执行分配的上述待调度任务的执行时间的方差,上述缓存执行方差为存储的上一个执行的上述初始调度方案中所有的上述执行机执行分配的上述待调度任务的执行时间的方差;第一确定子模块用于在上述当前执行方差小于上述缓存执行方差的情况下,将当前执行的上述初始调度方案确定为预备调度方案;第二确定子模块用于确定所有的上述初始调度方案是否执行完成,在所有的上述初始调度方案执行完成的情况下,将上述预备调度方案确定为上述目标调度方案。在保证原有最小总执行时间的前提下,解决了任务队列执行时间分布差距较大导致的资源浪费问题。
本实施例中,第一确定模块包括第三确定子模块和第四确定子模块,第三确定子模块用于在当前执行的上述初始调度方案的总执行时间小于缓存执行时间的情况下,将当前执行的上述初始调度方案确定为预备调度方案,上述缓存执行时间为存储的上一个执行的上述初始调度方案的总执行时间;第四确定子模块用于确定所有的上述初始调度方案是否执行完成,在所有的上述初始调度方案执行完成的情况下,将上述预备调度方案确定为上述目标调度方案。通过增加最优解集合筛选改进现有任务调度算法中针对任务队列执行时间分布差距较大导致的资源浪费问题。
一种可选的方案,上述装置还包括第二执行模块,用于在当前执行的上述初始调度方案的总执行时间大于缓存执行时间的情况下,继续执行下一个上述初始调度方案,上述缓存执行时间为存储的上一个执行的上述初始调度方案的总执行时间。在保证原有最小总执行时间的前提下,解决了任务队列执行时间分布差距较大导致的资源浪费问题。
作为一种可选的方案,上述装置还包括第四确定模块和处理模块,第四确定模块用于在根据各上述待调度任务在上述执行机上的执行时间,对所有的上述待调度任务进行调度,确定目标调度方案之后,在目标执行机还未执行完成上述待调度任务且非目标执行机均已执行完成对应的上述待调度任务的情况下,确定上述目标执行机的剩余执行时间;处理模块用于在上述目标执行机的剩余执行时间大于执行时间阈值的情况下,将上述目标执行机的剩余执行时间保留至下一次任务调度过程中进行调度。保证了任务连续调度过程中的调度合理性。
上述任务调度装置包括处理器和存储器,上述第一获取单元等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来解决现有技术中当任务组内执行时间差距较大会出现资源浪费,局部资源分配不合理的问题。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
本发明实施例提供了一种计算机可读存储介质,上述计算机可读存储介质包括存储的程序,其中,在上述程序运行时控制上述计算机可读存储介质所在设备执行上述任务调度方法。
具体地,任务调度方法包括:
步骤S201,获取多个待调度任务;
具体地,各待调度任务的执行时间不同,在各待调度任务的执行时间相差较小的情况下,执行机的资源分配较为均匀,但是在其中一个待调度任务的执行时间与其他待调度任务的执行时间相差较大的情况下,执行机就会出现资源分配不均的问题。
步骤S202,获取多个用于执行上述待调度任务的执行机,上述待调度任务的个数大于上述执行机的个数;
具体地,执行机为任务的执行者,具有执行某种任务所需的硬件和软件资源。本发明中上述执行机,若为分布式服务场景,则代表一个服务器;若为单机的多线程场景,代表一个线程。并且,所有的执行机的性能相同。
步骤S203,根据各上述待调度任务在上述执行机上的执行时间,对所有的上述待调度任务进行调度,确定目标调度方案,以使得所有的上述待调度任务的总执行时间最短且所有的上述执行机的执行时间的方差最小,上述目标调度方案包括各上述执行机的执行任务队列,上述执行任务队列包括至少一个上述待调度任务。
具体地,针对上述任务列表中执行时间差距较大的情况,分配结果甚至会出现某“大任务”独占执行机,且该任务的执行时间超过了剩余任务的执行时间总和,那么分配结果中剩余任务的分配会出现随机性,有可能分散在剩余的执行机中,也有可能集中在某一个执行机,导致资源浪费。
可选地,根据各上述待调度任务在上述执行机上的执行时间,对所有的上述待调度任务进行调度,确定目标调度方案,包括:基于上述待调度任务和上述执行机,构建任务空间树;采用回溯算法对上述任务空间树进行求解,得到多个解,每个上述解表征一种初始调度方案;依次执行多个上述初始调度方案,得到各上述初始调度方案的总执行时间与上述初始调度方案中各上述执行机的执行时间;根据上述初始调度方案的总执行时间以及上述初始调度方案中所有的上述执行机的执行时间的方差,确定上述目标调度方案。
可选地,基于上述待调度任务和上述执行机,构建任务空间树,包括:根据上述待调度任务,确定上述任务空间树的节点;根据上述执行机,确定上述任务空间树的连接各上述节点之间的边;其中,上述任务空间树的每条支路表征一种调度方案,上述支路上的节点表征上述待调度任务,上述支路上当前节点与下一节点连接的边表征上述当前节点对应的上述待调度任务分配执行的执行机。
可选地,根据上述初始调度方案的总执行时间以及上述初始调度方案中所有的上述执行机的执行时间的方差,确定上述目标调度方案,包括:在当前执行的上述初始调度方案的总执行时间等于缓存执行时间的情况下,比较当前执行方差与缓存执行方差的大小,上述缓存执行时间为存储的上一个执行的上述初始调度方案的总执行时间,上述当前执行方差为当前执行的上述初始调度方案中所有的上述执行机执行分配的上述待调度任务的执行时间的方差,上述缓存执行方差为存储的上一个执行的上述初始调度方案中所有的上述执行机执行分配的上述待调度任务的执行时间的方差;在上述当前执行方差小于上述缓存执行方差的情况下,将当前执行的上述初始调度方案确定为预备调度方案;确定所有的上述初始调度方案是否执行完成,在所有的上述初始调度方案执行完成的情况下,将上述预备调度方案确定为上述目标调度方案。
可选地,根据上述初始调度方案的总执行时间以及上述初始调度方案中所有的上述执行机的执行时间的方差,确定上述目标调度方案,包括:在当前执行的上述初始调度方案的总执行时间小于缓存执行时间的情况下,将当前执行的上述初始调度方案确定为预备调度方案,上述缓存执行时间为存储的上一个执行的上述初始调度方案的总执行时间;确定所有的上述初始调度方案是否执行完成,在所有的上述初始调度方案执行完成的情况下,将上述预备调度方案确定为上述目标调度方案。
可选地,上述方法还包括:在当前执行的上述初始调度方案的总执行时间大于缓存执行时间的情况下,继续执行下一个上述初始调度方案,上述缓存执行时间为存储的上一个执行的上述初始调度方案的总执行时间。
可选地,在根据各上述待调度任务在上述执行机上的执行时间,对所有的上述待调度任务进行调度,确定目标调度方案之后,上述方法还包括:在目标执行机还未执行完成上述待调度任务且非目标执行机均已执行完成对应的上述待调度任务的情况下,确定上述目标执行机的剩余执行时间;在上述目标执行机的剩余执行时间大于执行时间阈值的情况下,将上述目标执行机的剩余执行时间保留至下一次任务调度过程中进行调度。
本发明实施例提供了一种处理器,上述处理器用于运行程序,其中,上述程序运行时执行上述任务调度方法。
具体地,任务调度方法包括:
步骤S201,获取多个待调度任务;
具体地,各待调度任务的执行时间不同,在各待调度任务的执行时间相差较小的情况下,执行机的资源分配较为均匀,但是在其中一个待调度任务的执行时间与其他待调度任务的执行时间相差较大的情况下,执行机就会出现资源分配不均的问题。
步骤S202,获取多个用于执行上述待调度任务的执行机,上述待调度任务的个数大于上述执行机的个数;
具体地,执行机为任务的执行者,具有执行某种任务所需的硬件和软件资源。本发明中上述执行机,若为分布式服务场景,则代表一个服务器;若为单机的多线程场景,代表一个线程。并且,所有的执行机的性能相同。
步骤S203,根据各上述待调度任务在上述执行机上的执行时间,对所有的上述待调度任务进行调度,确定目标调度方案,以使得所有的上述待调度任务的总执行时间最短且所有的上述执行机的执行时间的方差最小,上述目标调度方案包括各上述执行机的执行任务队列,上述执行任务队列包括至少一个上述待调度任务。
具体地,针对上述任务列表中执行时间差距较大的情况,分配结果甚至会出现某“大任务”独占执行机,且该任务的执行时间超过了剩余任务的执行时间总和,那么分配结果中剩余任务的分配会出现随机性,有可能分散在剩余的执行机中,也有可能集中在某一个执行机,导致资源浪费。
可选地,根据各上述待调度任务在上述执行机上的执行时间,对所有的上述待调度任务进行调度,确定目标调度方案,包括:基于上述待调度任务和上述执行机,构建任务空间树;采用回溯算法对上述任务空间树进行求解,得到多个解,每个上述解表征一种初始调度方案;依次执行多个上述初始调度方案,得到各上述初始调度方案的总执行时间与上述初始调度方案中各上述执行机的执行时间;根据上述初始调度方案的总执行时间以及上述初始调度方案中所有的上述执行机的执行时间的方差,确定上述目标调度方案。
可选地,基于上述待调度任务和上述执行机,构建任务空间树,包括:根据上述待调度任务,确定上述任务空间树的节点;根据上述执行机,确定上述任务空间树的连接各上述节点之间的边;其中,上述任务空间树的每条支路表征一种调度方案,上述支路上的节点表征上述待调度任务,上述支路上当前节点与下一节点连接的边表征上述当前节点对应的上述待调度任务分配执行的执行机。
可选地,根据上述初始调度方案的总执行时间以及上述初始调度方案中所有的上述执行机的执行时间的方差,确定上述目标调度方案,包括:在当前执行的上述初始调度方案的总执行时间等于缓存执行时间的情况下,比较当前执行方差与缓存执行方差的大小,上述缓存执行时间为存储的上一个执行的上述初始调度方案的总执行时间,上述当前执行方差为当前执行的上述初始调度方案中所有的上述执行机执行分配的上述待调度任务的执行时间的方差,上述缓存执行方差为存储的上一个执行的上述初始调度方案中所有的上述执行机执行分配的上述待调度任务的执行时间的方差;在上述当前执行方差小于上述缓存执行方差的情况下,将当前执行的上述初始调度方案确定为预备调度方案;确定所有的上述初始调度方案是否执行完成,在所有的上述初始调度方案执行完成的情况下,将上述预备调度方案确定为上述目标调度方案。
可选地,根据上述初始调度方案的总执行时间以及上述初始调度方案中所有的上述执行机的执行时间的方差,确定上述目标调度方案,包括:在当前执行的上述初始调度方案的总执行时间小于缓存执行时间的情况下,将当前执行的上述初始调度方案确定为预备调度方案,上述缓存执行时间为存储的上一个执行的上述初始调度方案的总执行时间;确定所有的上述初始调度方案是否执行完成,在所有的上述初始调度方案执行完成的情况下,将上述预备调度方案确定为上述目标调度方案。
可选地,上述方法还包括:在当前执行的上述初始调度方案的总执行时间大于缓存执行时间的情况下,继续执行下一个上述初始调度方案,上述缓存执行时间为存储的上一个执行的上述初始调度方案的总执行时间。
可选地,在根据各上述待调度任务在上述执行机上的执行时间,对所有的上述待调度任务进行调度,确定目标调度方案之后,上述方法还包括:在目标执行机还未执行完成上述待调度任务且非目标执行机均已执行完成对应的上述待调度任务的情况下,确定上述目标执行机的剩余执行时间;在上述目标执行机的剩余执行时间大于执行时间阈值的情况下,将上述目标执行机的剩余执行时间保留至下一次任务调度过程中进行调度。
本发明实施例提供了一种设备,设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现至少以下步骤:
步骤S201,获取多个待调度任务;
步骤S202,获取多个用于执行上述待调度任务的执行机,上述待调度任务的个数大于上述执行机的个数;
步骤S203,根据各上述待调度任务在上述执行机上的执行时间,对所有的上述待调度任务进行调度,确定目标调度方案,以使得所有的上述待调度任务的总执行时间最短且所有的上述执行机的执行时间的方差最小,上述目标调度方案包括各上述执行机的执行任务队列,上述执行任务队列包括至少一个上述待调度任务。
本文中的设备可以是服务器、PC、PAD、手机等。
可选地,根据各上述待调度任务在上述执行机上的执行时间,对所有的上述待调度任务进行调度,确定目标调度方案,包括:基于上述待调度任务和上述执行机,构建任务空间树;采用回溯算法对上述任务空间树进行求解,得到多个解,每个上述解表征一种初始调度方案;依次执行多个上述初始调度方案,得到各上述初始调度方案的总执行时间与上述初始调度方案中各上述执行机的执行时间;根据上述初始调度方案的总执行时间以及上述初始调度方案中所有的上述执行机的执行时间的方差,确定上述目标调度方案。
可选地,基于上述待调度任务和上述执行机,构建任务空间树,包括:根据上述待调度任务,确定上述任务空间树的节点;根据上述执行机,确定上述任务空间树的连接各上述节点之间的边;其中,上述任务空间树的每条支路表征一种调度方案,上述支路上的节点表征上述待调度任务,上述支路上当前节点与下一节点连接的边表征上述当前节点对应的上述待调度任务分配执行的执行机。
可选地,根据上述初始调度方案的总执行时间以及上述初始调度方案中所有的上述执行机的执行时间的方差,确定上述目标调度方案,包括:在当前执行的上述初始调度方案的总执行时间等于缓存执行时间的情况下,比较当前执行方差与缓存执行方差的大小,上述缓存执行时间为存储的上一个执行的上述初始调度方案的总执行时间,上述当前执行方差为当前执行的上述初始调度方案中所有的上述执行机执行分配的上述待调度任务的执行时间的方差,上述缓存执行方差为存储的上一个执行的上述初始调度方案中所有的上述执行机执行分配的上述待调度任务的执行时间的方差;在上述当前执行方差小于上述缓存执行方差的情况下,将当前执行的上述初始调度方案确定为预备调度方案;确定所有的上述初始调度方案是否执行完成,在所有的上述初始调度方案执行完成的情况下,将上述预备调度方案确定为上述目标调度方案。
可选地,根据上述初始调度方案的总执行时间以及上述初始调度方案中所有的上述执行机的执行时间的方差,确定上述目标调度方案,包括:在当前执行的上述初始调度方案的总执行时间小于缓存执行时间的情况下,将当前执行的上述初始调度方案确定为预备调度方案,上述缓存执行时间为存储的上一个执行的上述初始调度方案的总执行时间;确定所有的上述初始调度方案是否执行完成,在所有的上述初始调度方案执行完成的情况下,将上述预备调度方案确定为上述目标调度方案。
可选地,上述方法还包括:在当前执行的上述初始调度方案的总执行时间大于缓存执行时间的情况下,继续执行下一个上述初始调度方案,上述缓存执行时间为存储的上一个执行的上述初始调度方案的总执行时间。
可选地,在根据各上述待调度任务在上述执行机上的执行时间,对所有的上述待调度任务进行调度,确定目标调度方案之后,上述方法还包括:在目标执行机还未执行完成上述待调度任务且非目标执行机均已执行完成对应的上述待调度任务的情况下,确定上述目标执行机的剩余执行时间;在上述目标执行机的剩余执行时间大于执行时间阈值的情况下,将上述目标执行机的剩余执行时间保留至下一次任务调度过程中进行调度。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有至少如下方法步骤的程序:
步骤S201,获取多个待调度任务;
步骤S202,获取多个用于执行上述待调度任务的执行机,上述待调度任务的个数大于上述执行机的个数;
步骤S203,根据各上述待调度任务在上述执行机上的执行时间,对所有的上述待调度任务进行调度,确定目标调度方案,以使得所有的上述待调度任务的总执行时间最短且所有的上述执行机的执行时间的方差最小,上述目标调度方案包括各上述执行机的执行任务队列,上述执行任务队列包括至少一个上述待调度任务。
可选地,根据各上述待调度任务在上述执行机上的执行时间,对所有的上述待调度任务进行调度,确定目标调度方案,包括:基于上述待调度任务和上述执行机,构建任务空间树;采用回溯算法对上述任务空间树进行求解,得到多个解,每个上述解表征一种初始调度方案;依次执行多个上述初始调度方案,得到各上述初始调度方案的总执行时间与上述初始调度方案中各上述执行机的执行时间;根据上述初始调度方案的总执行时间以及上述初始调度方案中所有的上述执行机的执行时间的方差,确定上述目标调度方案。
可选地,基于上述待调度任务和上述执行机,构建任务空间树,包括:根据上述待调度任务,确定上述任务空间树的节点;根据上述执行机,确定上述任务空间树的连接各上述节点之间的边;其中,上述任务空间树的每条支路表征一种调度方案,上述支路上的节点表征上述待调度任务,上述支路上当前节点与下一节点连接的边表征上述当前节点对应的上述待调度任务分配执行的执行机。
可选地,根据上述初始调度方案的总执行时间以及上述初始调度方案中所有的上述执行机的执行时间的方差,确定上述目标调度方案,包括:在当前执行的上述初始调度方案的总执行时间等于缓存执行时间的情况下,比较当前执行方差与缓存执行方差的大小,上述缓存执行时间为存储的上一个执行的上述初始调度方案的总执行时间,上述当前执行方差为当前执行的上述初始调度方案中所有的上述执行机执行分配的上述待调度任务的执行时间的方差,上述缓存执行方差为存储的上一个执行的上述初始调度方案中所有的上述执行机执行分配的上述待调度任务的执行时间的方差;在上述当前执行方差小于上述缓存执行方差的情况下,将当前执行的上述初始调度方案确定为预备调度方案;确定所有的上述初始调度方案是否执行完成,在所有的上述初始调度方案执行完成的情况下,将上述预备调度方案确定为上述目标调度方案。
可选地,根据上述初始调度方案的总执行时间以及上述初始调度方案中所有的上述执行机的执行时间的方差,确定上述目标调度方案,包括:在当前执行的上述初始调度方案的总执行时间小于缓存执行时间的情况下,将当前执行的上述初始调度方案确定为预备调度方案,上述缓存执行时间为存储的上一个执行的上述初始调度方案的总执行时间;确定所有的上述初始调度方案是否执行完成,在所有的上述初始调度方案执行完成的情况下,将上述预备调度方案确定为上述目标调度方案。
可选地,上述方法还包括:在当前执行的上述初始调度方案的总执行时间大于缓存执行时间的情况下,继续执行下一个上述初始调度方案,上述缓存执行时间为存储的上一个执行的上述初始调度方案的总执行时间。
可选地,在根据各上述待调度任务在上述执行机上的执行时间,对所有的上述待调度任务进行调度,确定目标调度方案之后,上述方法还包括:在目标执行机还未执行完成上述待调度任务且非目标执行机均已执行完成对应的上述待调度任务的情况下,确定上述目标执行机的剩余执行时间;在上述目标执行机的剩余执行时间大于执行时间阈值的情况下,将上述目标执行机的剩余执行时间保留至下一次任务调度过程中进行调度。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
从以上的描述中,可以看出,本申请上述的实施例实现了如下技术效果:
1)、本申请的上述任务调度方法,首先获取多个待调度任务;之后获取多个用于执行待调度任务的执行机,待调度任务的个数大于执行机的个数;最后根据各待调度任务在执行机上的执行时间,对所有的待调度任务进行调度,确定目标调度方案,以使得所有的待调度任务的总执行时间最短且所有的执行机的执行时间的方差最小,目标调度方案包括各执行机的执行任务队列,执行任务队列包括至少一个待调度任务。该方法针对任务连续性调度出现的资源浪费问题,通过优化任务调度算法,增加最优解集合,从最优结果集合中筛选执行机执行总时间方差最小的结果,并且在调度过程中同步完成了结果的筛选。在保证原有最小总执行时间的前提下,解决现有技术中当任务组内执行时间差距较大会出现资源浪费,局部资源分配不合理的问题,同时不影响正常任务队列的调度结果。
2)、本申请的上述任务调度装置,包括第一获取单元、第二获取单元和确定单元,第一获取单元用于获取多个待调度任务;第二获取单元用于获取多个用于执行待调度任务的执行机,待调度任务的个数大于执行机的个数;确定单元用于根据各待调度任务在执行机上的执行时间,对所有的待调度任务进行调度,确定目标调度方案,以使得所有的待调度任务的总执行时间最短且所有的执行机的执行时间的方差最小,目标调度方案包括各执行机的执行任务队列,执行任务队列包括至少一个待调度任务。该装置针对任务连续性调度出现的资源浪费问题,通过优化任务调度算法,增加最优解集合,从最优结果集合中筛选执行机执行总时间方差最小的结果,并且在调度过程中同步完成了结果的筛选。在保证原有最小总执行时间的前提下,解决现有技术中当任务组内执行时间差距较大会出现资源浪费,局部资源分配不合理的问题,同时不影响正常任务队列的调度结果。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种任务调度方法,其特征在于,包括:
获取多个待调度任务;
获取多个用于执行所述待调度任务的执行机,所述待调度任务的个数大于所述执行机的个数;
根据各所述待调度任务在所述执行机上的执行时间,对所有的所述待调度任务进行调度,确定目标调度方案,以使得所有的所述待调度任务的总执行时间最短且所有的所述执行机的执行时间的方差最小,所述目标调度方案包括各所述执行机的执行任务队列,所述执行任务队列包括至少一个所述待调度任务。
2.根据权利要求1所述的方法,其特征在于,根据各所述待调度任务在所述执行机上的执行时间,对所有的所述待调度任务进行调度,确定目标调度方案,包括:
基于所述待调度任务和所述执行机,构建任务空间树;
采用回溯算法对所述任务空间树进行求解,得到多个解,每个所述解表征一种初始调度方案;
依次执行多个所述初始调度方案,得到各所述初始调度方案的总执行时间与所述初始调度方案中各所述执行机的执行时间;
根据所述初始调度方案的总执行时间以及所述初始调度方案中所有的所述执行机的执行时间的方差,确定所述目标调度方案。
3.根据权利要求2所述的方法,其特征在于,基于所述待调度任务和所述执行机,构建任务空间树,包括:
根据所述待调度任务,确定所述任务空间树的节点;
根据所述执行机,确定所述任务空间树的连接各所述节点之间的边;
其中,所述任务空间树的每条支路表征一种调度方案,所述支路上的节点表征所述待调度任务,所述支路上当前节点与下一节点连接的边表征所述当前节点对应的所述待调度任务分配执行的执行机。
4.根据权利要求2所述的方法,其特征在于,根据所述初始调度方案的总执行时间以及所述初始调度方案中所有的所述执行机的执行时间的方差,确定所述目标调度方案,包括:
在当前执行的所述初始调度方案的总执行时间等于缓存执行时间的情况下,比较当前执行方差与缓存执行方差的大小,所述缓存执行时间为存储的上一个执行的所述初始调度方案的总执行时间,所述当前执行方差为当前执行的所述初始调度方案中所有的所述执行机执行分配的所述待调度任务的执行时间的方差,所述缓存执行方差为存储的上一个执行的所述初始调度方案中所有的所述执行机执行分配的所述待调度任务的执行时间的方差;
在所述当前执行方差小于所述缓存执行方差的情况下,将当前执行的所述初始调度方案确定为预备调度方案;
确定所有的所述初始调度方案是否执行完成,在所有的所述初始调度方案执行完成的情况下,将所述预备调度方案确定为所述目标调度方案。
5.根据权利要求2所述的方法,其特征在于,根据所述初始调度方案的总执行时间以及所述初始调度方案中所有的所述执行机的执行时间的方差,确定所述目标调度方案,包括:
在当前执行的所述初始调度方案的总执行时间小于缓存执行时间的情况下,将当前执行的所述初始调度方案确定为预备调度方案,所述缓存执行时间为存储的上一个执行的所述初始调度方案的总执行时间;
确定所有的所述初始调度方案是否执行完成,在所有的所述初始调度方案执行完成的情况下,将所述预备调度方案确定为所述目标调度方案。
6.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在当前执行的所述初始调度方案的总执行时间大于缓存执行时间的情况下,继续执行下一个所述初始调度方案,所述缓存执行时间为存储的上一个执行的所述初始调度方案的总执行时间。
7.根据权利要求1所述的方法,其特征在于,在根据各所述待调度任务在所述执行机上的执行时间,对所有的所述待调度任务进行调度,确定目标调度方案之后,所述方法还包括:
在目标执行机还未执行完成所述待调度任务且非目标执行机均已执行完成对应的所述待调度任务的情况下,确定所述目标执行机的剩余执行时间;
在所述目标执行机的剩余执行时间大于执行时间阈值的情况下,将所述目标执行机的剩余执行时间保留至下一次任务调度过程中进行调度。
8.一种任务调度装置,其特征在于,包括:
第一获取单元,用于获取多个待调度任务;
第二获取单元,用于获取多个用于执行所述待调度任务的执行机,所述待调度任务的个数大于所述执行机的个数;
确定单元,用于根据各所述待调度任务在所述执行机上的执行时间,对所有的所述待调度任务进行调度,确定目标调度方案,以使得所有的所述待调度任务的总执行时间最短且所有的所述执行机的执行时间的方差最小,所述目标调度方案包括各所述执行机的执行任务队列,所述执行任务队列包括至少一个所述待调度任务。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的程序,其中,在所述程序运行时控制所述计算机可读存储介质所在设备执行权利要求1至7中任意一项所述的任务调度方法。
10.一种电子设备,其特征在于,包括:一个或多个处理器,存储器,以及一个或多个程序,其中,所述一个或多个程序被存储在所述存储器中,并且被配置为由所述一个或多个处理器执行,所述一个或多个程序包括用于执行权利要求1至7中任意一项所述的任务调度方法。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202411327608.5A CN119166310A (zh) | 2024-09-23 | 2024-09-23 | 任务调度方法、任务调度装置、存储介质和电子设备 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202411327608.5A CN119166310A (zh) | 2024-09-23 | 2024-09-23 | 任务调度方法、任务调度装置、存储介质和电子设备 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| CN119166310A true CN119166310A (zh) | 2024-12-20 |
Family
ID=93883517
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202411327608.5A Pending CN119166310A (zh) | 2024-09-23 | 2024-09-23 | 任务调度方法、任务调度装置、存储介质和电子设备 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN119166310A (zh) |
-
2024
- 2024-09-23 CN CN202411327608.5A patent/CN119166310A/zh active Pending
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN112162865B (zh) | 服务器的调度方法、装置和服务器 | |
| JP6490913B2 (ja) | グリッドコンピューティングシステムの遊休リソースによるタスク実行 | |
| CN113918270B (zh) | 基于Kubernetes的云资源调度方法及系统 | |
| CN110221920B (zh) | 部署方法、装置、存储介质及系统 | |
| CN112052068A (zh) | 一种Kubernetes容器平台CPU绑核的方法与装置 | |
| CN109194584A (zh) | 一种流量监控方法、装置、计算机设备及存储介质 | |
| CN108268318A (zh) | 一种分布式系统任务分配的方法和装置 | |
| CN103414761A (zh) | 一种基于Hadoop架构的移动终端云资源调度方法 | |
| WO2019056771A1 (zh) | 分布式存储系统升级管理的方法、装置及分布式存储系统 | |
| CN111092921B (zh) | 数据采集方法、装置及存储介质 | |
| CN114625500B (zh) | 云环境下拓扑感知的微服务应用调度的方法及应用 | |
| CN115269193A (zh) | 自动化测试中实现分布式负载均衡的方法及装置 | |
| Dimopoulos et al. | Justice: A deadline-aware, fair-share resource allocator for implementing multi-analytics | |
| CN116320013B (zh) | 一种面向MLaaS业务的在网计算资源调度方法和系统 | |
| WO2024120205A1 (zh) | 一种应用性能优化方法、装置、电子设备及存储介质 | |
| CN116157778A (zh) | 共享物理主机上混合集中分布式调度的系统和方法 | |
| CN107665143A (zh) | 资源管理方法、装置及系统 | |
| CN113486042A (zh) | 数据处理方法、装置、计算机可读介质及电子设备 | |
| Wu et al. | Dynamically adjusting scale of a kubernetes cluster under qos guarantee | |
| CN115509749A (zh) | 任务执行方法和装置、存储介质和电子设备 | |
| CN120560776A (zh) | 容器重调度方法、系统、设备、存储介质及程序产品 | |
| CN106502790A (zh) | 一种基于数据分布的任务分配优化方法 | |
| CN114629960A (zh) | 资源调度方法、装置、系统、设备、介质和程序产品 | |
| Dong et al. | Mina: Fine-grained in-network aggregation resource scheduling for machine learning service | |
| CN118210608B (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 |