CN114625507B - 基于有向无环图的任务调度方法、系统、设备及存储介质 - Google Patents
基于有向无环图的任务调度方法、系统、设备及存储介质 Download PDFInfo
- Publication number
- CN114625507B CN114625507B CN202210249950.2A CN202210249950A CN114625507B CN 114625507 B CN114625507 B CN 114625507B CN 202210249950 A CN202210249950 A CN 202210249950A CN 114625507 B CN114625507 B CN 114625507B
- Authority
- CN
- China
- Prior art keywords
- task
- node
- nodes
- thread
- group
- 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
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
技术领域
本申请涉及计算机任务调度的技术领域,尤其是涉及一种基于有向无环图的任务调度方法、系统、设备及存储介质。
背景技术
在金融领域,常常需要利用计算机进行大量的数据运算,一般来说,对于一组任务,可以使用多核处理器的硬件优势,将任务分发到不同的核心中执行,线程池也自然而然地成为了通用的任务调度组件,在线程池中,用户通过接口将任务放入池中,线程池的调度线程会分配一个工作线程来执行被投入的任务,但是,线程池无法以用户特定的顺序来执行任务,只能随机调度。
而金融数据的计算往往是伴随着大量的数据依赖,当用户拿到一组基础数据,需要计算若干个衍生数据时,基础数据往往无法直接用于计算衍生数据,而是需要计算出一组中间数据,然后再由中间数据计算衍生数据,如果采用传统的多线程方案,就会存在大量的线程同步问题,因为用户只能通过添加任何线程同步逻辑的方式来组织数据的运算次序,若用户无法在多线程计算中描述任务的依赖关系,则只能使用单线程进行计算,计算的速度就会大幅下降。
针对上述相关技术,发明人认为存在难以在不添加线程同步逻辑的情况下描述任务的执行次序的问题。
发明内容
为了提高存在大量数据依赖时多线程计算的效率,本申请提供一种基于有向无环图的任务调度方法、系统、设备及存储介质。
本申请的发明目的一采用如下技术方案实现:
一种基于有向无环图的任务调度方法,包括:
将一项总任务划分为若干可独立执行的最小单元作为任务节点;
基于有向无环图确定各任务节点的依赖关系,并根据依赖关系确定各任务节点对应的执行次序,以便基于所述执行次序为各任务节点分配工作线程。
通过采用上述技术方案,将一项总任务划分为若干可独立执行的最小单元作为任务节点,便于将总任务进行最大程度的细化,以便充分发挥计算机多线程工作的优势,提高总任务的完成效率;根据一项总任务所划分的若干任务节点创建有向无环图,从而获取每一任务节点对应的依赖关系,以确定各任务节点的执行次序,以便后续根据各任务节点的执行次序为各任务节点分配工作线程执行各任务节点,为各任务节点的顺利执行提供保障,以防各任务节点的执行顺序错误导致任务无法执行或者执行结果错误。
本申请在一较佳示例中:基于有向无环图确定各任务节点的依赖关系,并根据依赖关系确定各任务节点对应的执行次序的步骤中,具体包括:
获取用户上传的目标任务节点并判断所述目标任务节点有无依赖于其他任务节点;
若所述目标任务节点无依赖于其他任务节点,则添加所述目标任务节点并设定为最先执行;
若所述目标任务节点有依赖于其他任务节点,则添加所述目标任务节点并基于所述目标任务节点的依赖关系确定执行次序。
通过采用上述技术方案,获取用户上传的目标任务节点,并判断目标任务节点有无依赖于其他任务节点,若所述目标任务节点无依赖于其他任务节点,由于该目标任务节点不依赖于其他任务节点,可以直接执行,因此可以直接添加该目标任务节点,并将该目标任务节点设定为最先执行,以便后续优先执行该不依赖于其他任务节点的目标任务节点;若所述目标任务节点为有依赖于其他任务节点,由于该目标任务节点需要等候对应的被依赖节点被执行后才可以执行,因此需要根据该目标任务节点所依赖的被依赖节点的依赖关系才可以确定该目标任务节点的执行次序,以便后续在该目标任务节点所依赖的被依赖节点被执行后,再执行该目标任务节点,以防出现直接执行该依赖于其他任务节点的目标任务节点而导致的程序或数据错误。
本申请在一较佳示例中:若所述目标任务节点为有依赖于其他任务节点,则添加所述目标任务节点并基于所述目标任务节点的依赖关系确定执行次序的步骤中,包括:
判断所述目标任务节点的被依赖节点是否存在,若所述被依赖节点不存在,则将所述目标任务节点标记为非法任务;
基于所述非法任务生成警示信息并发送至管理终端。
通过采用上述技术方案,在判断有依赖的目标任务节点的执行次序之前,先根据该有依赖的目标任务节点的依赖关系判断所述有依赖的目标任务节点的被依赖节点是否存在,若所述被依赖节点不存在,则该有依赖的目标任务节点无法顺利执行,因而将该有依赖的目标任务节点标记为非法任务以暂停执行该有依赖的目标任务节点,以防直接执行该有依赖的目标任务节点导致程序或数据错误;基于非法任务生成警示信息并发送至管理终端,使管理人员获知该有依赖的目标任务节点缺失被依赖节点,以便管理人员补全对应的被依赖节点或从路径依赖图中删除该有依赖的目标任务节点。
本申请在一较佳示例中:基于所述目标任务节点的依赖关系确定执行次序的步骤中,包括:
将无依赖的目标任务节点的执行次序设定为零;
确定所述有依赖的目标任务节点对应的被依赖节点的执行次序,所述被依赖节点为有依赖的目标任务节点所依赖的任务节点;
根据所述被依赖节点的执行次序设定所述有依赖的目标任务节点紧接于对应的被依赖节点之后执行。
通过采用上述技术方案,对于无依赖的目标任务节点,直接将执行次序设定为零,使无依赖的目标任务节点在执行时处于最优先执行的次序;对于有依赖的目标任务节点,则需要先确定该有依赖的目标任务节点所对应的被依赖节点的执行次序,其中被依赖节点为有依赖的目标任务节点所依赖的任务节点;根据被依赖节点的执行次序设定所述有依赖的目标任务节点的执行次序,使有依赖的目标任务节点紧接于对应的被依赖节点之后执行,以便在执行时,有依赖的目标任务节点能够在被依赖节点执行完成之后再执行,提高了各任务节点依序执行的稳定性。
本申请在一较佳示例中:根据所述被依赖节点的执行次序确定有依赖的目标任务节点的执行次序的步骤中,包括:
若一个有依赖的目标任务节点对应多个被依赖节点,根据多个被依赖节点中最后执行的被依赖节点的执行次序设定所述有依赖的目标任务节点紧接于最后执行的被依赖节点之后执行。
通过采用上述技术方案,当一个有依赖的目标任务节点存在多个被依赖节点时,根据多个被依赖节点中最后执行的被依赖节点的执行次序设定所述有依赖的目标任务节点的执行次序,使有依赖的目标任务节点紧接于最后执行的被依赖节点之后执行,以便该有依赖的目标任务节点在所依赖的所有被依赖节点均执行完毕后才开始执行,提高了任务节点依序执行的稳定性。
本申请在一较佳示例中:基于有向无环图确定各任务节点的依赖关系,并根据依赖关系确定各任务节点对应的执行次序的步骤之后,还包括:
基于各任务节点对应的执行次序生成任务序列数据;
根据执行次序分批从任务序列数据中获取任务节点,为所述任务节点分配工作线程,以依序执行所有任务节点。
通过采用上述技术方案,基于各任务节点对应的执行次序生成任务序列数据,以确定每个执行次序所需执行的任务节点,便于分批执行各任务节点;将一个执行次序中的所有任务节点作为一个批次的任务节点,依照从小到大的执行次序分批从任务序列数据中获取任务节点,为任务节点分配工作线程以执行当前批次的任务节点,当一个批次的任务节点执行完毕之后,从任务序列数据中获取下一批任务节点,分配工作线程并执行,至任务序列数据中所有任务节点完成。
本申请在一较佳示例中:根据执行次序分批从任务序列数据中获取任务节点,为所述任务节点分配工作线程的步骤中,包括:
估算进行每一任务节点所需执行时间作为节点耗时数据;
将任务序列数据中的所有任务节点按照执行序列划分为任务组;
若一个任务组的任务节点数量大于工作线程数量,则基于各任务节点的节点耗时数据对任务组内的任务节点划分线程组,为每一线程组分配一条工作线程。
通过采用上述技术方案,估算每一任务节点所需执行时间作为该任务节点对应的节点耗时数据,便于根据任务节点所需执行时间为任务节点规划工作线程;从任务序列数据中获取每一执行次序对应的所有任务节点,将各任务节点根据执行次序的不同而分入不同的任务组中,生成若干任务组,以便后续按照执行次序执行相应的任务组内的任务节点,使处于同一任务序列的任务节点能够在同一批次执行;若当前任务组的任务节点数量大于工作线程数量,则无法同时执行任务组内的所有任务节点,需要基于各任务节点对应的节点耗时数据将任务组内的任务节点划分为与工作线程数量相等的多个线程组,为每一线程组分配一条工作线程,使任务节点能够根据线程组而被分配工作线程。
本申请在一较佳示例中:若一个任务组的任务节点数量大于工作线程数量,则基于各任务节点的节点耗时数据对任务组内的任务节点划分线程组的步骤中,具体包括:
计算任务组的各节点耗时数据之和,将各节点耗时数据之和除以工作线程数量得到平均线程负荷数据;
基于工作线程数量对各任务节点进行线程组划分,计算各线程组的组耗时数据,以所述组耗时数据为变量、所述平均线程负荷数据为均值计算每一种划分方案的方差;
根据所述方差最小的划分方案生成各线程组。
通过采用上述技术方案,对任务节点进行线程组划分时,计算任务组内所有任务节点对应的节点耗时数据之和,并将该所有任务节点对应的节点耗时数据之和除以工作线程数量,便于得到平均线程负荷数据以体现线程组理论最优分配方式对应的每条线程执行任务节点所需时间;基于工作线程数量对任务组内的所有任务节点进行线程组划分,计算每一种划分方案中各线程组内任务节点对应的节点耗时数据之和作为组耗时数据,以体现每个执行线程组所需的时间,以所述组耗时数据为变量、所述平均线程负荷数据为均值计算每一种划分方案的方差,便于从多种划分方案中找到最接近理论最优分配方式的划分方案,并基于该最接近理论最优分配方式的划分方案生成各线程组,提高线程组划分的科学性。
本申请在一较佳示例中:根据所述方差最小的划分方案生成各线程组的步骤之后,还包括:
根据线程组内各任务节点的依赖关系调整各任务节点的执行顺序,使具有后续节点的任务节点优先执行,后续节点是指以当前节点为被依赖节点的有依赖节点;
计算最大的组耗时数据与其他组耗时数据的差值,并标记所述差值大于预设耗时差值的线程组;
当所述差值大于预设耗时差值的线程组执行完毕后,从下一任务组中选取被依赖节点执行完毕的任务节点,并添加至执行完毕的线程组的工作线程中。
通过采用上述技术方案,根据线程组内各任务节点的依赖关系对线程组内各任务节点的执行顺序进行调整,以便使具有后续节点的任务节点优先执行,为后续节点的执行做好准备,减少后续节点无法顺利执行的情况发生;计算最大的组耗时数据与其他组耗时数据的差值,便于分析各线程组之间所需执行时间的差值,标记所述差值大于预设耗时差值的线程组,当所述差值大于预设耗时差值的线程组执行完毕后,基于已经执行完毕的任务节点的依赖关系,从下一任务组中选取依赖节点执行完毕的任务节点,并添加至执行完毕的线程组的工作线程中,达到提高组耗时数据较小的工作线程利用率的效果,进而提高多线程任务执行的效率。
本申请的发明目的二采用如下技术方案实现:
一种基于有向无环图的任务调度系统,包括:
任务节点生成模块,用于将一项总任务划分为若干可独立执行的最小单元作为任务节点;
执行次序确定模块,用于基于有向无环图确定各任务节点的依赖关系,并根据依赖关系确定各任务节点对应的执行次序,以便为任务节点分配工作线程。
通过采用上述技术方案,将一项总任务划分为若干可独立执行的最小单元作为任务节点,便于将总任务进行最大程度的细化,以便充分发挥计算机多线程工作的优势,提高总任务的完成效率;根据一项总任务所划分的若干任务节点创建有向无环图,从而获取每一任务节点对应的依赖关系,以确定各任务节点的执行次序,以便后续根据各任务节点的执行次序为各任务节点分配工作线程执行各任务节点,为各任务节点的顺利执行提供保障,以防各任务节点的执行顺序错误导致任务无法执行或者执行结果错误。
本申请的发明目的三采用如下技术方案实现:
一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述基于有向无环图的任务调度方法的步骤。
本申请的发明目的四采用如下技术方案实现:
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述基于有向无环图的任务调度方法的步骤。
综上所述,本申请包括以下至少一种有益技术效果:
1. 将一项总任务划分为若干可独立执行的最小单元作为任务节点,便于将总任务进行最大程度的细化,以便充分发挥计算机多线程工作的优势,提高总任务的完成效率;根据一项总任务所划分的若干任务节点创建有向无环图,从而获取每一任务节点对应的依赖关系,以确定各任务节点的执行次序,以便后续根据各任务节点的执行次序为各任务节点分配工作线程执行各任务节点,为各任务节点的顺利执行提供保障,以防各任务节点的执行顺序错误导致任务无法执行或者执行结果错误。
2. 获取用户上传的目标任务节点,并判断目标任务节点有无依赖于其他任务节点,若目标任务节点无依赖于其他任务节点,由于该目标任务节点不依赖于其他任务节点,可以直接执行,因此可以直接添加该目标任务节点,并将该目标任务节点设定为最先执行,以便后续优先执行该不依赖于其他任务节点的目标任务节点;若目标任务节点为有依赖于其他任务节点,由于该目标任务节点需要等候对应的被依赖节点被执行后才可以执行,因此需要根据该目标任务节点所依赖的被依赖节点的依赖关系才可以确定该目标任务节点的执行次序,以便后续在该目标任务节点所依赖的被依赖节点被执行后,再执行该目标任务节点,以防出现直接执行该依赖于其他任务节点的目标任务节点而导致的程序或数据错误。
3. 在判断有依赖的目标任务节点的执行次序之前,先根据该有依赖的目标任务节点的依赖关系判断有依赖的目标任务节点的被依赖节点是否存在,若被依赖节点不存在,则该有依赖的目标任务节点无法顺利执行,因而将该有依赖的目标任务节点标记为非法任务以暂停执行该有依赖的目标任务节点,以防直接执行该有依赖的目标任务节点导致程序或数据错误;基于非法任务生成警示信息并发送至管理终端,使管理人员获知该有依赖的目标任务节点缺失被依赖节点,以便管理人员补全对应的被依赖节点或从路径依赖图中删除该有依赖的目标任务节点。
附图说明
图1是本申请基于有向无环图的任务调度方法的原理图;
图2是本申请一实施例中基于有向无环图的任务调度方法的一流程图;
图3是本申请一实施例中基于有向无环图的任务调度方法中步骤S20的流程图;
图4是本申请一实施例中基于有向无环图的任务调度方法中步骤S23的流程图;
图5是本申请一实施例中基于有向无环图的任务调度方法中步骤S23的另一流程图;
图6是本申请一实施例中基于有向无环图的任务调度方法中步骤S28的流程图;
图7是本申请一实施例中基于有向无环图的任务调度方法的另一流程图;
图8是本申请一实施例中基于有向无环图的任务调度方法中步骤S40的流程图;
图9是本申请一实施例中基于有向无环图的任务调度系统的一原理框图;
图10是本申请一实施例中的设备示意图。
具体实施方式
以下结合附图对本申请作进一步详细说明。
图1为本申请基于有向无环图的任务调度方法的原理图。
在本申请中,任务节点包括无依赖的任务节点、有依赖的任务节点、被依赖节点和后续节点,无依赖的任务节点是指可以直接执行的任务节点;有依赖的任务节点是指需要依赖前序任务节点执行完毕后才能够开始执行的任务节点;被依赖节点是指被当前有依赖的任务节点所依赖的前序任务节点;后续节点是指依赖当前节点执行完毕后才能够开始执行的后续任务节点。
在一实施例中,如图2所示,本申请公开了一种基于有向无环图的任务调度方法,具体包括如下步骤:
S10:将一项总任务划分为若干可独立执行的最小单元作为任务节点。
在本实施例中,任务节点是指将总任务进行划分后所得到的可独立执行的最小单元。
具体地,对一项总任务进行划分,以得到可独立执行的在最小单元,以便后续利用计算机的多个线程分别处理各任务节点,以提高总任务的执行效率。
S20:基于有向无环图确定各任务节点的依赖关系,并根据依赖关系确定各任务节点对应的执行次序,以便基于执行次序为各任务节点分配工作线程。
在本实施例中,依赖关系是指任务节点之间执行先后的特定顺序。
具体地,基于有向无环图的方法确定各任务节点的依赖关系,通过调度器获取用户上传的任务节点,分析任务节点的依赖关系,其中包括判断任务节点的类型以及对应的被依赖节点和后续节点,从而确定任务节点的执行次序,并根据任务节点的类型、对应的被依赖节点和后续节点形成有向无环图,便于通过有向无环图确定各任务节点之间的依赖关系,以便基于执行次序为各任务节点分配工作线程,以防出现有依赖的任务节点在对应的被依赖节点执行完毕之前被执行,从而导致无法执行或者该任务节点执行出错的问题;其中,若一个任务节点的执行需要依赖于另一个任务节点的执行,则这两个任务节点之间存在依赖关系。
在本实施例中,将一项总任务划分为若干可独立执行的最小单元作为任务节点,便于将总任务进行最大程度的细化,以便充分发挥计算机多线程工作的优势,提高总任务的完成效率;根据一项总任务所划分的若干任务节点创建有向无环图,从而获取每一任务节点对应的依赖关系,以确定各任务节点的执行次序,以便后续根据各任务节点的执行次序为各任务节点分配工作线程执行各任务节点,为各任务节点的顺利执行提供保障,以防各任务节点的执行顺序错误导致任务无法执行或者执行结果错误。
在一实施例中,如图3所示,在步骤S20中,包括:
S21:获取用户上传的目标任务节点并判断目标任务节点有无依赖于其他任务节点。
在本实施例,任务节点的类型包括无依赖的任务节点和有依赖的任务节点。
具体地,获取用户上传的任务节点,获取目标任务节点的依赖关系并根据目标任务节点的依赖关系判断该目标任务节点有无依赖于其他任务节点,以便后续设定该目标任务节点的执行次序。
S22:若目标任务节点无依赖于其他任务节点,则添加目标任务节点并设定为最先执行。
具体地,根据任务节点的依赖关系,若目标任务节点没有依赖于其他任务节点,则直接将该目标任务节点的执行次序设定为最优先执行,以便在任务执行阶段开始时直接执行该无依赖节点。
S23:若目标任务节点有依赖于其他任务节点,则添加目标任务节点并基于目标任务节点的依赖关系确定执行次序。
具体地,根据目标任务节点的依赖关系,若目标任务节点有依赖于其他任务节点,则该节点为有依赖的任务节点,获取该目标任务节点对应的被依赖节点的执行次序,以确定该目标任务节点的执行次序。
在一实施例中,如图4所示,在步骤S23中,包括:
S24:判断目标任务节点的被依赖节点是否存在,若被依赖节点不存在,则将目标任务节点标记为非法任务。
具体地,在添加目标任务节点时,若被添加的目标任务节点为有依赖的任务节点时,则基于该目标任务节点的依赖关系判断该目标任务节点对应的被依赖节点是否存在,若该目标任务节点对应的被依赖节点不存在,则该目标任务节点对应的任务在执行时可能会使输出结果错误甚至导致程序崩溃,因此,对缺失被依赖节点的有依赖的目标任务节点标记为非法任务,使该缺失被依赖节点的有依赖的任务节点暂停执行,以防影响其他任务节点的正常执行。
S25:基于非法任务生成警示信息并发送至管理终端。
具体地,当存在非法任务时,生成警示信息并发送至管理终端,优选的,警示信息的内容可以是“非法任务:该任务节点缺失前序任务节点”,便于工作人员及时获知存在非法任务的情况,以在接收到警示信息后补充上传缺失的被依赖节点,使得该有依赖节点能够顺利被执行,或者删除该缺失被依赖节点的有依赖的任务节点。
在一实施例中,如图5所示,在步骤S23中,包括:
S26:将无依赖的目标任务节点的执行次序设定为零。
在本实施例中,执行次序由数字进行表示,执行次序的数值越小,则越优先执行,执行次序最小值为0。
具体地,将无依赖的目标任务节点的执行次序设定为零,以便在任务执行阶段开始时,优先执行无依赖的任务节点,以便为后续有依赖的任务节点的执行做好准备工作。
S27:确定有依赖的目标任务节点对应的被依赖节点的执行次序,被依赖节点为有依赖的目标任务节点所依赖的任务节点。
具体地,由于有依赖的任务节点必须在对应的被依赖节点执行完毕后才可以执行,因此,要确定有依赖的目标任务节点的执行次序,应当先确定对应的被依赖节点的执行次序。
S28:根据被依赖节点的执行次序设定有依赖的目标任务节点紧接于对应的被依赖节点之后执行。
具体地,根据被依赖节点的执行次序设定有依赖的目标任务节点的执行次序,若该被依赖节点的执行次序为X,则该有依赖节点的执行次序为X+1,以达到使有依赖的目标任务节点紧接于对应的被依赖节点之后执行的效果。
在一实施例中,如图6所示,在步骤S28中,包括:
S29:若一个有依赖的目标任务节点对应多个被依赖节点,根据多个被依赖节点中最后执行的被依赖节点的执行次序设定有依赖的目标任务节点紧接于最后执行的被依赖节点之后执行。
具体地,由于一个有依赖的目标任务节点可能对应有多个被依赖任务节点,例如,需“计算A+B的和”,应当先获取A和B的数值,则“获取A的数值”和“获取B的数值”均为“计算A+B的和”的被依赖任务;其中,一个有依赖的目标任务节点对应的被依赖任务对应的被依赖节点的执行次序可能不相同,因此,若需要顺利执行有依赖的目标任务节点,需要对应的被依赖节点全部执行完毕后在执行该有依赖的目标任务节点。
具体地,根据多个被依赖节点中最后执行的被依赖节点的执行次序设定有依赖的目标任务节点的执行次序,使有依赖的目标任务节点紧接于最后执行的被依赖节点之后执行。
在一实施例中,如图7所示,在步骤S20之后,基于有向无环图的任务调度方法还包括:
S30:基于各任务节点对应的执行次序生成任务序列数据。
在本实施例中,任务序列数据是指记录了各任务节点的执行次序的数据。
具体地,获取各任务节点的执行次序,将所有任务节点根据执行次序的不同进行划分,便于确定位于同一执行次序的任务节点,从而生成任务序列数据,任务序列数据记录了所有任务节点以及对应的执行次序信息。
S40:根据执行次序分批从任务序列数据中获取任务节点,为任务节点分配工作线程,以依序执行所有任务节点。
具体地,调度器从任务序列数据中选取处于当前执行次序的所有任务节点作为一个批次的任务节点,依照从小到大的执行次序分批从任务序列数据中获取任务节点,为任务节点分配工作线程以执行当前批次的任务节点,使各批任务节点在相应的工作线程中被执行。
在一实施例中,如图8所示,在步骤S40中,包括:
S41:估算进行每一任务节点所需执行时间作为节点耗时数据;
在本实施例中,节点耗时数据是指执行对应的任务节点所需消耗的时间。
具体地,估算每一个任务节点所需的执行时间以作为该任务节点对应的节点耗时数据;以便后续根据各任务节点对应的节点耗时数据规划任务节点的工作线程。
S42:将任务序列数据中的所有任务节点按照执行序列划分为任务组;
在本实施例中,任务组是由处于同一执行次序的所有任务节点所构成的任务节点的分组。
具体地,按照从小到大的顺序依次获取每一执行次序对应的所有任务节点以生成任务组,其中,将每一执行次序对应的所有任务点生成一个任务组。
S43:若一个任务组的任务节点数量大于工作线程数量,则基于各任务节点的节点耗时数据对任务组内的任务节点划分线程组,为每一线程组分配一条工作线程。
具体地,当执行某一任务组的任务节点时,若任务组内的任务节点数量大于工作线程的数量,则无法同时执行所有任务节点,需要对任务节点划分为多个线程组,其中,线程组的数量与工作线程的数量相等,以便为每一线程组分配工作线程,使每条工作线程负责执行一个线程组内的任务节点。
在步骤S43中,具体包括:
S431:计算任务组的各节点耗时数据之和,将各节点耗时数据之和除以工作线程数量得到平均线程负荷数据。
具体地,取各节点耗时数据为Ti,工作线程数量A,平均线程负荷数据B,计算当前进行的任务组中的任务节点对应的各节点耗时数据之和Ti,将各节点耗时数据之和除以工作线程数量得到平均线程负荷数据B,以体现线程组理论最优分配方案对应的每条线程执行任务节点所需时间。
S432:基于工作线程数量对各任务节点进行线程组划分,计算各线程组的组耗时数据,以组耗时数据为变量、平均线程负荷数据为均值计算每一种划分方案的方差。
具体地,基于工作线程数量对各任务节点通过穷尽法进行分组,其中穷尽法分组的规则为:每个组至少有一个任务节点,计算每一种划分方案中每个组的组耗时数据,其中组耗时数据是指本组内各任务节点对应的节点耗时数据之和;以组耗时数据为变量、平均线程负荷数据为均值,计算每一种分组方案对应的方差,以便根据每一种划分方案对应的方差判断各划分方案与理论最优分配方式的偏差情况。
S433:根据方差最小的划分方案生成各线程组。
具体地,根据上述分组方案中方差最小的方案生成各线程组,即根据最接近理论最优分配方式的分组方案划分各线程组,便于提高对当前任务组的整体执行效率。
在步骤S433之后,还包括:
S434:根据线程组内各任务节点的依赖关系调整各任务节点的执行顺序,使具有后续节点的任务节点优先执行,后续节点是指以当前节点为被依赖节点的有依赖节点。
具体地,对线程组划分完成后,根据线程组内各任务节点的依赖关系调整各任务节点的执行顺序,分析线程组内的各任务节点是否存在后续节点,将存在后续节点的任务节点调整至线程组内优先执行的位置,使具有后续节点的任务节点优先执行,为后续节点的执行做好准备。
进一步地,根据线程组内存在后续节点的各任务节点对应的节点耗时数据进行排序,将存在后续节点的各任务节点依照对应的节点耗时数据从小到大的顺序排列,使节点耗时数据较小的存在后续节点的任务节点相对于其他节点耗时数据较大的存在后续节点的任务节点更优先执行,以便更早地完成部分存在后续节点的任务节点。
S435:计算最大的组耗时数据与其他组耗时数据的差值,并标记差值大于预设耗时差值的线程组。
具体地,设置预设耗时差值,判断组耗时数据最大的线程组与其他线程组在组耗时数据上的差值是否大于预设耗时差值,若差值大于预设耗时差值,则认为差值大于预设耗时差值的线程组相对于组耗时数据最大的线程组所需的执行时间差距较大,应当采取提高线程利用率的措施,对差值大于预设耗时差值的线程组进行标记,以便后续采取提高这些线程组所在工作线程的利用率的措施。
S436:当差值大于预设耗时差值的线程组执行完毕后,从下一任务组中选取被依赖节点执行完毕的任务节点,并添加至执行完毕的线程组的工作线程中。
具体地,当某差值大于预设耗时差值的线程组执行完毕后,该线程组对应的工作线程处于空闲状态,根据当前任务组中执行完毕的任务节点的依赖关系,以确定这些执行完毕的任务节点的后续节点,从下一任务组中选取执行完毕的任务节点的后续节点并添加至执行完毕的线程组的工作线程中,以提高该工作线程的利用率,进而达到提高总体处理效率的效果。
进一步地,预设耗时差值可根据下一任务组中节点耗时数据最小的执行完毕的任务节点的后续节点而设置。
应理解,上述实施例中各步骤的序号大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
在一实施例中,提供一种基于有向无环图的任务调度系统,该基于有向无环图的任务调度系统与上述实施例中基于有向无环图的任务调度方法相对应。
如图9所示,一种基于有向无环图的任务调度系统,包括任务节点生成模块执行次序确定模块。各功能模块的详细说明如下:
任务节点生成模块,用于将一项总任务划分为若干可独立执行的最小单元作为任务节点;
执行次序确定模块,用于基于有向无环图确定各任务节点的依赖关系,并根据依赖关系确定各任务节点对应的执行次序,以便为任务节点分配工作线程。
关于基于有向无环图的任务调度系统的具体限定可以参见上文中对于基于有向无环图的任务调度方法的限定,在此不再赘述;上述基于有向无环图的任务调度系统中的各个模块可全部或部分通过软件、硬件及其组合来实现;上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以是以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图10所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储任务节点、有向无环图、各任务节点的依赖关系、各任务节点对应的执行次序、任务序列数据和节点耗时数据等数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种基于有向无环图的任务调度方法。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:
S10:将一项总任务划分为若干可独立执行的最小单元作为任务节点;
S20:基于有向无环图确定各任务节点的依赖关系,并根据依赖关系确定各任务节点对应的执行次序,以便基于执行次序为各任务节点分配工作线程。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
S10:将一项总任务划分为若干可独立执行的最小单元作为任务节点;
S20:基于有向无环图确定各任务节点的依赖关系,并根据依赖关系确定各任务节点对应的执行次序,以便基于执行次序为各任务节点分配工作线程。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink) DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域普通技术人员应当理解;其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
Claims (8)
1.基于有向无环图的任务调度方法,其特征在于:所述基于有向无环图的任务调度方法的步骤包括:
将一项总任务划分为若干可独立执行的最小单元作为任务节点;
基于有向无环图确定各任务节点的依赖关系,并根据依赖关系确定各任务节点对应的执行次序,以便基于所述执行次序为各任务节点分配工作线程;
其中,基于有向无环图确定各任务节点的依赖关系,并根据依赖关系确定各任务节点对应的执行次序的步骤之后,还包括:
基于各任务节点对应的执行次序生成任务序列数据;
根据执行次序分批从任务序列数据中获取任务节点,为所述任务节点分配工作线程,以依序执行所有任务节点;
其中,根据执行次序分批从任务序列数据中获取任务节点,为所述任务节点分配工作线程的步骤中,包括:
估算进行每一任务节点所需执行时间作为节点耗时数据;
将任务序列数据中的所有任务节点按照执行序列划分为任务组;
若一个任务组的任务节点数量大于工作线程数量,则基于各任务节点的节点耗时数据对任务组内的任务节点划分线程组,为每一线程组分配一条工作线程;
其中,若一个任务组的任务节点数量大于工作线程数量,则基于各任务节点的节点耗时数据对任务组内的任务节点划分线程组,为每一线程组分配一条工作线程的步骤中,包括:
计算任务组的各节点耗时数据之和,将各节点耗时数据之和除以工作线程数量得到平均线程负荷数据;
基于工作线程数量对各任务节点进行线程组划分,计算各线程组的组耗时数据,以组耗时数据为变量、平均线程负荷数据为均值计算每一种划分方案的方差;
根据方差最小的划分方案生成各线程组;
根据线程组内各任务节点的依赖关系调整各任务节点的执行顺序,使具有后续节点的任务节点优先执行,后续节点是指以当前节点为被依赖节点的有依赖节点;
计算最大的组耗时数据与其他组耗时数据的差值,并标记差值大于预设耗时差值的线程组;
当差值大于预设耗时差值的线程组执行完毕后,从下一任务组中选取被依赖节点执行完毕的任务节点,并添加至执行完毕的线程组的工作线程中。
2.根据权利要求1所述的基于有向无环图的任务调度方法,其特征在于:基于有向无环图确定各任务节点的依赖关系,并根据依赖关系确定各任务节点对应的执行次序的步骤中,具体包括:
获取用户上传的目标任务节点并判断所述目标任务节点有无依赖于其他任务节点;
若所述目标任务节点无依赖于其他任务节点,则添加所述目标任务节点并设定为最先执行;
若所述目标任务节点有依赖于其他任务节点,则添加所述目标任务节点并基于所述目标任务节点的依赖关系确定执行次序。
3.根据权利要求2所述的基于有向无环图的任务调度方法,其特征在于:若所述目标任务节点为有依赖于其他任务节点,则添加所述目标任务节点并基于所述目标任务节点的依赖关系确定执行次序的步骤中,包括:
判断所述目标任务节点的被依赖节点是否存在,若所述被依赖节点不存在,则将所述目标任务节点标记为非法任务;
基于所述非法任务生成警示信息并发送至管理终端。
4.根据权利要求2所述的基于有向无环图的任务调度方法,其特征在于:基于所述目标任务节点的依赖关系确定执行次序的步骤中,包括:
将无依赖的目标任务节点的执行次序设定为零;
确定所述有依赖的目标任务节点对应的被依赖节点的执行次序,所述被依赖节点为有依赖的目标任务节点所依赖的任务节点;
根据所述被依赖节点的执行次序设定所述有依赖的目标任务节点紧接于对应的被依赖节点之后执行。
5.根据权利要求4所述的基于有向无环图的任务调度方法,其特征在于:根据所述被依赖节点的执行次序确定有依赖的目标任务节点的执行次序的步骤中,包括:
若一个有依赖的目标任务节点对应多个被依赖节点,根据多个被依赖节点中最后执行的被依赖节点的执行次序设定所述有依赖的目标任务节点紧接于最后执行的被依赖节点之后执行。
6.一种基于有向无环图的任务调度系统,其特征在于,包括:
任务节点生成模块,用于将一项总任务划分为若干可独立执行的最小单元作为任务节点;
执行次序确定模块,用于基于有向无环图确定各任务节点的依赖关系,并根据依赖关系确定各任务节点对应的执行次序,以便为任务节点分配工作线程;
其中,基于有向无环图确定各任务节点的依赖关系,并根据依赖关系确定各任务节点对应的执行次序的步骤之后,还包括:
基于各任务节点对应的执行次序生成任务序列数据;
根据执行次序分批从任务序列数据中获取任务节点,为所述任务节点分配工作线程,以依序执行所有任务节点;
其中,根据执行次序分批从任务序列数据中获取任务节点,为所述任务节点分配工作线程的步骤中,包括:
估算进行每一任务节点所需执行时间作为节点耗时数据;
将任务序列数据中的所有任务节点按照执行序列划分为任务组;
若一个任务组的任务节点数量大于工作线程数量,则基于各任务节点的节点耗时数据对任务组内的任务节点划分线程组,为每一线程组分配一条工作线程;
其中,若一个任务组的任务节点数量大于工作线程数量,则基于各任务节点的节点耗时数据对任务组内的任务节点划分线程组,为每一线程组分配一条工作线程的步骤中,包括:
计算任务组的各节点耗时数据之和,将各节点耗时数据之和除以工作线程数量得到平均线程负荷数据;
基于工作线程数量对各任务节点进行线程组划分,计算各线程组的组耗时数据,以组耗时数据为变量、平均线程负荷数据为均值计算每一种划分方案的方差;
根据方差最小的划分方案生成各线程组;
根据线程组内各任务节点的依赖关系调整各任务节点的执行顺序,使具有后续节点的任务节点优先执行,后续节点是指以当前节点为被依赖节点的有依赖节点;
计算最大的组耗时数据与其他组耗时数据的差值,并标记差值大于预设耗时差值的线程组;
当差值大于预设耗时差值的线程组执行完毕后,从下一任务组中选取被依赖节点执行完毕的任务节点,并添加至执行完毕的线程组的工作线程中。
7.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至5任一项所述基于有向无环图的任务调度方法的步骤。
8.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至5任一项所述基于有向无环图的任务调度方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210249950.2A CN114625507B (zh) | 2022-03-14 | 2022-03-14 | 基于有向无环图的任务调度方法、系统、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210249950.2A CN114625507B (zh) | 2022-03-14 | 2022-03-14 | 基于有向无环图的任务调度方法、系统、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114625507A CN114625507A (zh) | 2022-06-14 |
CN114625507B true CN114625507B (zh) | 2023-01-03 |
Family
ID=81902897
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210249950.2A Active CN114625507B (zh) | 2022-03-14 | 2022-03-14 | 基于有向无环图的任务调度方法、系统、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114625507B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20240220315A1 (en) * | 2022-12-30 | 2024-07-04 | Advanced Micro Devices, Inc. | Dynamic control of work scheduling |
CN116340436B (zh) * | 2023-03-14 | 2024-05-24 | 山东浪潮数字商业科技有限公司 | 数据分组加工调度方法及装置、介质、设备 |
CN115996197B (zh) * | 2023-03-17 | 2023-06-16 | 之江实验室 | 一种流量拥塞前置的分布式计算流量仿真系统与方法 |
CN117093502B (zh) * | 2023-10-13 | 2024-01-30 | 支付宝(杭州)信息技术有限公司 | 程序代码的并行性检测方法和装置 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107548490A (zh) * | 2014-12-26 | 2018-01-05 | 英特尔公司 | 并行计算中的进度计 |
CN109814986A (zh) * | 2017-11-20 | 2019-05-28 | 上海寒武纪信息科技有限公司 | 任务并行处理方法、存储介质、计算机设备、装置和系统 |
CN110554909A (zh) * | 2019-09-06 | 2019-12-10 | 腾讯科技(深圳)有限公司 | 任务的调度处理方法、装置及计算机设备 |
CN111258740A (zh) * | 2020-02-03 | 2020-06-09 | 北京无限光场科技有限公司 | 一种用于启动应用程序的方法、装置和电子设备 |
CN111597028A (zh) * | 2020-05-19 | 2020-08-28 | 北京百度网讯科技有限公司 | 用于任务调度的方法和装置 |
CN111984390A (zh) * | 2020-08-31 | 2020-11-24 | 平安医疗健康管理股份有限公司 | 任务调度方法、装置、设备及存储介质 |
CN113535367A (zh) * | 2021-09-07 | 2021-10-22 | 北京达佳互联信息技术有限公司 | 任务调度方法及相关装置 |
CN113760488A (zh) * | 2020-08-28 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 调度任务的方法、装置、设备和计算机可读介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7941805B2 (en) * | 2006-08-15 | 2011-05-10 | International Business Machines Corporation | Affinity dispatching load balancer with precise CPU consumption data |
US9652286B2 (en) * | 2014-03-21 | 2017-05-16 | Oracle International Corporation | Runtime handling of task dependencies using dependence graphs |
US11010193B2 (en) * | 2017-04-17 | 2021-05-18 | Microsoft Technology Licensing, Llc | Efficient queue management for cluster scheduling |
-
2022
- 2022-03-14 CN CN202210249950.2A patent/CN114625507B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107548490A (zh) * | 2014-12-26 | 2018-01-05 | 英特尔公司 | 并行计算中的进度计 |
CN109814986A (zh) * | 2017-11-20 | 2019-05-28 | 上海寒武纪信息科技有限公司 | 任务并行处理方法、存储介质、计算机设备、装置和系统 |
CN110554909A (zh) * | 2019-09-06 | 2019-12-10 | 腾讯科技(深圳)有限公司 | 任务的调度处理方法、装置及计算机设备 |
CN111258740A (zh) * | 2020-02-03 | 2020-06-09 | 北京无限光场科技有限公司 | 一种用于启动应用程序的方法、装置和电子设备 |
CN111597028A (zh) * | 2020-05-19 | 2020-08-28 | 北京百度网讯科技有限公司 | 用于任务调度的方法和装置 |
CN113760488A (zh) * | 2020-08-28 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 调度任务的方法、装置、设备和计算机可读介质 |
CN111984390A (zh) * | 2020-08-31 | 2020-11-24 | 平安医疗健康管理股份有限公司 | 任务调度方法、装置、设备及存储介质 |
CN113535367A (zh) * | 2021-09-07 | 2021-10-22 | 北京达佳互联信息技术有限公司 | 任务调度方法及相关装置 |
Also Published As
Publication number | Publication date |
---|---|
CN114625507A (zh) | 2022-06-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114625507B (zh) | 基于有向无环图的任务调度方法、系统、设备及存储介质 | |
CN108845884B (zh) | 物理资源分配方法、装置、计算机设备和存储介质 | |
CN106528280B (zh) | 一种任务分配方法和系统 | |
CN111190703B (zh) | 实时数据处理方法、装置、计算机设备和存储介质 | |
CN108205469B (zh) | 一种基于MapReduce的资源分配方法及服务器 | |
EP2472397A1 (en) | Load distribution scheduling method in data processing system | |
CN111382031B (zh) | 测试方法及装置 | |
CN112948113A (zh) | 一种集群资源管理调度方法、装置、设备及可读存储介质 | |
CN116185869A (zh) | 一种软件测试方法、系统、计算机设备及存储介质 | |
CN114564281A (zh) | 容器调度方法、装置、设备及存储介质 | |
CN116113927A (zh) | 用于函数调用中可重复使用和相对索引的寄存器资源分配的方法和装置 | |
CN111143063B (zh) | 任务的资源预约方法及装置 | |
CN111506400A (zh) | 计算资源分配系统、方法、装置和计算机设备 | |
US20090168092A1 (en) | Job management and scheduling method for network system | |
CN111815291B (zh) | 基于云计算的工程造价多算管理方法、系统及其存储介质 | |
CN115080214A (zh) | 支持异常时任务重跑的调度方法、系统、设备及存储介质 | |
CN113159657A (zh) | 工序的执行资源分配方法、装置和存储介质 | |
CN117291384B (zh) | 基于资源调配的项目进度调整方法、装置、设备及介质 | |
CN112100273A (zh) | 集群数据扩容的方法、存储介质 | |
CN111581041A (zh) | 一种磁盘性能测试的方法和设备 | |
US20240184635A1 (en) | Method, apparatus, device and medium for performing task in computing system | |
CN114625572B (zh) | 逆向调试内存备份方法、电子设备和介质 | |
CN113742117B (zh) | 分布式任务诊断方法、装置以及存储介质 | |
JPH09259090A (ja) | 分散処理計算機システム | |
CN115033358A (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 |