CN110134506A - 基于处理器内核动态的实时动态关键路径多核调度方法 - Google Patents
基于处理器内核动态的实时动态关键路径多核调度方法 Download PDFInfo
- Publication number
- CN110134506A CN110134506A CN201910436868.9A CN201910436868A CN110134506A CN 110134506 A CN110134506 A CN 110134506A CN 201910436868 A CN201910436868 A CN 201910436868A CN 110134506 A CN110134506 A CN 110134506A
- Authority
- CN
- China
- Prior art keywords
- kernel
- queue
- node
- key
- task
- 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; 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
Abstract
基于处理器内核动态的实时动态关键路径多核调度方法,主要解决现有的调度方法没有结合核内实际情况来确定调度序列和调度序列就无法改变的问题。本发明方法包括:任务图转换模块采用fork节点的方法将DAG任务图转换为树形的图结构;将这些节点按照拓扑次序放置于若干个存储空间(以下称其为内核执行队列),得到一个初步的内核执行序列;设置内核初始状态,让调度方法适应内核数量,以及内核实时状态的方式调整内核的任务执行序列;在每一次内核执行队列内节点发送改变时,都可以根据改变后内核执行队列的状态,来确定是否需要调度节点,以及是否合并内核执行队列。
Description
技术领域
本发明涉及一种基于处理器内核实时状态的多核动态调度方法。
背景技术
多核多线程处理器的发展对传统的编译技术提出了挑战。目前大多数应用程序都是基于串行模式编写的,如果直接运行于多核处理器,不能发挥多核处理器的高并行处理能力。为了适应多核多线程处理器,传统的并行编译技术被引入。在并行编译中为了充分利用多处理器资源来运行并行程序需要面临许多问题:程序划分问题,也就是将原先完整的程序划分成多个可以并行执行的任务;任务调度问题,既将通过程序划分后的子任务调度分配到合适的核上执行使得程序的整体执行时间最短;还有就是任务之间的通信同步,及保持不同内核上的数据一致性问题。程序划分可以按照划分的方式分为手工划分,人机交互划分以及自动划分。
任务调度的好坏直接影响系统的性能,如果调度不当,则很可能将并行的优点完全给抹煞掉,甚至比串行的效果还差。从调度的时机来看,可以分为静态和动态的。静态调度指的是完全由编译器在编译时决定,程序行为(包括各个任务运行时间、通信、数据依赖以及同步等)必须是编译时就已知的,通常将任务或线程之间的关系用DAG图表示,其中节点表示任务或线程,节点权重表示任务运行时间,边则代表通信,边权重代表通信量;动态调度则指由调度程序根据运行时情况动态的分配不同的任务到各个处理器上,以求尽量降低总运行时间,同时减少调度程序本身带来的开销。
目前,在任务分配优化方向比较著名的调度方法主要有:IREA,PPA,ETDS,TDMSCL,CPFD,PY等。由于使用任务复制的核心思想将加权有向无环任务图(Directed AcyclicGraph,简称DAG)转换为树形图结构后,得到一个初始的可执行的任务调度图;又由于可以对树形图结构自底向上逐层递归的方式,便于在每一步调度中都能优先调度当前关键路径上的节点,达到减少任务执行时间的目的,而以往算法没有考虑到关键路径对任务总完成时间的影响,因此在任务的总完成时间上较本算法有延迟,同时由于以往的基于树形图结构模型的任务调度方法,没有考虑到处理器cpu执行调度时的事实情况,如不采用实时调度的方式,动态调节任务调度的次序与所在的cpu核,那么由算法确认的最初的调度序列将无法达到所想要的减少任务执行时间等效果,甚至有可能背道而驰,产生不必要的延迟。
发明内容
本发明的目的是提供一种基于处理器内核实时状态的多核动态调度方法。
上述的目的通过以下的技术方案实现:
基于处理器内核动态的实时动态关键路径多核调度方法,其特征是:任务图转换模块采用fork节点的方法将DAG任务图转换为树形的图结构;将这些节点按照拓扑次序放置于若干个存储空间(以下称其为内核执行队列);得到一个初步的内核执行序列;设置内核初始状态,让调度方法适应内核数量,以及内核实时状态的方式调整内核的任务执行序列;基于全部子任务执行状态可预知的前提,确认合并某些内核执行队列,以及调度内核执行队列内某些节点对程序总完成时间的影响,在每一次内核执行队列内节点发送改变时,都可以根据改变后内核执行队列状态,来确定是否需要调度节点,以及是否合并内核执行队列,以此完成动态的多核任务关键路径调度,使程序基于内核现有情况尽快尽节约内核完成。
所述的基于处理器内核动态的实时动态关键路径多核调度方法具体实施步骤如下:
步骤1:任务图转换模块采用fork节点的方法将DAG任务图转换为树形图结构;
步骤2:如果节点的入度大于一或子节点是key节点,这些节点称其为key节点,在里面记录前驱节点的任务类型,及其所在的内核执行队列,以拓扑次序依次放入关键节点调队列Key_List;
步骤3:创建叶子节点数量的称为内核执行队列的队列,从叶子节点开始将放入内核执行队列,直至父节点的入度大于1,则另起一个内核执行队列存储从另一个叶子节点开始存储直至父节点入度大于一,直至遍历所有叶子节点;
步骤4:开始A过程:{以拓扑次序依次选取Key_List的一个key节点,计算各个子结点完成时间,把key节点从Key_List调度(如果key节点已经存在于某个内核执行队列里则是从某个内核执行队列移动)到使key节点最快开始的内核执行队列,此时拟合并其他子结点与key节点所在内核执行队列,如果两个内核执行队列合并后,不延迟key节点的开始时间,则删除非key节点所在内核执行队列,将其节点按拓扑次序插入key节点所在内核执行队列头部,A过程完成},A过程完成后我们就拥有了N个内核执行队列(里面存储了任务的树形图结构)与一个关键节点调度序列Key_List,每次调用A过程都会使内核执行队列所表示的任务执行序列达到最优;
步骤5:基于现实的核情况,如果内核执行队列数量大于实际核数量,则对内核执行队列两两拟合并选取任务总完成时间最少的合并过程的执行合并(删除非key节点所在内核执行队列,将其节点按拓扑次序插入key节点所在内核执行队列头部),并调用A过程;
步骤6:将实际核里已有的任务放入对应的内核执行队列,并调用A过程;
步骤7:将内核执行队列里的节点按拓扑次序导出,形成核内包含其他程序任务的实时调度序列。
有益效果:
1.本发明通过任务图转换模块将DAG任务图转换为树形图结构;开辟内核执行队列空间存储树形图结构的节点;再通过内核执行队列调度模块对内核执行队列中节点进行调度,使得程序尽早执行;通过实时调度内核执行队列调度模块的方式确认核当前情况,减少处理器内核资源的浪费,实时产生当前最优调度序列,避免最开始的调度序列因核内任务执行序列的变化而达不到合理调度的效果,使处理器资源得到充分利用。
本发明基于任务复制的方式获得初始调度序列减少通信开销,多核处理器的特殊结构使得核间的通信延迟远大于核内延迟,而采用任务复制方式对任务图进行处理,从微观层面说,可以使处理器内核间的通信时间得到较为有效地控制。
本发明基于处理器内核实时状态的调度可以有效避免像可其他算法生成的理论调度序列无法适应内核实际数量的情况,是一种适应内核紧缺模式的算法。
本发明基于拟合任务关键路径的思想,减少了任务复制带来的内存开销。
传统的多核调度算法,为考虑cpu内核的实际情况,因而其调度序列在实际执行时有潜在的形成死锁的隐患,而本算法结合了内核的事实情况,对关键路径上的任务都是实时调整其所在核心,从任务调度层面减少了程序发生死锁的可能性。
本发明面向处理器的内核调度,核内任务可以实时调度到其他的核去执行,较大的提高了内核任务的利用率。
增益总结:本发明提高多核处理器任务处理的效率;动态的调度序列可以避免原有的调度序列无法适应内核状态动态的变化;避免潜在的死锁风险;当内核数量发生变化时也可以动态产生新的调度序列,以此使用内核数量与理想调度序列不匹配的情况;较大的提高了处理器内核任务的利用率。
附图说明:
附图1是本发明使用的DAG任务调度实例。
附图2是本发明的DAG任务图处理模块过程图。
附图3是附图1经过DAG任务图处理模块后得到的树形图结构。
附图4是树形图结构经过初步调度,生成核执行队列与Key_list。
附图5是从附图4所示状态未执行拟合并时产生的内核执行序列。
附图6是从附图4所示状态执行拟合并时产生的内核执行序列。
附图7是模拟内核存在初始状态时调度得到的内核执行序列。
附图8是将附图6的内核执行序列输出的执行序列的甘特图。
附图9是由以往方法执行附图1所示的DAG图所产生的甘特图。
实施实例:
此调度实例以附图1的任务DAG图作为调度的例子,内核数量为4,此时内核一有任务执行序列T11,T22,所需处理时间为44S。
步骤1:任务图转换模块采用fork节点的方法将DAG任务图转换为树形图结构。
经由此过程,附图1的DAG图转化为附图3的树形图结构。
步骤2:如果节点的入度大于一或子节点是key节点,这些节点称其为key节点,在里面记录前驱节点的任务类型,及其所在的内核执行队列,以拓扑次序依次放入关键节点调队列Key_List。
经由此过程,附图1的DAG图内入度大于1的节点附图3存储在附图3的Key_list里面。
步骤3:创建叶子节点数量的称为内核执行队列的队列,从叶子节点开始将放入内核执行队列,直至父节点的入度大于1,则另起一个内核执行队列存储从另一个叶子节点开始存储直至父节点入度大于一,直至遍历所有叶子节点。
经由此过程,附图3所示的树形图结构转化为附图4的内核调度队列以及Key_list,以节点的形式存储树形图结构的树形结构。
步骤4:开始A过程:{以拓扑次序依次选取Key_List的一个key节点,计算各个子结点完成时间,把key节点从Key_List调度(如果key节点已经存在于某个内核执行队列里则是从某个内核执行队列移动)到使key节点最快开始的内核执行队列,此时拟合并其他子结点与key节点所在内核执行队列,如果两个内核执行队列合并后,不延迟key节点的开始时间,则删除非key节点所在内核执行队列,将其节点按拓扑次序插入key节点所在内核执行队列头部。A过程完成}。
经由此过程,附图4所示的Key_List节点依次调度进入合理的内核执行队列中,这些节点进入内核执行队列触发拟合并队列的过程最终内内核执行队列状态如附图6所示,附图5展示了在不采用拟合关键路径的方法所产生的执行序列。
步骤5:基于现实的核情况,如果内核执行队列数量大于实际核数量,则对内核执行队列两两拟合并选取任务总完成时间最少的合并过程的执行合并(删除非key节点所在内核执行队列,将其节点按拓扑次序插入key节点所在内核执行队列头部),并调用A过程。
经由此过程,附图6所示的内核执行队列可能进行合并,关键节点重新调度进入合理的内核执行队列,由于调度实例假设实际内核数量为4,大于附图5所需的内核数量3,故这一步内核执行队列没有发生改变。
步骤6:如果实际内核有未执行的序列,将实际核里已有的任务放入对应的内核执行队列,并调用A过程。
经由此过程,附图6所示的内核执行队列中,某些内核执行队列头部放入了在任务调度开始前需要执行的任务,此时调用A过程后,最终的内核执行状态如图7所示。
步骤7:将内核执行队列里的节点按拓扑次序导出,形成核内包含其他程序任务的实时调度序列。
经由此过程:依次输出附图7内的节点,作为内核执行序列。
下面将本发明调度技术与现有的较为优秀的多核调度技术进行实例对比。
为满足算法之间的对比,我们以附图6所形成的调度甘特图与附图9所使用的多核调度算法进行对比,可以看出较其更好的完成时间。
由于大部分多核调度算法没有考虑内核紧缺时的调度,在内核紧缺时,一般调度算法无法提供较好的调度方案。而本发明可以尽可能的在内核数量不足以支持最优调度序列时的情况下优化调度序列。
由于大部分多核调度算法没有考虑内核具有未完成的任务时所执行的调度,在内核存在未执行的调度序列时,一般的多核调度算法所提供的调度序列不能合理的实现关键路径任务尽快处理,甚至有死锁,和任务延迟增大的可能。
Claims (2)
1.基于处理器内核动态的实时动态关键路径多核调度方法,其特征是: 任务图转换模块采用fork节点的方法将DAG任务图转换为树形的图结构,将这些节点按照拓扑次序存储于若干个内核任务执行队列(以下称其为内核执行队列),得到一个初步的内核执行序列;基于全部子任务执行状态可预知的前提,确认合并某些内核执行队列,以及调度内核执行队列内某些节点对程序总完成时间的影响,在每一次内核执行队列内节点发生改变时,都可以根据改变后内核执行队列的状态,来确定是否需要调度节点,以及是否合并内核执行队列,以此完成动态的多核任务关键路径调度,使程序基于内核现有情况尽快尽可能节省内核地完成。
2.根据权利要求1 基于处理器内核动态的实时动态关键路径多核调度方法,其特征是:所述的调度方法具体实施步骤如下:
步骤1:任务图转换模块采用fork节点的方法将DAG任务图转换为树形的图结构;
步骤2:如果节点的入度大于一或子节点是key节点,这些节点称其为key节点,在里面记录前驱节点的任务类型,及其所在的内核执行队列,以拓扑次序依次放入关键节点调队列Key_List;
步骤3:创建叶子节点数量的称为内核执行队列的队列,从叶子节点开始将放入内核执行队列,直至父节点的入度大于1,则另起一个内核执行队列存储从另一个叶子节点开始存储直至父节点入度大于一,直至遍历所有叶子节点;
步骤4:开始A过程:{ 以拓扑次序依次选取Key_List的一个key节点,计算各个子结点完成时间,把key节点从Key_List调度(如果key节点已经存在于某个内核执行队列里则是从某个内核执行队列移动)到使key节点最快开始的内核执行队列,此时拟合并其他子结点与key节点所在内核执行队列,如果两个内核执行队列合并后,不延迟key节点的开始时间,则删除非key节点所在内核执行队列,将其节点按拓扑次序插入key节点所在内核执行队列头部,A过程完成 },A过程完成后我们就拥有了N个内核执行队列(里面存储了任务的树形图结构)与一个关键节点调度序列Key_List,每次调用A过程都会使内核执行队列所表示的任务执行序列达到最优;
步骤5:基于现实的核情况,如果内核执行队列数量大于实际核数量,则对内核执行队列两两拟合并选取任务总完成时间最少的合并过程的执行合并(删除非key节点所在内核执行队列,将其节点按拓扑次序插入key节点所在内核执行队列头部),并调用A过程;
步骤6:将实际核里已有的任务放入对应的内核执行队列,并调用A过程;
步骤7:将内核执行队列里的节点按拓扑次序导出,形成核内包含其他程序任务的实时调度序列。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910436868.9A CN110134506A (zh) | 2019-05-24 | 2019-05-24 | 基于处理器内核动态的实时动态关键路径多核调度方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910436868.9A CN110134506A (zh) | 2019-05-24 | 2019-05-24 | 基于处理器内核动态的实时动态关键路径多核调度方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110134506A true CN110134506A (zh) | 2019-08-16 |
Family
ID=67572894
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910436868.9A Pending CN110134506A (zh) | 2019-05-24 | 2019-05-24 | 基于处理器内核动态的实时动态关键路径多核调度方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110134506A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112363819A (zh) * | 2020-12-02 | 2021-02-12 | 深圳市房多多网络科技有限公司 | 大数据任务动态编排调度方法、装置及计算设备 |
CN112817731A (zh) * | 2021-02-25 | 2021-05-18 | 合肥工业大学 | 一种基于节点复制的异构多核系统任务调度方法 |
CN117453379A (zh) * | 2023-12-25 | 2024-01-26 | 麒麟软件有限公司 | Linux系统中AOE网计算任务的调度方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110154346A1 (en) * | 2009-12-23 | 2011-06-23 | Jula Alin N | Task scheduler for cooperative tasks and threads for multiprocessors and multicore systems |
CN103150148A (zh) * | 2013-03-06 | 2013-06-12 | 中国科学院对地观测与数字地球科学中心 | 一种基于任务树的大尺度遥感影像并行镶嵌方法 |
CN103336723A (zh) * | 2013-07-21 | 2013-10-02 | 哈尔滨理工大学 | 基于关键路径的适应处理器内核紧缺调度方法 |
-
2019
- 2019-05-24 CN CN201910436868.9A patent/CN110134506A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110154346A1 (en) * | 2009-12-23 | 2011-06-23 | Jula Alin N | Task scheduler for cooperative tasks and threads for multiprocessors and multicore systems |
CN103150148A (zh) * | 2013-03-06 | 2013-06-12 | 中国科学院对地观测与数字地球科学中心 | 一种基于任务树的大尺度遥感影像并行镶嵌方法 |
CN103336723A (zh) * | 2013-07-21 | 2013-10-02 | 哈尔滨理工大学 | 基于关键路径的适应处理器内核紧缺调度方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112363819A (zh) * | 2020-12-02 | 2021-02-12 | 深圳市房多多网络科技有限公司 | 大数据任务动态编排调度方法、装置及计算设备 |
CN112817731A (zh) * | 2021-02-25 | 2021-05-18 | 合肥工业大学 | 一种基于节点复制的异构多核系统任务调度方法 |
CN112817731B (zh) * | 2021-02-25 | 2022-12-06 | 合肥工业大学 | 一种基于节点复制的异构多核系统任务调度方法 |
CN117453379A (zh) * | 2023-12-25 | 2024-01-26 | 麒麟软件有限公司 | Linux系统中AOE网计算任务的调度方法及系统 |
CN117453379B (zh) * | 2023-12-25 | 2024-04-05 | 麒麟软件有限公司 | Linux系统中AOE网计算任务的调度方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106293950B (zh) | 一种面向集群系统的资源优化管理方法 | |
Warneke et al. | Nephele: efficient parallel data processing in the cloud | |
CN102592198B (zh) | 一种支持组合业务的工作流引擎 | |
CN110134506A (zh) | 基于处理器内核动态的实时动态关键路径多核调度方法 | |
JP4491026B2 (ja) | 情報処理装置、プログラム処理方法及びコンピュータプログラム | |
CN110233802B (zh) | 一种构建一主链多侧链的区块链架构的方法 | |
CN103500119B (zh) | 一种基于预调度的任务分配方法 | |
CN110377406A (zh) | 一种任务调度方法、装置、存储介质和服务器节点 | |
CN105786603B (zh) | 一种基于分布式的高并发业务处理系统及方法 | |
CN106681820A (zh) | 基于消息组合的可扩展大数据计算方法 | |
CN110427253A (zh) | 机器人资源任务周期管控方法及装置 | |
CN110362315A (zh) | 基于dag的软件系统调度方法及装置 | |
Wolf et al. | On the optimization of schedules for MapReduce workloads in the presence of shared scans | |
CN112905339A (zh) | 任务调度执行方法、装置及系统 | |
CN108415766B (zh) | 一种渲染任务动态调度方法 | |
CN114756357A (zh) | 一种基于jvm的非阻塞分布式计划任务调度方法 | |
CN113225269B (zh) | 基于容器的工作流调度方法、装置、系统及存储介质 | |
CN112114877B (zh) | 一种动态补偿线程束warp的方法、处理器及计算机存储介质 | |
WO2023221813A1 (zh) | 分布式数据库的计划执行方法、装置和系统 | |
CN103810258A (zh) | 基于数据仓库的数据汇聚调度方法 | |
CN110275771A (zh) | 一种业务处理方法、物联网计费基础设施系统及存储介质 | |
Jianchao et al. | Design and implementation of scheduling pool scheduling algorithm based on reuse of jobs in spark | |
CN114595041A (zh) | 资源调度系统以及方法 | |
WO2016186531A1 (en) | System and method for synchronizing distributed computing runtimes | |
Cao et al. | Improved DAG tasks stretching algorithm based on multi-core processors |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20190816 |