发明名称 异构环境中并行计算调度方法
摘要 本发明涉及并行计算领域,公开了一种异构环境中并行计算调度方法,该方法通过建构多种内存不同的JVM任务槽以及空闲任务槽数组,将并行计算作业中的任务分为I/O密集型和CPU密集型,并把上述任务指定到合适的任务槽进行计算,达到优化异构环境中并行计算效率的目的。本发明的优点在于,实现了动态地确定任务所需要的内存大小和类型,提高了异构集群的资源利用率,减少了并行计算作业的总体运行时间,避免了任务运行过程中内存溢出的情况。
申请公布号 CN103500123B 申请公布日期 2016.09.21
申请号 CN201310477055.7 申请日期 2013.10.12
申请人 浙江大学 发明人 吴朝晖;何延彰;姜晓红;黄鹏;毛宇
分类号 G06F9/50(2006.01)I 主分类号 G06F9/50(2006.01)I
代理机构 杭州裕阳专利事务所(普通合伙) 33221 代理人 应圣义
主权项 一种异构环境中并行计算调度方法,其特征在于,包括以下具体步骤:1)在异构集群上构建多个JVM任务槽,所述多个JVM任务槽分别由不同或者相同大小的内存空间组成,所述异构集群包括主节点以及从节点,JVM任务槽位于从节点上;步骤1)中,JVM任务槽至多可以分配的内存空间大小<img file="FDA0000940641450000011.GIF" wi="660" he="151" />其中,从节点的处理器数目为n,从节点总内存为M<sub>stave</sub>,从节点上所构建的任务槽的个数为N<sub>slot</sub>;2)主节点对所有从节点的I/O利用率和CPU利用率进行监控,并构建空闲任务槽数组Q1以及Q2,所述空闲任务槽数组Q1以及Q2分别由一个或者多个JVM任务槽组成;步骤2)还包括以下具体步骤:将空闲任务槽数组Q<sub>1</sub>以任务槽的内存空间大小为关键字由小到大进行第一次排序,以任务槽所在从节点的I/O利用率为关键字由小到大进行第二次排序;将空闲任务槽数组Q<sub>2</sub>以任务槽的内存空间大小为关键字由小到大进行第一次排序,以任务槽所在从节点的CPU利用率为关键字由小到大进行第二次排序;3)搭建于异构集群上的分布式文件系统接收用户上载的待处理的输入数据,并将输入数据以数据块的形式存储在异构集群的节点上;分布式文件系统接收用户提交的并行计算作业;4)对并行计算作业进行预测试,在预测试过程中计算并行计算作业中每个任务在运行时所需要的内存空间大小;步骤4)的预测试步骤具体包括:依据任务对内存的需求是否与输入数据的大小相关联,将任务区分为与输入数据的大小无关的任务以及与输入数据的大小成比例关系的任务,与输入数据的大小成比例关系的任务所需要的最小内存空间大小<img file="FDA0000940641450000012.GIF" wi="428" he="126" />其中,M<sub>test</sub>为预测试时测试程序运行所需内存需求,S<sub>block</sub>为输入数据的数据块大小,S<sub>test</sub>为预测试时测试程序输入的数据大小;5)根据预测试在运行时输出的数据大小和运行时间,将并行计算作业中的任务分为I/O密集型和CPU密集型;步骤5)还包括以下具体步骤:将满足条件<img file="FDA0000940641450000021.GIF" wi="576" he="127" />的任务划分为I/O密集型;否则为CPU密集型;其中,TID表示步骤4)预测试时测试程序输入的数据大小,TOD表示测试程序输出数据的大小,TCT表示测试程序的运行时间,DIOR表示硬盘读写最大速率;6)建立调度队列,将并行计算作业的任务加入调度队列,依次运行调度队列中的任务,如果任务为I/O密集型,则执行步骤7);如果任务为CPU密集型,则执行步骤8);7)在空闲任务槽数组Q1中选择一个JVM任务槽,在该选定的JVM任务槽内运行任务,如果任务运行成功,则执行步骤9);否则重复执行步骤7);8)在空闲任务槽数组Q2中选择一个JVM任务槽,在该选定的JVM任务槽内运行任务,如果任务运行成功,则执行步骤9);否则重复执行步骤8);9)等待调度队列中的任务均运行结束,导出运行结果。
地址 310027 浙江省杭州市浙大路38号浙大计算机学院曹光彪东楼505