CN107943561A - 一种面向云计算平台的科学工作流任务调度方法 - Google Patents

一种面向云计算平台的科学工作流任务调度方法 Download PDF

Info

Publication number
CN107943561A
CN107943561A CN201711342748.XA CN201711342748A CN107943561A CN 107943561 A CN107943561 A CN 107943561A CN 201711342748 A CN201711342748 A CN 201711342748A CN 107943561 A CN107943561 A CN 107943561A
Authority
CN
China
Prior art keywords
node
task
scheduling
combination
scheduling set
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.)
Granted
Application number
CN201711342748.XA
Other languages
English (en)
Other versions
CN107943561B (zh
Inventor
耿晓中
潘欣
毛应爽
孙悦
鲍杰
于萍
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Changchun Institute of Applied Chemistry of CAS
Changchun Institute Technology
Original Assignee
Changchun Institute Technology
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Changchun Institute Technology filed Critical Changchun Institute Technology
Priority to CN201711342748.XA priority Critical patent/CN107943561B/zh
Publication of CN107943561A publication Critical patent/CN107943561A/zh
Application granted granted Critical
Publication of CN107943561B publication Critical patent/CN107943561B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明提供一种面向云计算平台的科学工作流任务调度方法,包括以下步骤:任务及任务间的约束关系模型化为DAG图;转换DAG图为in‑tree结构任务图;构造调度集合;调整结点任务En的调度集合Pn;调度集合Pn中的调度组合数量即为所需要的虚拟机数量,将调度集合Pn中的各个调度组合分配给对应的一个虚拟机执行。优点为:本发明通过任务复制技术减小了工作流任务间的通信开销,最小化了任务调度长度,有效地提高了任务调度的效率;通过任务分组技术,有效减少了虚拟机的使用个数;通过合理利用虚拟机的空闲时间,提高了虚拟资源的利用率。

Description

一种面向云计算平台的科学工作流任务调度方法
技术领域
本发明属于云计算系统中面向科学工作流的任务调度技术领域,具体涉及一种面向云计算平台的科学工作流任务调度方法。
背景技术
云计算作为近几年的一个热点问题,吸引了越来越多的学术界及工业界的研究人员。云计算技术是由分布式计算、并行计算和网格计算等发展而来的,利用虚拟化技术把计算资源、存储资源和带宽资源虚拟化为动态可伸缩的虚拟化资源池,以互联网为载体,以服务的方式按需提供给不同的用户使用。
科学工作流是指将一系列在科学研究中遇到的数据管理、计算、分析、展现等工作变成一个个独立的服务,再把这些服务通过数据链接组合在一起,满足研究人员科学实验和数据处理中的需要,从而实现相应的处理与科学计算。由于科学处理的复杂性,科学工作流逐渐变成计算密集型和数据密集型。
科学工作流的计算量和数据量往往非常庞大,常规的计算环境很难满足需要,云计算凭借强大的计算能力和海量的存储能力,成为执行科学工作流的首选计算环境。云计算作为一个商业平台,在既保障云服务提供商利益又要提高用户满意度的前提下,必须有效利用庞大的计算资源去执行科学工作流,因此,迫切需要一个合理有效的任务调度策略,使计算资源被充分利用,科学工作流被高效执行。
因为任务调度本身是NP完全问题,所以只能尝试得到近优解。当前,启发式调度算法被广泛使用,按照算法的思想不同,分为:基于任务复制的调度算法;基于任务分簇的调度算法;表调度算法;基于随机搜索的调度算法。因为任务复制技术能消除任务间的通信开销并保持有效并行性,所以通常情况下,基于任务复制的方法优于其他方法。任务复制典型算法主要包括TDS算法、OSA算法、CPTD算法、TDCS算法和CPFD算法。下面分析上述五种任务复制典型算法的优缺点。
(1)TDS算法是把DAG图中的join结点和它的友好前驱结点调度到同一个虚拟机上,以减少总任务的执行时间。但是该算法没有考虑虚拟机的使用数目。(2)OSA算法尽可能把父任务结点和子任务结点分配到同一个虚拟机上,使当前任务获得最早开始时间,但是该算法只限于局部,并没有从全局出发考虑其他祖先结点,这对于最小化全部任务的makespan是有限的。(3)CPTD算法首先把DAG任务图转化为相应的产品处理树,然后找出关键路径,通过最小化关键路径上的任务结点的完成时间来缩短全体任务结点的执行时间,但是该算法复杂度很高。(4)TDCS算法旨在最小化任务的完成时间,该算法的时间复杂度较低,限制条件较少,可行性很强。但是该算法没有考虑虚拟机的使用数目,也没有考虑虚拟机类型和执行花费。(5)CPFD算法使用探索策略把当前任务分到其父任务所在的虚拟机或者空闲虚拟机上,然后计算相应的最早开始时间,最后把该任务分配到使其具有最早开始时间的虚拟机上。该算法通过递归查找当前任务的最重要双亲(VIP)任务,然后复制该任务到使当前任务具有最早开始时间的虚拟机上,从而缩短任务的执行时间。但是CPFD算法没考虑虚拟机数目的优化,占用了较多的虚拟机资源。
因此,现有的各类任务调度方法,无法满足人们对最小化科学工作流的完成时间和最小化计算资源的使用数量方面的需求。
发明内容
针对现有技术存在的缺陷,本发明提供一种面向云计算平台的科学工作流任务调度方法,可有效解决上述问题。
本发明采用的技术方案如下:
本发明提供一种面向云计算平台的科学工作流任务调度方法,包括以下步骤:
步骤1:科学工作流由多个任务相互协作完成,任务及任务间的约束关系模型化为DAG图;其中,所述DAG图中的每个结点代表一个任务;对于结点任务Ti,其在虚拟机上的任务运行时间为R(Ti);任务间的通信代价为W;当两个任务被分到同一个调度组合时,任务间的通信开销为0;
步骤2:转换DAG图为in-tree结构任务图,具体步骤为:
步骤2.1,对DAG图进行广度优先遍历,遇到出度为d的fork结点时,d≧2,进行如下操作:
(1)如果该fork结点的入度为0,则复制该fork结点d-1次,使该fork结点的每一个后继结点将该fork结点作为独立直接前驱结点;
(2)如果该fork结点的入度不为0,则将该fork结点连同其前驱路径一同复制d-1次,同样使该fork结点的每一个后继结点将该fork结点作为独立直接前驱结点;
步骤2.2,通过以上的结点复制操作,每个fork结点被其后继结点作为一个独立的直接前驱结点,由此得到in-tree结构任务图;
步骤3:构造调度集合,具体步骤为:
步骤3.1,按照层次递增的顺序,同一层次结点按照结点序号递增排序,依次遍历in-tree结构任务图中的所有结点任务,采取如下选择调度策略得到每个结点任务对应的调度集合以及该结点任务对应的调度集合的执行时间;其中,结点任务对应的调度集合由至少一个结点任务对应的调度组合形成;
(1)对于结点任务Ti,如果结点任务Ti的入度为0,即没有直接前驱结点,则结点任务Ti对应的调度集合Pi由一个结点任务Ti对应的调度组合Ei形成;该调度组合Ei中只有结点任务Ti一个成员;即:调度集合Pi={{调度组合Ei}}={{结点任务Ti}};
该结点任务Ti对应的调度集合Pi的执行时间R(Pi)=结点任务Ti对应的调度组合Ei的执行时间R(Ei);其中,R(Ei)=结点任务Ti的任务运行时间R(Ti);
(2)如果结点任务Ti只有一个直接前驱结点,将直接前驱结点记为Tj,直接前驱结点Tj对应的调度集合为调度集合Pj,调度集合Pj的执行时间为R(Pj);
则:直接合并结点任务Ti与其直接前驱结点对应的调度集合Pj,得到结点任务Ti对应的调度集合Pi,即:调度集合Pi={结点任务Ti∪{调度集合Pj}};
结点任务Ti对应的调度集合Pi的执行时间R(Pi)=调度集合Pj的执行时间R(Pj)+结点任务Ti的任务运行时间R(Ti);
(3)如果结点任务Ti为join结点,其包含k个直接前驱结点,通过如下步骤产生结点任务Ti对应的调度集合Pi
步骤1):计算结点任务Ti的每个直接前驱结点所对应的调度集合的执行时间与结点任务Ti和该直接前驱结点之间通信代价之和,将和值记为Y;
按Y值由大到小顺序,将结点任务Ti的各个直接前驱结点排序;排序第1位的直接前驱结点为第1位直接前驱结点,记为Ti s(1);排序第2位的直接前驱结点为第2位直接前驱结点,记为Ti s(2);以此类推;假设共有x个直接前驱结点;排序第x位的直接前驱结点为第x位直接前驱结点,记为Ti s(x);
合并结点任务Ti与第1位直接前驱结点Ti s(1)所对应的调度集合,形成结点任务Ti所对应的第1个调度组合Ei(1),即:第1个调度组合Ei(1)={结点任务Ti∪{Ti s(1)所对应的调度集合}};
如果同时有两个以上的直接前驱结点具有同样的Y值,则选择具有较大通信代价的直接前驱结点形成第1个调度组合Ei(1);通过该步骤,将关键路径上的任务调度到同一个调度组合,有效提前结点任务Ti的开始时间;
步骤2):令k=2;
步骤3):从结点任务Ti余下的直接前驱结点中选择第k位直接前驱结点Ti s(k),计算得到第1个调度组合Ei(1)中除去结点任务Ti外其它结点的总执行时间Q;
分别计算以下两个值:
第一个值:如果合并Ti s(k)到第1个调度组合Ei(1)时,该结点任务Ti的开始运行时间B1,即:B1=Q+R(Ti s(k)),R(Ti s(k))代表第k位直接前驱结点Ti s(k)的任务运行时间;
第二个值:如果不合并Ti s(k)到第1个调度组合Ei(1)时,该结点任务Ti的开始运行时间B2,其中,B2取以下两个值中的最大值,一个是Q;另一个是Ti s(k)对应的调度集合的执行时间与Ti s(k)到结点任务Ti的通信代价的和;
如果B1≤B2,则合并Ti s(k)到第1个调度组合Ei(1)中,形成新的第1个调度组合Ei(1);如果B1>B2,形成第k个调度组合Ei(k),第k个调度组合Ei(k)为Ti s(k)对应的调度集合;
步骤4)令k=k+1;判断k是否大于x,如果不大于,返回步骤3);如果大于,则表明结点任务Ti的所有直接前驱结点均被调度完,统计最终是否有Ei(k),如果没有,结点任务Ti的调度集合Pi={{Ei(1)}};结点任务Ti对应的调度集合Pi的执行时间R(Pi)=第1个调度组合Ei(1)的执行时间=第1个调度组合Ei(1)的各个结点任务的任务运行时间之和;
如果有Ei(k),假设共有z个Ei(k),分别为Ei(k1)、Ei(k2)…Ei(kz),则结点任务Ti的调度集合Pi={{Ei(1)},{Ei(k1)},{Ei(k2)},…,{Ei(kz)}};结点任务Ti对应的调度集合Pi的执行时间R(Pi)=Ei(1)中各个任务结点的运行时间之和;
因此,设共有n个结点任务,当遍历完成最后一个结点任务En时,结点任务En的调度集合Pn区分以下两种情况:
第一种:结点任务En的调度集合Pn={{En(1)}};
第二种:结点任务En的调度集合Pn={{En(1)},{En(k1)},{En(k2)},…,{En(ka)}};其中,a为结点任务En的调度集合中除En(1)的调度组合数量;
步骤4:如果结点任务En的调度集合Pn属于上述第二种情况,则采用以下方法调整结点任务En的调度集合Pn
步骤4.1,在调度集合Pn中统计只调度过一次的任务,形成单次调度任务集;然后,判断En(k1),En(k2),…,En(ka)中是否存在不包含任意一个属于单次调度任务集中的任务的调度组合,如果有,则表明该调度组合为冗余调度组合,删除该冗余调度组合;
步骤4.2,合并调度集合Pn中的调度组合,步骤为:
步骤4.2.1,令结点任务En的调度集合Pn={{En(1)},{En(k1)},{En(k2)},…,{En(ka)}}={{C0},{C1},…,{Ca}};即:En(1)=C0;En(k1)=C1;…;En(ka)=Ca
Cu,Cv∈C,并且v>u;
步骤4.2.2,令u=0;
步骤4.2.3,在Cu中查找空闲时间即slot(Cu);
步骤4.2.4,令v=u+1;
步骤4.2.5,在Cv中搜索没有在Cu中出现的任务,构成一个新的任务组合,表示为Tset(Cv),判断是否满足以下两个规则:
规则1:Tset(Cv)的执行时间小于等于slot(Cu);
规则2:Cv的后继任务的开始时间不能延迟;
如果满足规则,则将Tset(Cv)插入到slot(Cu);
步骤4.2.6,更新slot(Cu),使slot(Cu)=slot(Cu)-Tset(Cv);
步骤4.2.7,令v=v+1;判断v是否大于a,如果不大于,返回步骤4.2.5;如果大于,执行步骤4.2.8;
步骤4.2.8,令u=u+1,判断u是否大于a-1,如果不大于,返回步骤4.2.3;如果大于,执行步骤4.2.9;
步骤4.2.9,得到新的调度集合Pn
步骤5,调度集合Pn中的调度组合数量即为所需要的虚拟机数量,将调度集合Pn中的各个调度组合分配给对应的一个虚拟机执行。
优选的,步骤5具体为:
步骤5.1,根据任务的类型和用户的需求选择虚拟机;虚拟机的数量等于调度集合Pn中的调度组合数量;
步骤5.2,查找出每个虚拟机的可利用的空闲时间,并计算空闲时间长度,再按照空闲时间长度降序排列虚拟机;
步骤5.3,按照调度集合Pn中的各个调度组合的执行时间,降序排列调度集合Pn中的各个调度组合,得到新的调度集合Pn
步骤5.4,从新的调度集合Pn中,依次取出各个调度组合,查找步骤5.2中排列的各虚拟机,选取空闲时间最合适的虚拟机,如果调度组合的执行时间小于等于虚拟机的空闲时间,则分配该调度组合到此虚拟机的空闲时间;否则分配该调度组合到使其具有最早完成时间的虚拟机上,更新虚拟机空闲时间。
本发明提供的一种面向云计算平台的科学工作流任务调度方法具有以下优点:
本发明通过任务复制技术减小了工作流任务间的通信开销,最小化了任务调度长度,有效地提高了任务调度的效率;通过任务分组技术,有效减少了虚拟机的使用个数;通过合理利用虚拟机的空闲时间,提高了虚拟资源的利用率。相比现有技术,本发明在减小科学工作流执行时间和降低用户执行费用,提高用户满意度等方面具有明显优势。
附图说明
图1为本发明提供的一种面向云计算平台的科学工作流任务调度方法的流程示意图;
图2为本发明提供的DAG图的示意图;
图3为本发明提供的in-tree结构任务图的示意图;
图4为调度集合Pn中的调度组合合并前的分组结果示意图;
图5为本发明算法的分组结果图;
图6为CPFD算法的分组结果图;
图7为PPA算法的分组结果图。
具体实施方式
为了使本发明所解决的技术问题、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
为方便对本发明进行理解,首先介绍基础知识:
云计算是将大量用网络连接的计算资源统一管理和调度,构成一个计算资源池向用户按需服务。是一种基于Intel网的超级计算模式,在远程的数据中心里,成千上万台电脑和服务器连接成一片电脑云。
科学工作流是指将一系列在科学研究中遇到的数据管理、计算、分析、展现等工作变成一个个独立的服务,再把这些服务通过数据链接组合在一起,满足研究人员科学实验和数据处理的需要,从而实现相应的处理与科学计算。
云计算的任务调度就是在一个特定的云环境中,根据一定的资源使用规则,将资源在不同的使用者之间进行调整的过程,该过程最终把所有任务分配到合适的计算资源上。因此,考虑如何合理地分配和利用云环境中的资源、有效地调度用户提交的海量任务成为云计算研究的重点之一。
本发明的主要技术构思为:本发明首先通过任务复制技术复制fork结点,转化DAG图为in-tree结构任务图;然后考察当前任务的所有直接前驱结点,而不仅仅考虑关键直接前驱结点,只要能提前当前任务的最早开始时间,就把该任务分到其直接前驱结点所在的任务调度集合中,该操作通过消除必要的通信开销,使当前任务具有最早开始时间;然后通过调整任务调度集合中的任务调度组合,减少了任务调度组合的个数,从而最小化了云环境中虚拟机的使用数量;最后通过合理选择虚拟机,恰当利用虚拟机的空闲时间,提高了计算资源的利用率。相比现有技术,本发明在最小化科学工作流的完成时间和最小化计算资源的使用数量方面具有明显优势。
参考图1,本发明提供一种面向云计算平台的科学工作流任务调度方法,包括以下步骤:
步骤1:科学工作流由多个任务相互协作完成,任务及任务间的约束关系模型化为DAG图;
其中,所述DAG图中的每个结点代表一个任务;对于结点任务Ti,其在虚拟机上的任务运行时间为R(Ti);任务间的通信代价为W;当两个任务被分到同一个调度组合时,任务间的通信开销为0;
参考图2,为一种具体的DAG图示例,在图2中,共有10个结点任务,例如,对于T4结点任务,其在虚拟机上的任务运行时间R(T4)为4;结点任务T4和结点任务T9之间的通信代价W为8。
步骤2:转换DAG图为in-tree结构任务图,具体步骤为:
步骤2.1,对DAG图进行广度优先遍历,遇到出度为d的fork结点时,d≧2,进行如下操作:
(1)如果该fork结点的入度为0,则复制该fork结点d-1次,使该fork结点的每一个后继结点将该fork结点作为独立直接前驱结点;
(2)如果该fork结点的入度不为0,则将该fork结点连同其前驱路径一同复制d-1次,同样使该fork结点的每一个后继结点将该fork结点作为独立直接前驱结点;
步骤2.2,通过以上的结点复制操作,每个fork结点被其后继结点作为一个独立的直接前驱结点,由此得到in-tree结构任务图;
对于图2,转换为in-tree结构任务图的步骤为:
首先遍历到T1结点,由于其入度为0,出度d为5,因此,复制T1结点4次,再加上原T1结点,由此共得到5个T1结点;5个T1结点分别对应T2、T3、T4、T5、T6这五个后继结点;
然后遍历到T2结点,由于其入度为1,出度d为2,因此,将T2结点连同其前驱路径,即T1结点一同复制1次,因此,T1结点的数量增加1个,T2结点的数量增加1个,由此共得到2个T2结点,每个T2结点均具有一个独立的直接前驱结点T1,两个T2结点分别对应T7、T8这两个后继结点;
以此类推,当遍历完成图2中的10个结点后,生成图3所示的in-tree结构任务图。
步骤3:构造调度集合,具体步骤为:
步骤3.1,按照层次递增的顺序,同一层次结点按照结点序号递增排序,依次遍历in-tree结构任务图中的所有结点任务,采取如下选择调度策略得到每个结点任务对应的调度集合以及该结点任务对应的调度集合的执行时间;其中,结点任务对应的调度集合由至少一个结点任务对应的调度组合形成;
(1)对于结点任务Ti,如果结点任务Ti的入度为0,即没有直接前驱结点,则结点任务Ti对应的调度集合Pi由一个结点任务Ti对应的调度组合Ei形成;该调度组合Ei中只有结点任务Ti一个成员;即:调度集合Pi={{调度组合Ei}}={{结点任务Ti}};
该结点任务Ti对应的调度集合Pi的执行时间R(Pi)=结点任务Ti对应的调度组合Ei的执行时间R(Ei);其中,R(Ei)=结点任务Ti的任务运行时间R(Ti);
(2)如果结点任务Ti只有一个直接前驱结点,将直接前驱结点记为Tj,直接前驱结点Tj对应的调度集合为调度集合Pj,调度集合Pj的执行时间为R(Pj);
则:直接合并结点任务Ti与其直接前驱结点对应的调度集合Pj,得到结点任务Ti对应的调度集合Pi,即:调度集合Pi={结点任务Ti∪{调度集合Pj}};
结点任务Ti对应的调度集合Pi的执行时间R(Pi)=调度集合Pj的执行时间R(Pj)+结点任务Ti的任务运行时间R(Ti);
(3)如果结点任务Ti为join结点,其包含k个直接前驱结点,通过如下步骤产生结点任务Ti对应的调度集合Pi
步骤1):计算结点任务Ti的每个直接前驱结点所对应的调度集合的执行时间与结点任务Ti和该直接前驱结点之间通信代价之和,将和值记为Y;
按Y值由大到小顺序,将结点任务Ti的各个直接前驱结点排序;排序第1位的直接前驱结点为第1位直接前驱结点,记为Ti s(1);排序第2位的直接前驱结点为第2位直接前驱结点,记为Ti s(2);以此类推;假设共有x个直接前驱结点;排序第x位的直接前驱结点为第x位直接前驱结点,记为Ti s(x);
合并结点任务Ti与第1位直接前驱结点Ti s(1)所对应的调度集合,形成结点任务Ti所对应的第1个调度组合Ei(1),即:第1个调度组合Ei(1)={结点任务Ti∪{Ti s(1)所对应的调度集合}};
如果同时有两个以上的直接前驱结点具有同样的Y值,则选择具有较大通信代价的直接前驱结点形成第1个调度组合Ei(1);通过该步骤,将关键路径上的任务调度到同一个调度组合,有效提前结点任务Ti的开始时间;
步骤2):令k=2;
步骤3):从结点任务Ti余下的直接前驱结点中选择第k位直接前驱结点Ti s(k),计算得到第1个调度组合Ei(1)中除去结点任务Ti外其它结点的总执行时间Q;
分别计算以下两个值:
第一个值:如果合并Ti s(k)到第1个调度组合Ei(1)时,该结点任务Ti的开始运行时间B1,即:B1=Q+R(Ti s(k)),R(Ti s(k))代表第k位直接前驱结点Ti s(k)的任务运行时间;
第二个值:如果不合并Ti s(k)到第1个调度组合Ei(1)时,该结点任务Ti的开始运行时间B2,其中,B2取以下两个值中的最大值,一个是Q;另一个是Ti s(k)对应的调度集合的执行时间与Ti s(k)到结点任务Ti的通信代价的和;
如果B1≤B2,则合并Ti s(k)到第1个调度组合Ei(1)中,形成新的第1个调度组合Ei(1);如果B1>B2,形成第k个调度组合Ei(k),第k个调度组合Ei(k)为Ti s(k)对应的调度集合;
步骤4)令k=k+1;判断k是否大于x,如果不大于,返回步骤3);如果大于,则表明结点任务Ti的所有直接前驱结点均被调度完,统计最终是否有Ei(k),如果没有,结点任务Ti的调度集合Pi={{Ei(1)}};结点任务Ti对应的调度集合Pi的执行时间R(Pi)=第1个调度组合Ei(1)的执行时间=第1个调度组合Ei(1)的各个结点任务的任务运行时间之和;
如果有Ei(k),假设共有z个Ei(k),分别为Ei(k1)、Ei(k2)…Ei(kz),则结点任务Ti的调度集合Pi={{Ei(1)},{Ei(k1)},{Ei(k2)},…,{Ei(kz)}};结点任务Ti对应的调度集合Pi的执行时间R(Pi)=Ei(1)中各个任务结点的运行时间之和;
因此,设共有n个结点任务,当遍历完成最后一个结点任务En时,结点任务En的调度集合Pn区分以下两种情况:
第一种:结点任务En的调度集合Pn={{En(1)}};
第二种:结点任务En的调度集合Pn={{En(1)},{En(k1)},{En(k2)},…,{En(ka)}};其中,a为结点任务En的调度集合中除En(1)的调度组合数量;
为方便对步骤3进行理解,以图3所示的in-tree结构任务图为例,介绍调度集合的构建过程:
1)采用层次递增的顺序,同一层次结点按照结点序号递增排序,依次遍历in-tree结构任务图中的所有结点任务。
对于图3,共有10个结点,遍历的先后顺序为:T1、T2、T3、T4、T5、T6、T7、T8、T9、T10
2)因此,首先遍历到T1结点,其入度为0,即没有直接前驱结点,因此,调度集合P1={{调度组合E1}}={{结点任务T1}};
调度集合P1的执行时间R(P1)=结点任务T1对应的调度组合E1的执行时间R(E1),而R(E1)=结点任务T1的任务运行时间R(T1)=3;
3)然后,遍历到T2结点,T2结点只有一个直接前驱结点T1,因此,直接合并结点任务T2与其直接前驱结点对应的调度集合P1,得到结点任务T2对应的调度集合P2,即:调度集合P2={结点任务T2∪{调度集合P1}}={结点任务T1,结点任务T2};
调度集合P2的执行时间R(P2)=调度集合P1的执行时间R(P1)+结点任务T2的任务运行时间R(T2)=3+4=7;
4)然后,再依次遍历到T3结点、T4结点、T5结点、T6结点和T7结点;T3结点、T4结点、T5结点、T6结点和T7结点均为只有一个直接前驱结点的情况,因此,其计算原理与T2结点的计算原理相同,在此不再赘述,仅给出遍历结果如下:
调度集合P3={结点任务T1,结点任务T3};执行时间R(P3)=6;
调度集合P4={结点任务T1,结点任务T4};执行时间R(P4)=7;
调度集合P5={结点任务T1,结点任务T5};执行时间R(P5)=7;
调度集合P6={结点任务T1,结点任务T6};执行时间R(P6)=5;
调度集合P7={结点任务T1,结点任务T2,结点任务T7};执行时间R(P7)=10;
5)然后,再遍历到T8结点,T8结点为join结点,其包含3个直接前驱结点,分别为T2结点、T3结点和T4结点,通过如下步骤产生结点任务T8对应的调度集合P8
5.1)T2结点所对应的调度集合P2的执行时间R(P2)为7,结点任务T8和T2结点之间通信代价为15,因此,T2结点对应的Y值为22;
T3结点所对应的调度集合P3的执行时间R(P3)为6,结点任务T8和T3结点之间通信代价为6,因此,T3结点对应的Y值为12;
T4结点所对应的调度集合P4的执行时间R(P4)为7,结点任务T8和T4结点之间通信代价为2,因此,T4结点对应的Y值为9;
5.2)按Y值由大到小顺序,将结点任务T8的各个直接前驱结点排序,分别为:T2结点、T3结点和T4结点;即:T2结点为第1位直接前驱结点;T3结点为第2位直接前驱结点;T4结点为第3位直接前驱结点;
5.3)合并结点任务T8与第1位直接前驱结点T2所对应的调度集合P2,形成结点任务T8所对应的第1个调度组合E8(1),即:第1个调度组合E8(1)={结点任务T8∪{调度集合P2}}={结点任务T1,结点任务T2,结点任务T8};
5.4)计算得到第1个调度组合E8(1)中除去结点任务T8外其它结点的总执行时间Q,Q为7;
分别计算以下两个值:
第一个值:如果合并T3结点到第1个调度组合E8(1)时,该结点任务T8的开始运行时间B1,即:B1=Q+R(T3)),R(T3)代表T3的任务运行时间,为3;因此,B1=7+3=10;
第二个值:如果不合并T3结点到第1个调度组合E8(1)时,该结点任务T8的开始运行时间B2,其中,B2取以下两个值中的最大值,一个是Q,值为7;另一个是T3结点对应的调度集合的执行时间与T3结点到结点任务T8的通信代价的和,为6+6=12;因此,B2取12;
此时,B1≤B2,因此,合并T3结点到第1个调度组合E8(1)中,形成新的第1个调度组合E8(1)={结点任务T1,结点任务T2,结点任务T3,结点任务T8};第1个调度组合E8(1)的执行时间为其包含的结点任务的运行时间之和,为15;
5.5)在得到新的第1个调度组合E8(1)={结点任务T1,结点任务T2,结点任务T3,结点任务T8}后,用新的第1个调度组合E8(1)={结点任务T1,结点任务T2,结点任务T3,结点任务T8}更新旧的E8(1)={结点任务T1,结点任务T2,结点任务T8},然后,采用与5.4)的计算步骤相同构思,判断是否将结点任务T4合并到新的第1个调度组合E8(1)中,通过计算发现,如果结点任务T4合并到第1个调度组合E8(1)={结点任务T1,结点任务T2,结点任务T3,结点任务T8}中,此时B1=14;如果不合并,B2=10,B1>B2,因此,不合并结点任务T4,此时,形成调度组合E8(2)={结点任务T1,结点任务T4}。
因此,最终结点任务T8的调度集合P8={{E8(1)},{E8(2)}}={{结点任务T1,结点任务T2,结点任务T3,结点任务T8)},{结点任务T1,结点任务T4}};结点任务T8对应的调度集合P8的执行时间R(P8)=E8(1)中各个任务结点的运行时间之和=15;
6)然后,再遍历到T9结点,T9结点为join结点,其计算原理和方法与T8结点,在此不再赘述,结果为:
结点任务T9的调度集合P9={{结点任务T1,结点任务T4,结点任务T5,结点任务T9)},{结点任务T1,结点任务T3}};结点任务T9对应的调度集合P9的执行时间R(P9)=14;
7)然后,再遍历到T10结点,T10结点为join结点,其计算原理和方法与T8结点,在此不再赘述,结果为:
结点任务T10的调度集合P10={{结点任务T1,结点任务T2,结点任务T3,结点任务T8,结点任务T10)},{结点任务T1,结点任务T4},{结点任务T1,结点任务T4,结点任务T5,结点任务T9)},{结点任务T1,结点任务T3},{结点任务T1,结点任务T6},{结点任务T1,结点任务T2,结点任务T7}};结点任务T10对应的调度集合P10的执行时间R(P10)=24。
各结点对应的调度集合Task groups以及调度集合的执行时间execution time见下表:
通过本步骤,主要目的即为得到调度集合P10
步骤4:如果结点任务En的调度集合Pn属于上述第二种情况,则采用以下方法调整结点任务En的调度集合Pn
步骤4.1,在调度集合Pn中统计只调度过一次的任务,形成单次调度任务集;然后,判断En(k1),En(k2),…,En(ka)中是否存在不包含任意一个属于单次调度任务集中的任务的调度组合,如果有,则表明该调度组合为冗余调度组合,删除该冗余调度组合;
步骤4.2,合并调度集合Pn中的调度组合,步骤为:
步骤4.2.1,令结点任务En的调度集合Pn={{En(1)},{En(k1)},{En(k2)},…,{En(ka)}}={{C0},{C1},…,{Ca}};即:En(1)=C0;En(k1)=C1;…;En(ka)=Ca
Cu,Cv∈C,并且v>u;
步骤4.2.2,令u=0;
步骤4.2.3,在Cu中查找空闲时间即slot(Cu);
步骤4.2.4,令v=u+1;
步骤4.2.5,在Cv中搜索没有在Cu中出现的任务,构成一个新的任务组合,表示为Tset(Cv),判断是否满足以下两个规则:
规则1:Tset(Cv)的执行时间小于等于slot(Cu);
规则2:Cv的后继任务的开始时间不能延迟;
如果满足规则,则将Tset(Cv)插入到slot(Cu);
步骤4.2.6,更新slot(Cu),使slot(Cu)=slot(Cu)-Tset(Cv);
步骤4.2.7,令v=v+1;判断v是否大于a,如果不大于,返回步骤4.2.5;如果大于,执行步骤4.2.8;
步骤4.2.8,令u=u+1,判断u是否大于a-1,如果不大于,返回步骤4.2.3;如果大于,执行步骤4.2.9;
步骤4.2.9,得到新的调度集合Pn
为方便对步骤4进行理解,以图3所示的in-tree结构任务图为例,介绍调度集合的调整过程:
1)对于结点任务T10的调度集合P10={{T1,T2,T3,T8,T10},{T1,T4},{T1,T4,T5,T9},{T1,T3},{T1,T6},{T1,T2,T7}};
统计只调度过一次的任务,形成单次调度任务集{T5,T6,T7,T8,T9,T10};因此,调度集合P10中的{T1,T4}和{T1,T3}不包含任意一个属于单次调度任务集中的任务的调度组合,需删除调度集合P10中的{T1,T4}和{T1,T3},由此得到新的调度集合P10={{T1,T2,T3,T8,T10},{T1,T4,T5,T9},{T1,T6},{T1,T2,T7}}。
2)调度集合P10={{T1,T2,T3,T8,T10},{T1,T4,T5,T9},{T1,T6},{T1,T2,T7}}。因此,C0={T1,T2,T3,T8,T10};C1={T1,T4,T5,T9};C2={T1,T6};C3={T1,T2,T7};
2.1)首先在C0中查找空闲时间即slot(C0),发现slot(C0),如图4所示,介于T8和T10之间,此时slot(C0)=22-15=7;
本步骤中,调度组合Cz,z等于0,1…(a-1),在调度组合Cz中查找空闲时间的方法为:
考察Cz中两个连续任务Tc和Td之间是否有空闲时间的公式如下:
Ts∈pred(Td),表示Ts是Td的直接前驱任务,ct(Ts)是任务Ts的完成时间,W(Ts,Td)是任务Ts和任务Td之间的通信代价。ct(Tc)是任务Tc的完成时间。
2.2)在C1中搜索没有在C0中出现的任务,构成一个新的任务组合,表示为Tset(C1)={T4,T5,T9},Tset(C1)的执行时间=R(T4)+R(T5)+R(T9)=4+4+3=11;
判断是否满足以下两个规则:
规则1:Tset(C1)的执行时间小于等于slot(C0);
规则2:Cv的后继任务的开始时间不能延迟;
通过比较发现,不满足规则1,因此,Tset(C1)不能插入到slot(C0);slot(C0)仍然等于9;
2.3)采用与步骤2.2)同样的方法处理C2,Tset(C2)={T6},Tset(C2)的执行时间=R(T2)=2;Tset(C2)的后继结点是T10,T10开始时间是22,满足规则1和规则2,因此,插入T6到C0中的slot(C0),C0={T1,T2,T3,T8,T6,T10},更新slot(C0)=slot(C0)-Tset(C2)=7-2=5;
2.4)采用与步骤2.2)同样的方法处理C3,Tset(C3)={T7},Tset(C3)的执行时间=3,满足规则1和规则2,因此,插入T7到C0中的slot(C0),C0={T1,T2,T3,T7,T8,T6,T10},更新slot(C0)=5-3=2;
2.5)然后,由于C2和C3已插入到slot(C0)中;因此,循环结束。
最终得到的调度集合P10={{T1,T2,T3,T8,T6,T7,T10},{T1,T4,T5,T9}}。最小执行时间是24。
如图4所示,为调度集合Pn中的调度组合合并前的分组结果示意图。如图5所示,为调度集合Pn中的调度组合采用本发明算法进行合并后的分组结果示意图。
步骤5,调度集合Pn中的调度组合数量即为所需要的虚拟机数量,将调度集合Pn中的各个调度组合分配给对应的一个虚拟机执行。
步骤5具体为:
步骤5.1,根据任务的类型和用户的需求选择虚拟机;虚拟机的数量等于调度集合Pn中的调度组合数量;
步骤5.2,查找出每个虚拟机的可利用的空闲时间,并计算空闲时间长度,再按照空闲时间长度降序排列虚拟机;
步骤5.3,按照调度集合Pn中的各个调度组合的执行时间,降序排列调度集合Pn中的各个调度组合,得到新的调度集合Pn
步骤5.4,从新的调度集合Pn中,依次取出各个调度组合,查找步骤5.2中排列的各虚拟机,选取空闲时间最合适的虚拟机,如果调度组合的执行时间小于等于虚拟机的空闲时间,则分配该调度组合到此虚拟机的空闲时间;否则分配该调度组合到使其具有最早完成时间的虚拟机上,更新虚拟机空闲时间。
由此可见,本发明中,通过步骤2采用任务复制技术,复制fork任务,使每一个任务结点都有其独立前驱结点,为科学工作流任务的合理分组做好前期准备;通过步骤3的任务分组技术,消除了关键任务与部分非关键任务之间的通信开销,最小化了工作流的执行时间;通过步骤4合理利用任务组的空闲时间,调整任务调度集合,去掉多余的调度组合,从而减少了虚拟机的使用数目,减少了云计算供应商的运行成本,降低了用户的执行费用;通过步骤5合理利用虚拟机的空闲时间,提高了虚拟机的资源利用率,为云计算供应商减少了计算资源的支出。本发明不仅考虑云计算提供商的利益,而且保障了用户的服务质量,使云计算用户和供应商均有受益。本发明的关键点是任务复制和任务分组技术的综合使用,减小了任务间的通信开销,最小化了工作流的执行时间,减小了虚拟机的使用个数,提高了虚拟资源的利用率。科学工作流任务调度的5个步骤,尤其是步骤3、4、5步骤是本发明的保护点。
模拟实验和结果分析:
因为任务复制和任务分组是本发明算法的关键技术,所以首先对比本发明算法和传统CPFD算法和PPA算法的分组策略,如图5、图6和图7所示,分别为本发明算法、CPFD算法和PPA算法的分组结果。
通过对比图5、图6和图7,可以看出,本发明算法共分为两组,需要使用两台虚拟机;CPFD算法共分为六组,需要使用六台虚拟机;PPA算法共分为四组,需要使用四台虚拟机;可见,本发明算法的分组数最小,所使用的虚拟机的数量最少。另外,对比图5、图6和图7,PPA算法的完成时间是26,CPFD算法的完成时间是24,本发明算法的完成时间是24,可见,本发明算法的完成时间小于PPA算法,不大于CPFD算法,保证了总任务完成时间最小。
对于面向云计算环境的科学工作流,本发明提出了一种基于任务复制和任务分组技术的启发式任务调度方法,本发明通过任务复制技术减小了工作流任务间的通信开销,最小化了任务调度长度,有效地提高了任务调度的效率;通过任务分组技术,有效减少了虚拟机的使用个数;通过合理利用虚拟机的空闲时间,提高了虚拟资源的利用率。相比现有技术,本发明在减小科学工作流执行时间和降低用户执行费用,提高用户满意度等方面具有明显优势。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。

Claims (2)

1.一种面向云计算平台的科学工作流任务调度方法,其特征在于,包括以下步骤:
步骤1:科学工作流由多个任务相互协作完成,任务及任务间的约束关系模型化为DAG图;其中,所述DAG图中的每个结点代表一个任务;对于结点任务Ti,其在虚拟机上的任务运行时间为R(Ti);任务间的通信代价为W;当两个任务被分到同一个调度组合时,任务间的通信开销为0;
步骤2:转换DAG图为in-tree结构任务图,具体步骤为:
步骤2.1,对DAG图进行广度优先遍历,遇到出度为d的fork结点时,d≧2,进行如下操作:
(1)如果该fork结点的入度为0,则复制该fork结点d-1次,使该fork结点的每一个后继结点将该fork结点作为独立直接前驱结点;
(2)如果该fork结点的入度不为0,则将该fork结点连同其前驱路径一同复制d-1次,同样使该fork结点的每一个后继结点将该fork结点作为独立直接前驱结点;
步骤2.2,通过以上的结点复制操作,每个fork结点被其后继结点作为一个独立的直接前驱结点,由此得到in-tree结构任务图;
步骤3:构造调度集合,具体步骤为:
步骤3.1,按照层次递增的顺序,同一层次结点按照结点序号递增排序,依次遍历in-tree结构任务图中的所有结点任务,采取如下选择调度策略得到每个结点任务对应的调度集合以及该结点任务对应的调度集合的执行时间;其中,结点任务对应的调度集合由至少一个结点任务对应的调度组合形成;
(1)对于结点任务Ti,如果结点任务Ti的入度为0,即没有直接前驱结点,则结点任务Ti对应的调度集合Pi由一个结点任务Ti对应的调度组合Ei形成;该调度组合Ei中只有结点任务Ti一个成员;即:调度集合Pi={{调度组合Ei}}={{结点任务Ti}};
该结点任务Ti对应的调度集合Pi的执行时间R(Pi)=结点任务Ti对应的调度组合Ei的执行时间R(Ei);其中,R(Ei)=结点任务Ti的任务运行时间R(Ti);
(2)如果结点任务Ti只有一个直接前驱结点,将直接前驱结点记为Tj,直接前驱结点Tj对应的调度集合为调度集合Pj,调度集合Pj的执行时间为R(Pj);
则:直接合并结点任务Ti与其直接前驱结点对应的调度集合Pj,得到结点任务Ti对应的调度集合Pi,即:调度集合Pi={结点任务Ti∪{调度集合Pj}};
结点任务Ti对应的调度集合Pi的执行时间R(Pi)=调度集合Pj的执行时间R(Pj)+结点任务Ti的任务运行时间R(Ti);
(3)如果结点任务Ti为join结点,其包含k个直接前驱结点,通过如下步骤产生结点任务Ti对应的调度集合Pi
步骤1):计算结点任务Ti的每个直接前驱结点所对应的调度集合的执行时间与结点任务Ti和该直接前驱结点之间通信代价之和,将和值记为Y;
按Y值由大到小顺序,将结点任务Ti的各个直接前驱结点排序;排序第1位的直接前驱结点为第1位直接前驱结点,记为Ti s(1);排序第2位的直接前驱结点为第2位直接前驱结点,记为Ti s(2);以此类推;假设共有x个直接前驱结点;排序第x位的直接前驱结点为第x位直接前驱结点,记为Ti s(x);
合并结点任务Ti与第1位直接前驱结点Ti s(1)所对应的调度集合,形成结点任务Ti所对应的第1个调度组合Ei(1),即:第1个调度组合Ei(1)={结点任务Ti∪{Ti s(1)所对应的调度集合}};
如果同时有两个以上的直接前驱结点具有同样的Y值,则选择具有较大通信代价的直接前驱结点形成第1个调度组合Ei(1);通过该步骤,将关键路径上的任务调度到同一个调度组合,有效提前结点任务Ti的开始时间;
步骤2):令k=2;
步骤3):从结点任务Ti余下的直接前驱结点中选择第k位直接前驱结点Ti s(k),计算得到第1个调度组合Ei(1)中除去结点任务Ti外其它结点的总执行时间Q;
分别计算以下两个值:
第一个值:如果合并Ti s(k)到第1个调度组合Ei(1)时,该结点任务Ti的开始运行时间B1,即:B1=Q+R(Ti s(k)),R(Ti s(k))代表第k位直接前驱结点Ti s(k)的任务运行时间;
第二个值:如果不合并Ti s(k)到第1个调度组合Ei(1)时,该结点任务Ti的开始运行时间B2,其中,B2取以下两个值中的最大值,一个是Q;另一个是Ti s(k)对应的调度集合的执行时间与Ti s(k)到结点任务Ti的通信代价的和;
如果B1≤B2,则合并Ti s(k)到第1个调度组合Ei(1)中,形成新的第1个调度组合Ei(1);如果B1>B2,形成第k个调度组合Ei(k),第k个调度组合Ei(k)为Ti s(k)对应的调度集合;
步骤4)令k=k+1;判断k是否大于x,如果不大于,返回步骤3);如果大于,则表明结点任务Ti的所有直接前驱结点均被调度完,统计最终是否有Ei(k),如果没有,结点任务Ti的调度集合Pi={{Ei(1)}};结点任务Ti对应的调度集合Pi的执行时间R(Pi)=第1个调度组合Ei(1)的执行时间=第1个调度组合Ei(1)的各个结点任务的任务运行时间之和;
如果有Ei(k),假设共有z个Ei(k),分别为Ei(k1)、Ei(k2)…Ei(kz),则结点任务Ti的调度集合Pi={{Ei(1)},{Ei(k1)},{Ei(k2)},…,{Ei(kz)}};结点任务Ti对应的调度集合Pi的执行时间R(Pi)=Ei(1)中各个任务结点的运行时间之和;
因此,设共有n个结点任务,当遍历完成最后一个结点任务En时,结点任务En的调度集合Pn区分以下两种情况:
第一种:结点任务En的调度集合Pn={{En(1)}};
第二种:结点任务En的调度集合Pn={{En(1)},{En(k1)},{En(k2)},…,{En(ka)}};其中,a为结点任务En的调度集合中除En(1)的调度组合数量;
步骤4:如果结点任务En的调度集合Pn属于上述第二种情况,则采用以下方法调整结点任务En的调度集合Pn
步骤4.1,在调度集合Pn中统计只调度过一次的任务,形成单次调度任务集;然后,判断En(k1),En(k2),…,En(ka)中是否存在不包含任意一个属于单次调度任务集中的任务的调度组合,如果有,则表明该调度组合为冗余调度组合,删除该冗余调度组合;
步骤4.2,合并调度集合Pn中的调度组合,步骤为:
步骤4.2.1,令结点任务En的调度集合Pn={{En(1)},{En(k1)},{En(k2)},…,{En(ka)}}={{C0},{C1},…,{Ca}};即:En(1)=C0;En(k1)=C1;…;En(ka)=Ca
Cu,Cv∈C,并且v>u;
步骤4.2.2,令u=0;
步骤4.2.3,在Cu中查找空闲时间即slot(Cu);
步骤4.2.4,令v=u+1;
步骤4.2.5,在Cv中搜索没有在Cu中出现的任务,构成一个新的任务组合,表示为Tset(Cv),判断是否满足以下两个规则:
规则1:Tset(Cv)的执行时间小于等于slot(Cu);
规则2:Cv的后继任务的开始时间不能延迟;
如果满足规则,则将Tset(Cv)插入到slot(Cu);
步骤4.2.6,更新slot(Cu),使slot(Cu)=slot(Cu)-Tset(Cv);
步骤4.2.7,令v=v+1;判断v是否大于a,如果不大于,返回步骤4.2.5;如果大于,执行步骤4.2.8;
步骤4.2.8,令u=u+1,判断u是否大于a-1,如果不大于,返回步骤4.2.3;如果大于,执行步骤4.2.9;
步骤4.2.9,得到新的调度集合Pn
步骤5,调度集合Pn中的调度组合数量即为所需要的虚拟机数量,将调度集合Pn中的各个调度组合分配给对应的一个虚拟机执行。
2.根据权利要求1所述的面向云计算平台的科学工作流任务调度方法,其特征在于,步骤5具体为:
步骤5.1,根据任务的类型和用户的需求选择虚拟机;虚拟机的数量等于调度集合Pn中的调度组合数量;
步骤5.2,查找出每个虚拟机的可利用的空闲时间,并计算空闲时间长度,再按照空闲时间长度降序排列虚拟机;
步骤5.3,按照调度集合Pn中的各个调度组合的执行时间,降序排列调度集合Pn中的各个调度组合,得到新的调度集合Pn
步骤5.4,从新的调度集合Pn中,依次取出各个调度组合,查找步骤5.2中排列的各虚拟机,选取空闲时间最合适的虚拟机,如果调度组合的执行时间小于等于虚拟机的空闲时间,则分配该调度组合到此虚拟机的空闲时间;否则分配该调度组合到使其具有最早完成时间的虚拟机上,更新虚拟机空闲时间。
CN201711342748.XA 2017-12-14 2017-12-14 一种面向云计算平台的科学工作流任务调度方法 Active CN107943561B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711342748.XA CN107943561B (zh) 2017-12-14 2017-12-14 一种面向云计算平台的科学工作流任务调度方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711342748.XA CN107943561B (zh) 2017-12-14 2017-12-14 一种面向云计算平台的科学工作流任务调度方法

Publications (2)

Publication Number Publication Date
CN107943561A true CN107943561A (zh) 2018-04-20
CN107943561B CN107943561B (zh) 2019-06-11

Family

ID=61943328

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711342748.XA Active CN107943561B (zh) 2017-12-14 2017-12-14 一种面向云计算平台的科学工作流任务调度方法

Country Status (1)

Country Link
CN (1) CN107943561B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108897625A (zh) * 2018-07-06 2018-11-27 陈霖 基于dag模型的并行调度方法
CN109857532A (zh) * 2019-01-22 2019-06-07 杭州电子科技大学 基于蒙特卡洛树搜索的dag任务调度方法
CN112379998A (zh) * 2020-10-20 2021-02-19 广东工业大学 一种基于任务融合和任务调度的切换时延优化方法
CN117891584A (zh) * 2024-03-15 2024-04-16 福建顶点软件股份有限公司 基于dag分组的任务并行度调度方法、介质和设备

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102360246A (zh) * 2011-10-14 2012-02-22 武汉理工大学 一种异构分布式系统中基于自适应阈值的节能调度方法
CN102681889A (zh) * 2012-04-27 2012-09-19 电子科技大学 一种云计算开放平台的调度方法
CN102799475A (zh) * 2012-06-29 2012-11-28 东南大学 一种基于任务复制的多复本容错并行任务调度方法
CN103235742A (zh) * 2013-04-07 2013-08-07 山东大学 多核集群服务器上基于依赖度的并行任务分组调度方法
CN103473134A (zh) * 2013-09-23 2013-12-25 哈尔滨工程大学 一种异构多核处理器的依赖任务调度方法
CN104778076A (zh) * 2015-04-27 2015-07-15 东南大学 一种云服务工作流调度方法
CN107015856A (zh) * 2017-03-30 2017-08-04 青海大学 云环境下科学工作流中的任务调度方案生成方法及装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102360246A (zh) * 2011-10-14 2012-02-22 武汉理工大学 一种异构分布式系统中基于自适应阈值的节能调度方法
CN102681889A (zh) * 2012-04-27 2012-09-19 电子科技大学 一种云计算开放平台的调度方法
CN102799475A (zh) * 2012-06-29 2012-11-28 东南大学 一种基于任务复制的多复本容错并行任务调度方法
CN103235742A (zh) * 2013-04-07 2013-08-07 山东大学 多核集群服务器上基于依赖度的并行任务分组调度方法
CN103473134A (zh) * 2013-09-23 2013-12-25 哈尔滨工程大学 一种异构多核处理器的依赖任务调度方法
CN104778076A (zh) * 2015-04-27 2015-07-15 东南大学 一种云服务工作流调度方法
CN107015856A (zh) * 2017-03-30 2017-08-04 青海大学 云环境下科学工作流中的任务调度方案生成方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
耿晓中: "基于多核分布式环境下的任务调度关键技术研究", 《中国博士学位论文全文数据库信息科技辑》 *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108897625A (zh) * 2018-07-06 2018-11-27 陈霖 基于dag模型的并行调度方法
CN109857532A (zh) * 2019-01-22 2019-06-07 杭州电子科技大学 基于蒙特卡洛树搜索的dag任务调度方法
CN109857532B (zh) * 2019-01-22 2020-11-17 杭州电子科技大学 基于蒙特卡洛树搜索的dag任务调度方法
CN112379998A (zh) * 2020-10-20 2021-02-19 广东工业大学 一种基于任务融合和任务调度的切换时延优化方法
CN112379998B (zh) * 2020-10-20 2022-11-15 广东工业大学 一种基于任务融合和任务调度的切换时延优化方法
CN117891584A (zh) * 2024-03-15 2024-04-16 福建顶点软件股份有限公司 基于dag分组的任务并行度调度方法、介质和设备
CN117891584B (zh) * 2024-03-15 2024-05-14 福建顶点软件股份有限公司 基于dag分组的任务并行度调度方法、介质和设备

Also Published As

Publication number Publication date
CN107943561B (zh) 2019-06-11

Similar Documents

Publication Publication Date Title
Song et al. Flexible job-shop scheduling via graph neural network and deep reinforcement learning
CN107943561B (zh) 一种面向云计算平台的科学工作流任务调度方法
Singh et al. Task scheduling in cloud computing
CN107015856A (zh) 云环境下科学工作流中的任务调度方案生成方法及装置
CN104050042B (zh) Etl作业的资源分配方法及装置
CN103714414B (zh) 一种用于智能电网调度的流程节点回退方法
CN106447173A (zh) 一种支持任意流程结构的云工作流调度方法
Lee et al. A vertically layered allocation scheme for data flow systems
CN106033373A (zh) 一种云计算平台中虚拟机资源调度方法和调度系统
CN109189094A (zh) 一种多有人机与多无人机混合编队资源调度方法
CN113139710B (zh) 一种基于遗传算法的多资源并行任务高级计划排程方法
Huang et al. Service requirement conflict resolution based on ant colony optimization in group-enterprises-oriented cloud manufacturing
CN108170530A (zh) 一种基于混合元启发式算法的Hadoop负载均衡任务调度方法
CN108108225A (zh) 一种面向云计算平台的任务调度方法
CN106371924A (zh) 一种最小化MapReduce集群能耗的任务调度方法
CN106502790A (zh) 一种基于数据分布的任务分配优化方法
CN114461368A (zh) 一种基于协同果蝇算法的多目标云工作流调度方法
Li et al. Efficient adaptive matching for real-time city express delivery
Bendjoudi et al. An adaptive hierarchical master–worker (AHMW) framework for grids—Application to B&B algorithms
CN112884367A (zh) 考虑多技能员工约束的高端装备研发过程多项目协同调度方法及系统
CN110119317A (zh) 一种基于遗传算法的云计算任务调度方法和系统
CN110119268A (zh) 基于人工智能的工作流优化方法
CN109783189A (zh) 一种静态工作流调度方法与装置
Meddeber et al. Dependent tasks assignment and data consistency management for grid computing
Ababneh et al. On Static Scheduling of Tasks in Real Time Multiprocessor Systems: An Improved GA-Based Approach.

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