一种云计算环境下应用任务流调度方法与流程

文档序号:12034425阅读:383来源:国知局

本发明涉及一种云计算环境下应用任务流调度方法,属于云计算技术领域。



背景技术:

随着internet网络技术的发展和计算机技术的不断提高,网络中传输和处理数据的能力直线增长。人们希望获得一种直接、便捷的计算处理方式,不需要安装应用软件,只要连接互联网,就可以利用连接在网络中的空闲的计算机资源进行任务处理。

云计算是即并行计算、分布式计算和网格计算之后的又一种新型的计算模式。在一个云计算系统中,计算资源被整合成资源池向外提供按需分配的服务。在这种场景下,一个应用可能不仅访问位于本地的数据,而且与部署于其它地理位置遥远的服务器上的应用存在通信。一个云计算系统拥有大量的计算资源,一个云数据中心可以包含成千上万个服务器。

工作流调度是指将工作流中的任务映射到合适的资源并管理其运行,它不同于一般的任务调度,在调度时不仅要考虑为任务选择一个最佳资源,还要考虑各个任务之间的时序与因果的约束条件,以及协调各个任务的执行来获取最终的执行结果。

工作流调度问题是云计算中的一个重要问题,直接关系到云服务的稳定性、资源的使用效率、用户的满意程度和运营成本。

计算资源管理和虚拟机放置一直是云计算系统中的重要问题。虚拟机放置问题是一个n维的装箱问题的变种,也是np问题。这种问题无法在多项式级的时间内解决。研究者们在这个领域做出了巨大的努力。总的来说,当前的虚拟机放置算法大多专注于提高计算资源使用效率;使用数据管理策略或者缓存或者副本等,来缩短数据访问延时;完善服务器负载均衡;减少能耗。



技术实现要素:

本发明所要解决的技术问题是提供一种基于应用有向图,能够通过缩短关键路径长度,实现缩短整个应用总体完成时间,提高工作效率的云计算环境下应用任务流调度方法。

本发明为了解决上述技术问题采用以下技术方案:本发明设计了一种云计算环境下应用任务流调度方法,用于针对目标应用所包含的各个子任务进行调度实现云计算处理,包括如下步骤:

步骤a.基于目标应用的各个子任务,构建应用有向图,并根据应用有向图,以入度为零的子任务为起点,结合子任务之间的后继联系,获得各个子任务序列集合,并针对所有子任务序列集合,构建目标应用子任务集合,然后进入步骤b;

步骤b.针对云计算环境中的各个空闲虚拟机,分别获得各个空闲虚拟机的cpu频率,并针对所有空闲虚拟机,按cpu频率进行非增顺序排序,构建空闲虚拟机排序列表avm,然后进入步骤c;

步骤c.针对目标应用子任务集合,分别提取各个子任务序列集合中入度为零的子任务,构建或加入至待分配子任务集合ast中,同时删除各个子任务序列集合中被提取的子任务,更新各个子任务序列集合,然后进入步骤d;

步骤d.针对待分配子任务集合ast中的各个子任务进行随机排序,更新待分配子任务集合ast,然后进入步骤e;

步骤e.根据待分配子任务集合ast中各个子任务的排序,以及空闲虚拟机排序列表avm中各个虚拟机的排序,针对待分配子任务集合ast中的所有子任务,依次将各个子任务分别一一对应分配给各个虚拟机进行处理,同时删除空闲虚拟机排序列表avm中已分配的各个虚拟机,以及清空待分配子任务集合ast,然后进入步骤f;

步骤f.判断目标应用子任务集合中是否存在子任务,是则返回步骤c;否则目标应用子任务调度方法结束。

作为本发明的一种优选技术方案:所述步骤a包括如下步骤:

步骤a1.基于目标应用的各个子任务,构建应用有向图,以及子任务集合,然后进入步骤a2;

步骤a2.获得应用有向图中入度为零的子任务,并分别构建该各个子任务分别一一对应的各个子任务序列集合,同时删除子任务集合中的该各个子任务;然后进入步骤a3;

步骤a3.随机选择一个子任务序列集合,并进入步骤a4;

步骤a4.基于应用有向图,判断该子任务序列集合中序列末尾的子任务之后是否存在后继子任务,是则进入步骤a5;否则进入步骤a6;

步骤a5.将该后继子任务加入至该子任务序列集合中,并位于序列末尾,更新该子任务序列集合,同时删除子任务集合中的该后继子任务,然后返回步骤a4;

步骤a6.判断是否存在未经步骤a3至步骤a5处理的子任务序列集合,是则返回步骤a3;否则进入步骤a7;

步骤a7.判断子任务集合是否为空,是则即获得各个子任务序列集合,并针对所有子任务序列集合,构建目标应用子任务集合,然后进入步骤b;否则返回步骤a2。

作为本发明的一种优选技术方案:所述步骤b中,构建空闲虚拟机排序列表avm的同时,获得应用有向图中的一条关键路径,并针对该关键路径上的各个子任务,构建关键子任务集合cst,然后进入步骤c;

所述步骤d包括如下步骤:

步骤d1.判断待分配子任务集合ast与关键子任务集合cst之间是否存在交集,是则进入步骤d2;否则针对待分配子任务集合ast中的各个子任务进行随机排序,更新待分配子任务集合ast,然后进入步骤e;

步骤d2.针对待分配子任务集合ast中属于关键子任务集合cst的各个子任务进行随机排序,构成待分配关键子任务排序集,同时针对待分配子任务集合ast中不属于关键子任务集合cst的各个子任务进行随机排序,构成待分配非关键子任务排序集,然后按照先待分配关键子任务排序集,后待分配非关键子任务排序集的顺序,针对待分配子任务集合ast进行更新,然后进入步骤e。

作为本发明的一种优选技术方案:所述步骤b中,通过有向图关键路径算法,获得应用有向图中的一条关键路径。

作为本发明的一种优选技术方案:所述步骤e中,依次将各个子任务分别一一对应分配给各个虚拟机进行处理的同时,若子任务执行完毕,则释放该子任务所加载执行的虚拟机,并采用步骤b的操作,针对空闲虚拟机排序列表avm进行更新。

本发明所述一种云计算环境下应用任务流调度方法采用以上技术方案与现有技术相比,具有以下技术效果:本发明设计的云计算环境下应用任务流调度方法,不仅考虑到虚拟机的计算能力,而且通信延时和数据访问延时也同时被考虑进来,更加接近实际生产环境下的云计算场景。一个子任务的执行时间被分成三个部分:在虚拟机上的执行时间,从计算节点到存储结点的数据传输时间和子任务之间的通信时间。采用本发明设计方法,能够更加准确地定义和计算子任务的执行时间,而且,许多云应用都是数据密集型的,由于本方法不仅考虑到虚拟机的计算能力,也考虑到任务之间的网络带宽和通信代价,因此本发明设计调度方法,能够更好地处理数据密集型应用。

附图说明

图1是本发明所设计云计算环境下应用任务流调度方法的示意图。

具体实施方式

下面结合说明书附图对本发明的具体实施方式作进一步详细的说明。

工作流调度问题可以简化为虚拟机的调度问题,来自终端的用户请求事先被分成多个子任务。这些子任务然后被分配到不同的虚拟机上;一个虚拟机从某种意义上讲可以被当成一个子任务和执行这个子任务所需要的物理资源(ram,cpu,带宽等)的结合。所有的虚拟机最后都会被放置到特定的计算结点上执行子任务;而且,这些虚拟机可以在计算结点之间进行迁移从而能够提高计算资源的利用率。使用这种方式之后,数以千计的物理主机可以池化为巨大的资源池来服务用户的各种请求。

云用户可以部署他们自己的应用到云系统上,因为受到单个计算结点的内存空间,cpu能力等因素限制,一个应用通常不能直接分配到一个计算结点上。这些应用通常被分割为多个子任务程序,而且子任务之间的代码长度和文件访问序列都可以不相同。应用的部署问题一直是云计算领域研究的重要课题。合理的调度机制可以缩短一个应用的总体完成时间,从而提高用户的qos体验。

针对该问题,本发明提出一种云计算环境下应用任务流调度方法,使用该方法可以有效地发挥虚拟机的计算能力,缩短整个应用的完成时间。该方法的思路是将算法分为两部分:子任务划分算法(spa)和子任务分配算法(saa)。子任务划分算法spa把所有子任务划分成不同的任务集合,然后子任务分配算法saa根据划分算法的结果把子任务分配到计算结点上。

如图1所示,本发明设计了一种云计算环境下应用任务流调度方法,用于针对目标应用所包含的各个子任务进行调度实现云计算处理,包括如下步骤:

步骤a.基于目标应用的各个子任务,构建应用有向图,并根据应用有向图,以入度为零的子任务为起点,结合子任务之间的后继联系,获得各个子任务序列集合,并针对所有子任务序列集合,构建目标应用子任务集合,然后进入步骤b。

其中,步骤a具体包括如下步骤:

步骤a1.基于目标应用的各个子任务,构建应用有向图,以及子任务集合,然后进入步骤a2。

步骤a2.获得应用有向图中入度为零的子任务,并分别构建该各个子任务分别一一对应的各个子任务序列集合,同时删除子任务集合中的该各个子任务;然后进入步骤a3。

步骤a3.随机选择一个子任务序列集合,并进入步骤a4。

步骤a4.基于应用有向图,判断该子任务序列集合中序列末尾的子任务之后是否存在后继子任务,是则进入步骤a5;否则进入步骤a6。

步骤a5.将该后继子任务加入至该子任务序列集合中,并位于序列末尾,更新该子任务序列集合,同时删除子任务集合中的该后继子任务,然后返回步骤a4。

步骤a6.判断是否存在未经步骤a3至步骤a5处理的子任务序列集合,是则返回步骤a3;否则进入步骤a7。

步骤a7.判断子任务集合是否为空,是则即获得各个子任务序列集合,并针对所有子任务序列集合,构建目标应用子任务集合,然后进入步骤b;否则返回步骤a2。

步骤b.针对云计算环境中的各个空闲虚拟机,分别获得各个空闲虚拟机的cpu频率,并针对所有空闲虚拟机,按cpu频率进行非增顺序排序,构建空闲虚拟机排序列表avm,同时,通过有向图关键路径算法,获得应用有向图中的一条关键路径,并针对该关键路径上的各个子任务,构建关键子任务集合cst,然后进入步骤c。

步骤c.针对目标应用子任务集合,分别提取各个子任务序列集合中入度为零的子任务,构建或加入至待分配子任务集合ast中,同时删除各个子任务序列集合中被提取的子任务,更新各个子任务序列集合,然后进入步骤d。

步骤d.针对待分配子任务集合ast中的各个子任务进行随机排序,更新待分配子任务集合ast,然后进入步骤e。

其中,上述步骤d具体包括如下步骤:

步骤d1.判断待分配子任务集合ast与关键子任务集合cst之间是否存在交集,是则进入步骤d2;否则针对待分配子任务集合ast中的各个子任务进行随机排序,更新待分配子任务集合ast,然后进入步骤e。

步骤d2.针对待分配子任务集合ast中属于关键子任务集合cst的各个子任务进行随机排序,构成待分配关键子任务排序集,同时针对待分配子任务集合ast中不属于关键子任务集合cst的各个子任务进行随机排序,构成待分配非关键子任务排序集,然后按照先待分配关键子任务排序集,后待分配非关键子任务排序集的顺序,针对待分配子任务集合ast进行更新,然后进入步骤e。

步骤e.根据待分配子任务集合ast中各个子任务的排序,以及空闲虚拟机排序列表avm中各个虚拟机的排序,针对待分配子任务集合ast中的所有子任务,依次将各个子任务分别一一对应分配给各个虚拟机进行处理,同时,若子任务执行完毕,则释放该子任务所加载执行的虚拟机,并针对采用步骤b的操作,针对空闲虚拟机排序列表avm进行更新;与此同时,删除空闲虚拟机排序列表avm中已分配的各个虚拟机,以及清空待分配子任务集合ast,然后进入步骤f。

步骤f.判断目标应用子任务集合中是否存在子任务,是则返回步骤c;否则目标应用子任务调度方法结束。

上述技术方案所设计的云计算环境下应用任务流调度方法,不仅考虑到虚拟机的计算能力,而且通信延时和数据访问延时也同时被考虑进来,更加接近实际生产环境下的云计算场景。一个子任务的执行时间被分成三个部分:在虚拟机上的执行时间,从计算节点到存储结点的数据传输时间和子任务之间的通信时间。采用本发明设计方法,能够更加准确地定义和计算子任务的执行时间,而且,许多云应用都是数据密集型的,由于本方法不仅考虑到虚拟机的计算能力,也考虑到任务之间的网络带宽和通信代价,因此本发明设计调度方法,能够更好地处理数据密集型应用。

上面结合附图对本发明的实施方式作了详细说明,但是本发明并不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下做出各种变化。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1