一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于二分法的分布式计算任务调度方法及设备

2022-04-27 15:00:35 来源:中国专利 TAG:


1.本发明涉及分布式计算领域,具体涉及一种基于二分法的分布式计算任务调度方法及设备。


背景技术:

2.分布式数据处理平台主要由上层的分布式计算组件和底层的分布式存储系统两层构成。底层分布式存储系统的热门产品主要有hdfs、ceph及openstack swift等,上层分布式计算组件的热门产品主要有mapreduce和spark等。
3.分布式存储系统是一种允许文件透过网络在多台主机host上分享的文件系统,可在多host上分享文件和存储空间。
4.由于分布式存储系统的快速发展,大大促进了分布式计算的发展。分布式计算是一种计算方法,和集中式计算是相对的。随着计算技术的发展,有些应用需要非常巨大的计算能力才能完成,如果采用集中式计算,需要耗费相当长的时间来完成。分布式计算将该应用分解成许多小的部分,分配给多台计算机进行处理,以节约整体计算时间,实现了计算效率的提高。分布式计算具有计算效率快,减少数据传输,最大化利用闲置资源等优点。
5.在分布式系统中,数据(block)和计算资源(core)分布在不同的主机(host)上。即文件数据存储的数据(block)具有多副本(replica),每个host包括多个计算资源(即cpu核,又记作core)。“协调数据和计算资源高效完成任务(job)”成为了提升集群性能的重中之重。简单地说,优秀调度算法的作用是决定一个job的各个block需选哪份副本数据(replica),以及在集群中的哪台主机(host)上面的哪个计算资源(core)运行。
6.现有的分布式计算的调度算法多为轮转法或是加权法,调度时,任务间存在依赖关系,因此在调度任务多的应用场景下,计算效率不够高。


技术实现要素:

7.本发明的目的在于克服现有技术中所存在的调度算法计算效率不高的不足,提供一种基于二分法的分布式计算任务调度方法及设备,所述方法及设备通过使用二分搜索策略搜索任务队列以得到合适的预计调度完成时间,同时通过逐步递增任务的核心数目,实现对核心和数据块的分配,以得到较优的解,提高了计算效率。
8.为了实现上述发明目的,本发明提供了以下技术方案:
9.一种基于二分法的分布式计算任务调度方法,包括以下步骤:
10.步骤101,获得分布式计算的任务调度信息;
11.步骤102,基于任务调度信息估算任务调度的上边界和下边界;
12.步骤103,基于二分法,根据上边界和下边界获取预计调度完成时间;
13.步骤104,基于任务调度信息获得任务队列;根据预计调度完成时间,依序给队列中的每个任务分配核心数目、主机、核心以及数据块;并基于二分法调整上边界或下边界,执行步骤103,直至满足预设调度完成条件;
14.步骤104的具体步骤如下所示:
15.步骤1041,获取待分配任务,设置初始核心数目,将初始核心数目记作核心数目;
16.步骤1042,选择主机、核心与数据块;
17.步骤1043,判断当前待分配任务在预计调度完成时间内,是否可以计算完成;若可以执行计算完成,执行步骤1044;若不可以计算完成,且此时核心数目小于核心数目总量,则增加核心数目,执行步骤1042;若不可以计算完成,且此时核心数目等于核心数目总量,则执行步骤1045;
18.步骤1044,判断所有任务是否分配完成;若所有任务未分配完成,选择下一个待分配任务,执行步骤1041;若所有任务分配完成,执行步骤1045;
19.步骤1045,基于二分法调整上边界或下边界;若存在待分配任务的核心数目等于核心数目总量时,仍不能在预计调度完成时间内计算完成,则增加下边界的值;若任务队列的所有任务在预计调度完成时间内计算完成,则减少上边界的值;
20.根据上边界或下边界,判断是否满足预设调度完成条件,若满足,则输出调度结果;若不满足,则更新上边界或下边界,执行步骤103。
21.优选地,所述步骤s1还包括,基于任务调度信息计算每个任务的任务预估执行时间,按照任务预估执行时间从大到小的顺序对待执行的任务排序,更新任务队列;所述任务预估执行时间为不考虑衰减系数与网络传输速度时的任务工作时间。
22.优选地,所述步骤102中上边界为各任务基于单核心计算的执行时间的最大值;下边界为各任务基于所有核心调度计算的执行时间的最大值;所述执行时间考虑了衰减系数与网络传输速度。
23.优选地,所述步骤103中通过上边界和下边界的均值向上取整获得预计调度完成时间。
24.优选地,所述步骤1042中核心的选择方式如下所示:
25.采用核心权重计算模型计算所有核心的权重值,初始核心数目时的核心和核心数目增加时的核心为权重值最大的核心。
26.核心权重计算模型的计算公式如下所示:
27.λj=φjβitj28.其中,λj是第j个核心的权重值,φj为主机权重,表示第j个核心为第k个主机上的核心的占比分数;βi为数据权重,表示第i个任务在第k个主机上的数据占比情况;tj为时间权重,表示第j个核心在当前时间的可用时间的权重值。
29.优选地,所述主机权重φj的计算公式如下所示:
[0030][0031]
其中,corenum
(i,k)
表示在第k台主机上为第i个任务分配的核心数量,corenumi表示第i个任务分配的核心数目;
[0032]
所述数据权重βi的计算公式如下所示:
[0033]
[0034]
其中,jobdatasize
(i,k)
表示第i个任务在第k个主机上的数据大小,jobdatasizei表示第i个任务总的数据量;
[0035]
所述时间权重tj的计算公式如下所示:
[0036][0037]
其中,coreavatimej表示第j个核心的最早开始可用时间,makespan为预计调度完成时间。
[0038]
优选地,所述步骤1042中数据块的选择方式如下所示:
[0039]
待分配任务的核心选择以后,给待分配任务的每个核心分配数据块;分配数据块时,计算数据块分配至不同核心的计算时间,将数据块部署至计算时间最小的核心或对任务的执行时间影响最小的核心上;所述计算时间包括迁移时间与执行时间。
[0040]
优选地,所述基于二分法的分布式计算任务调度方法还包括,在第一时刻或第二时刻或第三时刻时,基于block粒度对任务的关键路径进行数据迁移或/和数据交换操作,将关键路径的部分数据块的计算分配至非关键路径;第一时刻为步骤1042中,选择主机、核心与数据块后;第二时刻为步骤1044中,所有任务分配完成后;第三时刻为步骤1045中,上边界或下边界更新后,满足预设调度完成条件后;所述关键路径为当前任务计算时间最长的核心。
[0041]
优选地,所述基于block粒度对关键路径进行数据迁移和数据交换操作,包括以下步骤:
[0042]
步骤201,获取关键路径和最短路径的计算执行时间;判断关键路径和最短路径的计算执行时间差值是否大于第一阈值,若大于第一阈值,执行步骤202;反之,结束数据迁移和数据交换操作;
[0043]
步骤202,非关键路径按照计算执行时间由小到大的顺序排序,得到第一非关键路径队列,所述第一非关键路径队列用于确定数据迁移操作时,选择的非关键路径的顺序;
[0044]
步骤203,基于第一非关键路径队列,选择关键路径上的待迁移数据块所放置的非关键路径;判断关键路径与当前被迁移的非关键路径之间的计算执行时间差值是否大于第二阈值,若大于第二阈值,执行步骤204,若小于或等于第二阈值,执行步骤205;
[0045]
步骤204,关键路径上的待迁移数据块放置到非关键路径上,进行数据迁移后,关键路径的计算执行时间是否缩短;若缩短,则进行本次数据迁移,然后执行步骤201;若未缩短,且关键路径上存在数据块未进行迁移尝试时,不进行本次数据迁移,重新选择待迁移数据块执行步骤203;若未缩短,且关键路径上的所有数据块均不能迁移至当前选择的非关键路径上,则更换下一个非关键路径进行数据迁移,执行步骤203;
[0046]
步骤205,数据迁移操作后的非关键路径按照计算执行时间由小到大的顺序排序,得到第二非关键路径队列,所述第二非关键路径队列用于确定数据交换操作时,选择的非关键路径的顺序;
[0047]
步骤206,基于第二非关键路径队列,选择关键路径上的待交换数据块进行数据块交换的非关键路径;判断关键路径与当前被交换的非关键路径之间的计算执行时间差值是否大于第三阈值,若大于第三阈值,执行步骤207,若小于或等于第三阈值,结束数据迁移和
数据交换操作;
[0048]
步骤207,关键路径上的待交换数据块与非关键路径上的待交换数据块进行数据交换后,判断关键路径的计算执行时间是否缩短;若缩短,则进行本次数据交换,然后执行步骤201;若未缩短,且关键路径和非关键路径上的数据块均已配对进行数据交换尝试,则不进行本次数据交换,更换非关键路径,执行步骤206;若未缩短,且存在关键路径和非关键路径上的数据块未配对进行数据交换尝试,则不进行本次数据交换,更换关键路径和非关键路径上的待交换数据块,执行步骤206。
[0049]
一种基于二分法的分布式计算任务调度设备,包括:
[0050]
存储器,用于存储计算机程序;
[0051]
处理器,用于执行所述计算机程序时实现上述任一项所述基于二分法的分布式计算任务调度方法的步骤。
[0052]
与现有技术相比,本发明的有益效果:
[0053]
1、使用二分搜索策略搜索任务队列以得到合适的预计调度完成时间,同时通过逐步递增任务的核心数目,实现对核心和数据块的分配,以得到较优的解,提高了计算效率。
[0054]
2、按照计算时间逆序得到任务队列,先分配执行时间长的任务,使得任务调度更加有序,同时先对任务预估执行时间长的任务进行调度分配,有利于提高调度效率。
[0055]
3、在任务部署时使用了贪心与搜索剪枝优化单个任务job的执行时间。即在任务部署时基于block粒度的数据迁移与数据交换优化单个任务job的执行时间,本技术适用于计算调度任务多,任务之间没有依赖关系,同时对计算效率要求较高的任务场景。
附图说明:
[0056]
图1为本发明示例性实施例1的基于二分法的分布式计算任务调度方法的流程图;
[0057]
图2为本发明示例性实施例1的基于block粒度对关键路径进行数据迁移和数据交换操作的流程图;
[0058]
图3为本发明示例性实施例2的基于二分法的分布式计算任务调度设备的系统框图;
[0059]
图4为本发明示例性实施例2的基于二分法的分布式计算任务调度设备的结构示意图。
具体实施方式
[0060]
下面结合试验例及具体实施方式对本发明作进一步的详细描述。但不应将此理解为本发明上述主题的范围仅限于以下的实施例,凡基于本发明内容所实现的技术均属于本发明的范围。
[0061]
实施例1
[0062]
如图1所示,本实施例提供一种基于二分法的分布式计算任务调度方法,包括以下步骤:
[0063]
步骤101,获得分布式计算的任务调度信息;
[0064]
其中,本技术提供的方法应用于分布式计算集群,所述任务调度信息包括任务信息,数据信息以及计算信息;
[0065]
步骤102,基于任务调度信息估算任务调度的上边界和下边界;所述上边界为任务调度时间取值范围的最大值,所述下边界为任务调度时间取值范围的最小值;
[0066]
其中,上边界根据各任务基于单核心计算的执行时间获得;所述下边界根据各任务基于所有核心调度计算的执行时间获得;
[0067]
步骤103,基于二分法,根据上边界和下边界获取预计调度完成时间;
[0068]
步骤104,基于任务调度信息获得任务队列;根据预计调度完成时间,依序给队列中的每个任务分配核心数目、主机、核心以及数据块;并基于二分法调整上边界或下边界,执行步骤103,直至满足预设调度完成条件;
[0069]
步骤104的具体步骤如下所示:
[0070]
步骤1041,获取待分配任务,设置初始核心数目,将初始核心数目记作核心数目;
[0071]
步骤1042,选择主机、核心与数据块;
[0072]
步骤1043,判断当前待分配任务在预计调度完成时间内,是否可以计算完成;若可以执行计算完成,执行步骤1044;若不可以计算完成,且此时核心数目小于核心数目总量,则增加核心数目,执行步骤1042;若不可以计算完成,且此时核心数目等于核心数目总量,则执行步骤1045;
[0073]
步骤1044,判断所有任务是否分配完成;若所有任务未分配完成,选择下一个待分配任务,执行步骤1041;若所有任务分配完成,执行步骤1045;
[0074]
步骤1045,基于二分法调整上边界或下边界;若存在待分配任务的核心数目等于核心数目总量时,仍不能在预计调度完成时间内计算完成,则增加下边界的值;若任务队列的所有任务在预计调度完成时间内计算完成,则减少上边界的值;
[0075]
根据上边界或下边界,判断是否满足预设调度完成条件,若满足,则输出调度结果;若不满足,则更新上边界或下边界,执行步骤103。
[0076]
本实施例中,所述上边界和所述下边界可以为经验值,或现有调度方法的工作时间,或给予任务的参数进行设计等。上边界和下边界影响二分法的收敛速度,界限范围设置的太大,导致过多的二分尝试,界限范围设置太小,在二分范围内不能求得最优解,因此本实施例通过单核心和所有核心参与调度计算的执行时间得到初始的上下边界。在预计调度完成时间内,通过增量添加任务job核心数量,实现调度分配,以部署相应的核心与数据块。一般情况下,任务的主机、核心的分配与每台主机上存在的数据块的数量存在强相关关系。给存放数据块较多的主机host上分配更多的核心core数量可显著降低传输时间,提升任务整体执行效率。由于随着核心core数量的增加导致的衰减系数函数f(n)降低,核心core效率衰减增大。故在指定时间内完成的任务job的执行核心core数量越少越好。故对于单个任务job的核心core数量,我们使用逐个递增的方式,以得到较好的调度分配结果。逐个递增的方式保证了在任务队列执行的预计调度完成时间makespan范围内,单个任务使用最少的核心数,在指定时间范围内更充分利用计算资源。相较于轮转法(即将计算任务轮转分配给集群中的计算节点)与加权法(考虑计算节点的优先级或者计算节点的计算能力)。本方法考虑了计算节点的计算能力,计算节点的负载,多核效率衰减,以及分布式存储数据块在不同计算节点上分配情况等条件,可有效提高任务队列计算效率。
[0077]
具体的,本技术提供的方法应用于分布式计算集群,所述任务调度信息包括任务信息,数据信息以及计算信息;任务信息,数据信息以及计算信息的含义如下所示:
[0078]
本实施例中,所述任务信息包括任务队列、任务执行速度以及任务关联数据块。所述任务队列记作jobqueue:job1,job2,job3,

,jobi…
jobi;表示一次分布式计算包括i个任务job。所述第i个任务jobi的任务执行速度记作jobcalcspeedi,所述任务执行速度采用的单位为mb/s。所述任务关联数据块为每个任务job采用的数据块block。
[0079]
本实施例中,所述数据信息包括;数据块编号、数据块大小以及数据块存放位置。数据块编号记作blockid,第t个数据块block的数据块大小记作blocksize
t
,数据块存放位置表示数据块block所存放的主机,可以主机的编号hostid表示,分布式集群环境下一个数据块block的多份副本数据replica可存放多个主机host上。
[0080]
本实施例中,所述计算信息包括核心数目总量、衰减系数、网络传输速度以及任务预估执行时间;
[0081]
所述核心数目总量为分布式计算集群所包含的全部核心core(即cpu核)的数量t,t=m*n,其中,n为主机host数量,m为每台主机host的core数量。
[0082]
所述衰减系数表示多核心core计算一个任务job时,单个核心core计算速度的降低情况。多核心core间存在数据交互等成本,因此多核心core性能并非单核心core性能的简单线性叠加。分布式计算集群环境中,单核心core的计算速度随着参与计算的核心core数量n的增加逐步降低,用衰减系数来表征计算速度降低的情况,衰减系数的计算函数f(n)如下所示:
[0083][0084]
每个核心在同一时刻只能分配给一个任务;当任务启动运行后,只有当前任务结束后,当前任务占用的所有核心core才能释放,释放延迟忽略。
[0085]
所述网络传输速度用于表征主机间的传输耗时情况,记作datatrandspeed。本实施例中,若用hosta上的核心core计算hostb的数据块block(a≠b),hostb的数据块block需先传输至hosta,传输耗时受网络传输速度影响。本实施例的分布式计算集群环境中网络传输速度datatrandspeed为1000mb/s(即125mb/s,或131072byte/ms)。
[0086]
所述任务预估执行时间为不考虑衰减系数与网络传输速度时的任务工作时间,计算公式如下所示:
[0087][0088]
其中,jobestimatetimei为第i个任务jobi的任务预估执行时间,jobdatasizei为第i个任务jobi总的数据量;jobcalcspeedi为第i个任务jobi的任务执行速度。
[0089]
在其中一个实施例中,所述步骤101还包括,基于任务调度信息计算每个任务的任务预估执行时间,按照任务预估执行时间从大到小的顺序对待执行的任务排序,更新任务队列。具体的,根据任务预估执行时间jobestimatetimei对任务队列进行重新排列,后续的任务调度过程中,先分配任务预估执行时间长的任务,使得任务调度更加有序,同时先对任务预估执行时间长的任务进行调度分配,此时可供选择的核心较多,可优先获取对当前任务job最有利的核心,减少任务job的执行时间;同时执行时间较短的任务job,放在任务队列的尾部执行,可以在前面执行任务job后的核心的真空期中(即核心core等待间隙)部署
这些任务,提升cpu利用率,有利于提高调度效率。
[0090]
在其中一个实施例中,所述步骤102中上边界为各任务基于单核心计算的执行时间的最大值;下边界为各任务基于所有核心调度计算的执行时间的最大值。
[0091]
具体的,上边界upbound和下边界downbound的计算方式如下所示:
[0092]
upbound=max(jobexectime
(1,1)
,jobexectime
(2,1)
,

jobexectime
(i,1)
)
[0093]
其中执行时间jobexectime
(i,j)
表示第i个任务jobi分配j个核心时考虑衰减系数与网络传输速度时的任务工作时间,上式表示每个job仅分配一个核心时的执行时间的最大值即为上边界。
[0094]
downbound=max(jobexectime
(1,t)
,jobexectime
(2,t)
,

jobexectime
(i,t)
)
[0095]
上式表示对于每个job使用全部数量t的核心core进行调度的执行时间的最大值即为下边界。
[0096]
本实施例根据实际需处理的任务情况获得上下边界,使得上下边界的获得可以根据实际应用场景自适应调整,增加任务调度方法的适用性;同时根据待处理的任务自动获取上下边界,不依赖与经验数据等,获取方式简单,且获得的上下边界适用于后续的二分法,应用效果较好。还可根据应用场景等对最大值进行系数校正后获得上边界或下边界,以避免上下边界的选取不合适,进行一定程度的校正。
[0097]
在其中一个实施例中,所述步骤103中预计调度完成时间的计算方式如下所示:
[0098]
通过上边界upbound和下边界downbound的均值向上取整获得预计调度完成时间makespan:
[0099][0100]
本实施中,根据后续任务部署情况调整上边界和下边界更新预计调度完成时间,基于二分法可以快速调整更新获得合适的预计调度完成时间。
[0101]
在其中一个实施例中,所述步骤1042中核心的选择方式如下所示:
[0102]
采用核心权重计算模型计算所有核心的权重值,初始核心数目时的核心和核心数目增加时的核心为权重值最大的核心。
[0103]
核心权重计算模型的计算公式如下所示:
[0104]
λj=φjβitj[0105]
其中,λj是第j个核心的权重值,φj为主机权重,表示第j个核心为第k个主机上的核心的占比分数;βi为数据权重,表示第i个任务在第k个主机上的数据占比情况;tj为时间权重,表示第j个核心在当前时间的可用时间的权重值。
[0106]
本实施例从不同维度来考虑核心的选择,以更好的实现任务的调度。
[0107]
具体的,所述主机权重φj的计算公式如下所示:
[0108][0109]
其中corenum
(i,k)
表示在第k台主机上为第i个任务分配的核心数量,corenumi表示第i个任务分配的核心数目。当第k个主机上已分配较多的核心时,降低本次选择该主机的核心的几率。
[0110]
所述数据权重βi的计算公式如下所示:
[0111][0112]
jobdatasize
(i,k)
表示第i个任务在第k个主机上的数据大小,jobdatasizei表示第i个任务总的数据量。当βi值越大时,第i个任务jobi在第k个主机上的数据占比越大。
[0113]
所述时间权重tj的计算公式如下所示:
[0114][0115]
coreavatimej表示第j个核心的最早开始可用时间,makespan为预计调度完成时间。最早开始可用时间coreavatimej越小,表示当前计算权重的核心能够尽早可用。上式表示当最早开始可用时间coreavatimej越小时,时间权重tj越大。
[0116]
本实施例在基于二分法调整上边界和下边界时,核心数目逐个递增,因此可以通过计算所有可用的核心的权重值λj,选择权重值最大的核心为当前任务初始核心数目时的核心或核心数目增加时添加的核心core
jmax

[0117]
其中core
jmax
即为权重值λ
jmax
=max(λ1,λ2,λ3…

t
)对应的核心。
[0118]
在其中一个实施例中,所述步骤1042中数据块的选择方式如下所示:
[0119]
待分配任务的核心选择以后,给待分配任务的每个核心分配数据块;分配数据块时,计算数据块分配至不同核心的计算时间,将数据块部署至计算时间最小的核心或对任务的执行时间影响最小的核心上;所述计算时间包括迁移时间与执行时间。
[0120]
具体的,数据块的分配部署,即确定使用步骤1042中选择的执行任务的哪一个核心来处理数据块的哪一个备份。每个数据块包括多个备份,不同备份分配至不同核心时,选择计算时间最短的核心或部署后任务的执行时间影响最小的核心和此时对应的备份进行数据块的分配。本实施例在数据块的部署上,考虑数据块包括多个备份,若存在一个数据块的一备份所在的主机上的核心作为执行任务的核心,此时为了减少迁移时间会优先选择本地的核心进行数据块的部署。但若存在多个备份所在的主机上的核心均作为执行任务的核心,或所有备份所在的主机上的核心均未作为执行任务的核心;此时则通过考虑对当前分配情况下,任务的执行时间影响最小的核心及其对应的备份进行数据部署;即考虑核心已分配的任务对执行时间开始时刻的影响和数据块备份所在主机传输数据的影响,选择合适的备份和核心进行数据块的分配部署。例如若存在两个核心的计算时间一致,一个当前已分配的计算任务较多,一个已分配的计算任务较少,则选择计算任务较少的核心和对应的备份进行数据块的分配部署。本实施例基于数据本地性给当前jobi的所有核心部署数据块block,由于计算数据块的计算时间时,考虑了迁移时间,因此会优先考虑将数据块部署至本地主机的核心。即由于数据迁移导致较大的传输时间,故在该算法中,优先部署数据块block到本地主机host的核心core上。仅当前主机host上未分配核心时,会把数据块block部署到其他主机的核心,基于贪心策略,会传输数据块到使得当前job的关键路径时间增加的最少的核心上此时会产生传输数据的迁移时间。
[0121]
具体的,单个任务jobi选择出的核心core1,core2,core3…
,corej…
,coren后,尝试给所有核心部署当前任务jobi的数据块;尝试部署相关的数据块block到每一个核心上,求
解每一个数据块block的计算时间blockexectime,计算时间包括迁移时间与执行时间,计算公式如下所示:
[0122][0123]
其中γ为:
[0124][0125]
其中blocksize为数据块大小,datatrandspeed为网络传输速度,γ为迁移系数,jobcalcspeed为任务执行速度,f(n)为衰减系数,n为参与计算的核心数量。
[0126]
在其中一个实施例中,所述基于二分法的分布式计算任务调度方法还包括,在第一时刻或第二时刻或第三时刻时,基于block粒度对任务的关键路径进行数据迁移或/和数据交换操作,将关键路径的部分数据块的计算分配至非关键路径;第一时刻为步骤1042中,选择主机、核心与数据块后;第二时刻为步骤1044中,所有任务分配完成后;第三时刻为步骤1045中,上边界或下边界更新后,满足预设调度完成条件后;所述关键路径为当前job计算时间最长的核心。
[0127]
本实施例中,非关键路径即除关键路径以外的其他核心;由于整个任务job的计算执行时间,是由最长计算执行时间的核心core决定的。所以削减关键路径,可以减少整个任务job的计算执行时间,同时尽早释放该任务job占用的核心core。由于将数据块部署到核心时,优先选择的与核心同一个主机的数据块,因此若一个主机上存在当前待分配任务较多的数据块时,可能会导致当前主机上的核心分配较多的本地数据块的计算,使得当前主机上核心的计算执行时间过长。因此对计算执行时间最长的核心的数据块进行数据块的迁移和交换,通过对数据块block的重新放置或者是交换去平衡每个核心core上执行的数据块block的计算,以削减关键路径的计算时长,实现减少所有任务的计算时间,提高计算效率的目的。可以根据实际需要选择数据迁移和或/和数据交换操作的时刻,例如在第一时刻时进行,则可以在各任务的核心等确认时,对之前已部署的核心和数据块的情况进行优化,以实现对后续核心和数据块的更好的部署情况;在第二时刻时进行,则相较于第一时刻优化,大大减少优化次数,得到当前预计调度完成时间下任务优化后的执行时间情况,对已分配的任务进行调度的优化,便于后续任务的部署与优化,或者可用于调整上边界和下边界,以便快速完成任务的调度;在第三时刻时进行,则优化次数最少,可以减少任务调度的时间,但此时各任务的核心和数据块均已部署完成,此时优化难度大,且任务间的联系不紧密。因此综合考虑基于二分法的分布式计算任务调度方法的计算时间以及调度后所有任务的分布式计算的计算效果,选择第二时刻进行数据迁移或/和数据交换操作。根据任务场景,可以基于数据迁移和数据交换操作中的一个操作,或采用两个操作的结合来进行关键路径的数据块的削减。
[0128]
如图2所示,在其中一个实施例中,基于block粒度对关键路径进行数据迁移和数据交换操作,包括以下步骤:
[0129]
步骤201,获取关键路径和最短路径的计算执行时间;判断关键路径和最短路径的计算执行时间差值是否大于第一阈值,若大于第一阈值,执行步骤202;反之,结束数据迁移
和数据交换操作;
[0130]
步骤202,非关键路径按照计算执行时间由小到大的顺序排序,得到第一非关键路径队列,所述第一非关键路径队列用于确定数据迁移操作时,选择的非关键路径的顺序;
[0131]
步骤203,基于第一非关键路径队列,选择关键路径上的待迁移数据块所放置的非关键路径;判断关键路径与当前被迁移的非关键路径之间的计算执行时间差值是否大于第二阈值,若大于第二阈值,执行步骤204,若小于或等于第二阈值,执行步骤205;
[0132]
步骤204,关键路径上的待迁移数据块放置到非关键路径上,进行数据迁移后,关键路径的计算执行时间是否缩短;若缩短,则进行本次数据迁移,然后执行步骤201;若未缩短,且关键路径上存在数据块未进行迁移尝试时,不进行本次数据迁移,重新选择待迁移数据块执行步骤203;若未缩短,且关键路径上的所有数据块均不能迁移至当前选择的非关键路径上,则更换下一个非关键路径进行数据迁移,执行步骤203;
[0133]
其中,待迁移数据块的选择包括以下步骤:关键路径上的数据块按照数据块大小升序排列,先尝试对小的数据块进行迁移,在该数据块不满足迁移条件时,尝试对下一个数据块进行迁移直至关键路径上的数据块均已尝试迁移。小数据块的迁移利于填补其他路径上的空隙,降低关键路径上的执行时间,而直接迁移大数据块可能会导致被迁移的路径变成关键路径,增加了无效操作。
[0134]
步骤205,数据迁移操作后的非关键路径按照计算执行时间由小到大的顺序排序,得到第二非关键路径队列,所述第二非关键路径队列用于确定数据交换操作时,选择的非关键路径的顺序;
[0135]
步骤206,基于第二非关键路径队列,选择关键路径上的待交换数据块进行数据块交换的非关键路径;判断关键路径与当前被交换的非关键路径之间的计算执行时间差值是否大于第三阈值,若大于第三阈值,执行步骤207,若小于或等于第三阈值,结束数据迁移和数据交换操作;
[0136]
步骤207,关键路径上的待交换数据块与非关键路径上的待交换数据块进行数据交换后,判断关键路径的计算执行时间是否缩短;若缩短,则进行本次数据交换,然后执行步骤201;若未缩短,且关键路径和非关键路径上的数据块均已配对进行数据交换尝试,则不进行本次数据交换,更换非关键路径,执行步骤206;若未缩短,且存在关键路径和非关键路径上的数据块未配对进行数据交换尝试,则不进行本次数据交换,更换关键路径和非关键路径上的待交换数据块,执行步骤206。
[0137]
其中,关键路径与非关键路径上的待交换数据块的选择包括以下步骤:基于数据块大小升序选择关键路径上的待交换数据块,非关键路径上的数据块选择基于数据块大小进行排降序,即用关键路径较大的数据块交换非关键路径较小的数据块,达到缩减关键路径的作用。
[0138]
本实施例给出了综合采用数据迁移和数据交换操作来进行关键路径的数据块的削减的具体操作方式。其中,最短路径为计算时间最短的核心的路径。实际应用时,可以根据具体应用场景,结合上述的描述实现只采用数据迁移和数据交换中的一个操作来削减关键路径的数据块。本实施例的第一阈值、第二阈值与第三阈值的大小可以一致,也可以不一致;各阈值的设置可以为根据应用场景设定的固定的常规值,也可以根据本次任务的参数自适应设置。
[0139]
具体的,第一阈值、第二阈值与第三阈值的大小一致,计算方式如下所示:
[0140][0141]
thresholdtimei表示第i个任务jobi的退出迁移与交换的第一阈值、第二阈值与第三阈值的大小;blocksize为数据块大小;jobcalcspeedi为第i个任务jobi的任务执行速度。阈值的大小为该任务job最小数据块block的预估执行时间的一半。
[0142]
在其中一个实施例中,步骤104中基于二分法调整上边界和下边界的具体步骤如下所示:
[0143]
若存在待分配任务的核心数目等于核心数目总量时,该待分配任务仍不能在预计调度完成时间内计算完成,则将预计调度完成时间记作下边界,执行步骤103;
[0144]
若任务队列的所有任务在预计调度完成时间内计算完成,判断本次的预计调度完成时间是否等于上一次的预计调度完成时间;若本次的预计调度完成时间等于上一次的预计调度完成时间,则满足预设调度完成条件,输出调度结果;反之,则将预计调度完成时间记作上边界,执行步骤103;
[0145]
即,若任务队列不能在预计调度完成时间makespan范围内调度完成,此时应该增加预计调度完成时间makespan大小,即增加下边界downbound的值,此时downbound=makespan,返回步骤103继续搜索;
[0146]
若任务队列可以在预计调度完成时间makespan内调度成功,判断当前预计调度完成时间makespan是否与上一次的预计调度完成时间makespan相同;如不相同,此时应当缩小预计调度完成时间makespan大小,即减少上边界upbound的值,此时upbound=makespan,返回步骤103继续搜索;如果当前预计调度完成时间makespan与上一次的预计调度完成时间makespan相同,则二分法调整上边界或下边界已经结束,输出最终调度结果。
[0147]
实验证明,我们的调度算法相比较传统的调度方式,能够显著提升cpu的利用率,减少数据传输,同时算法求解效率高,执行速度较快。
[0148]
实施例2
[0149]
如图3所示,本实施例提供一种基于二分法的分布式计算任务调度设备,下文描述的一种基于二分法的分布式计算任务调度设备与上文描述的一种基于二分法的分布式计算任务调度方法可相互对应参照。
[0150]
参见图3所示,该基于二分法的分布式计算任务调度设备包括:
[0151]
存储器d l,用于存储计算机程序;
[0152]
处理器d2,用于执行计算机程序时实现上述方法实施例的基于二分法的分布式计算任务调度方法的步骤。
[0153]
具体的,请参考图4,为本实施例提供的基于二分法的分布式计算任务调度设备的具体结构示意图,该基于二分法的分布式计算任务调度设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,cpu)322(例如,一个或一个以上处理器)和存储器332,一个或一个以上存储应用程序342或数据344的存储介质330(例如一个或一个以上海量存储设备)。其中,存储器332和存储介质330可以是短暂存储或持久存储。存储在存储介质330的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对数据处理设备中的一系列指令操作。更进一步地,中央处理器322
可以设置为与存储介质330通信,在基于二分法的分布式计算任务调度设备301上执行存储介质330中的一系列指令操作。
[0154]
基于二分法的分布式计算任务调度设备301还可以包括一个或一个以上电源326,一个或一个以上有线或无线网络接口350,一个或一个以上输入输出接口358,和/或,一个或一个以上操作系统341。例如,windows servertm,mac os xtm,unixtm,linuxtm,freebsdtm等。
[0155]
上文所描述的基于二分法的分布式计算任务调度方法中的步骤可以由基于二分法的分布式计算任务调度设备的结构实现。
[0156]
以上所述,仅为本发明具体实施方式的详细说明,而非对本发明的限制。相关技术领域的技术人员在不脱离本发明的原则和范围的情况下,做出的各种替换、变型以及改进均应包含在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献