面向生物基因测序计算任务的多队列回填作业调度方法

文档序号:9929430阅读:774来源:国知局
面向生物基因测序计算任务的多队列回填作业调度方法
【技术领域】
[0001] 本发明涉及高性能计算领域,特别涉及一种面向生物基因测序计算任务的多队列 回填作业调度方法。
【背景技术】
[0002] 在高性能计算系统特别是高性能计算集群中,作业调度扮演着极其重要的作业。 作业调度按照不同的用户需求采用合适的调度策略,分配合适的资源去执行作业。作业调 度关系到作业的整个生命周期,涉及集群的各组成部分,直接影响着作业的运行效率与系 统的吞吐率及资源利用。为了充分利用高性能计算集群的系统资源,保证作业迅速而又高 效的执行,采用合适的方法进行作业调度显得十分必要。
[0003] 基因测序是对目标DNA进行碱基的序列测定,并进行各种相关分析。基因测序已经 广泛应用于快速疾病诊断、疫情检测、大规模物种群体进化及个性化医疗等。基因测序的大 部分计算任务如基因重测序、基因组关联分析等需要大量计算,利用高性能计算系统进行 基因数据分析已经成为许多科研机构和公司采用的方式。基于基因测序的应用特性,其计 算任务通常具有以下特点:(1)高通量(High-through):作业规模很大,大部分为串行作业, 少量并行作业。并行作业大多数为单节点的多线程任务;(2)资源需求大:除了对CPU资源有 较大需求外,对内存、I/O等资源的需求也较大;(3)作业流程复杂:有些作业具有自己的工 作流,有些作业采用分布式的消息传递机制。用户在提交作业时,需要预估作业使用的资 源,并自己控制工作流程或者并行机制。这些作业特性导致采用传统的作业调度方式不能 获得很好的效果,系统的资源利用率较低。因此,设计一种面向基因测序高性能计算系统的 作业调度方法,提高作业的运行效率与系统的资源利用,是十分必要的。
[0004] 在大规模并行系统作业调度领域,资源预留与回填(简称回填,Backfilling)技术 得到了广泛的应用,已成为并行作业调度的基本方法。它一方面为作业提前预留处理机以 保证能够尽快执行该作业;另一方面,在不造成预留的作业被延迟的前提下,按照先后顺序 将那些需要处理机数量较少的后续等待作业分配到当前空闲的处理机上。与传统的作业调 度方法相比,资源预留与回填在保持基本的先来先服务特征的基础上,充分利用了系统的 空闲资源,同时减少了作业的等待,具有更好的性能。本发明主要针对基因测序的应用环境 及具体需求,对资源预留与回填进行改进。

【发明内容】

[0005] 本发明的目的在于克服现有技术的缺点与不足,在生物信息作业负载特性分析的 基础上,提出了一种面向生物基因测序计算任务的多队列回填作业调度方法,首先对每个 队列实施基于内存资源优化的回填调度,在此基础上以多对列的方式进行回填调度,实现 队列级别的负载均衡。采用该方法能够获得很好的调度效果,改善系统性能。
[0006] 本发明的目的通过如下技术方案实现:一种面向生物基因测序计算任务的多队列 回填作业调度方法主要包括以下步骤:
[0007] S1、基于内存资源优化的回填调度:在传统的回填调度的基础上进行改进,设计基 于内存资源优化的回填调度;在作业调度的过程中,充分考虑了作业的CPU与内存属性,根 据这两个属性进行作业的资源预留与回填,从而尽可能的提高系统的利用率,使作业整体 尽可能快的运行。在利用资源预留形成的资源空隙进行回填时,保证不影响作业等待队列 中第一个作业的运行;
[0008] S2、多对列负载均衡回填调度:基于内存资源优化回填调度的基础上,以多对列的 方式进行回填调度,并且提供了队列级别的负载均衡,主要用于解决由于多对列的划分造 成的作业等待与资源浪费的问题,平衡各队列间的负载,同时提供了改进方案:动态选择阈 值策略与优化迀移策略。
[0009] 所述步骤S1中:记waitList为作业等待队列,runList为作业运行队列,resList为 作业预约队列;系统资源集合为R,其中包含系统的计算节点;进行作业调度的具体流程如 下:
[0010] S11:按照作业的提交时间顺序,提取waitList中的第一个作业i ;
[0011] S12:判断作业i能否在R中直接运行:即在当前的系统资源中,能够找到满足当前 作业资源需求的节点,也就是说该节点拥有的空闲资源(CPU以及内存)大于作业运行需要 的资源;若节点已预约作业,则还需判断将该作业分配到这个节点上运行是否影响已预约 的作业。
[0012] S13:若作业i不能直接运行,判断能否对i进行预约,即在R中寻找节点为i进行资 源预留;
[0013] 所述步骤S13中规定每个节点最多有一个作业预约;如果还有节点未预约作业,则 可以进行作业预约,进入作业预约步骤。
[0014] S14:若作业i能够在某个节点上运行,则可以将该作业进行回填,进入作业回填步 骤。
[0015] S15:若不能对该作业i进行预约或者回填,则遍历waitList,提取下一个作业,返 回至S12继续执行。
[0016]所述步骤S12中判断不对预约作业造成影响的标准为:该作业在预约作业执行之 前结束,或者该作业需求的资源小于预约作业执行后节点的空闲资源。
[0017]所述作业预约步骤流程为:
[0018] step 1:计算作业i所需的资源:计算该作业运行需要的CPU核数、最大内存以及预 计运行时间;
[0019] step 2:遍历R的节点列表,计算未预约作业的节点能够运行作业i的最早时间;
[0020] 在这些节点中,随着已运行作业的完成,节点中剩余的空闲资源越来越多,节点空 闲资源开始大于该作业需求资源的时刻,即能够运行该作业的最早时间;
[0021] step 3:比较各节点能够运行作业i最早时间,获取这个时间最小的节点;
[0022] step 4:选择该节点为预约作业i的节点,将作业从waitList移动至resList,在节 点上为作业预留资源,即将作业需求的资源预先分配到节点上,记录能够运行该作业的最 早时间;
[0023] step 5:返回主程序。
[0024]所述作业回填步骤流程为:
[0025] (1):计算作业i所需的资源;
[0026] (2):遍历R的节点列表:遍历节点列表之前,首先将节点列表按节点的CPU负载大 小排序,即按照节点当前的CHJ利用率排序,将节点按照CPU负载排序,能够保证作业优先在 负载较低的节点上运行,有利于系统的负载均衡;
[0027] (3):获取负载最小的节点,将作业i回填至该节点,在节点上为作业分配资源,将 作业从waitList移动至runList;
[0028] (4):返回主程序。
[0029] 所述步骤S2中:定义队列k的负载
其中jn表示队列中运行作业i使用的 资源,nr谦示队列包含的节点j的资源总量,选取一个大小在区间(0,1)的阈值Lthre5S,多对 列负载均衡调度策略为:
[0030] 当Lk>Lthres时,停止向队列k投递作业,遍历所有队列,将原本投递至队列k的作业 转为投向负载最低的队列;当Lk<Lthm时,允许继续向队列k投递作业。
[0031] 采用这种调度策略能够改善当某个队列负载过高时,由于队列资源不足导致作业 无法立即运行,从而等待时间过长的现象;为了避免作业迀移至其他队列过于频繁,L thres- 般取大于0.8的值,同时为了减小迀移的作业对未迀移作业的影响,设置迀移作业的优先级 低于未迀移作业的优先级,即未迀移的作业总是在迀移作业之前运行。
[0032] 在此基础上,提供了动态选择阈值策略,根据队列的负载,动态的、实时的选取阈 值,对多对列负载均衡调度策略进行了改进。动态选择阈值的策略根据实际的队列作业情 况与负载情况,动态的决定是否需要对队列进行负载均衡,能够更充分的利用队列的资源。 [00 33]所述步骤S2中定义:队列k的作业迀移代价Cmk= 2 jtri jriw;队列k的作业等待代价 Cwk= 2 jtwijri;
[0034] 其中九^表示作业i的预计执行时间,该值由用户预估的作业执行时间获得,w表 示作业迀移代价的权重,jtWl表示队列不采用负载均
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1