一种多用户多队列调度方法

文档序号:7807563阅读:194来源:国知局
一种多用户多队列调度方法
【专利摘要】本发明提供一种多用户多队列调度方法,具体包括以下步骤:建立多用户多队列调度模型;调度服务器接收用户提交的作业,并对作业进行缓存;调度服务器对作业进行周期性循环调度,并将作业下发给资源对应的服务器。本发明提供一种多用户多队列调度方法,在任何调度场景下,它既可以避免用户间的调度抢占,又能在兼顾作业优先级的前提下,保证低优先级作业一定的调度机率。
【专利说明】一种多用户多队列调度方法

【技术领域】
[0001]本发明涉及一种调度方法,具体涉及一种多用户多队列调度方法。

【背景技术】
[0002]目前云计算或分布式计算领域中使用最广泛的是Hadoop中的三类调度算法:先入先出算法FIF0(First In First Out)、公平份额调度算法(Fair Scheduler)和计算能力调度算法(Capacity Scheduler)。
[0003]DFIFO算法的主要思想是:所有用户的作业都被提交到一个队列中,作业按照优先级高低、提交时间先后进行排序;若作业的优先级不同,优先级较高的作业总是优先执行;若作业的优先级相同,提交时间较早的作业总是优先执行。该方法具有如下的缺点:1)无法避免用户间的调度抢占。若某用户提交了大量的作业,则该用户可以得到更多的调度时间;2)无法照顾低优先级作业的调度。在高优先级的作业存在时,低优先级的作业将一直得不到调度。
[0004]2)公平份额调度算法(Fair Scheduler)的主要思想是:为每一个用户建立一个作业队列,并为每个队列分配额定的调度时间,在每个队列内部按照上述FIFO的算法进行调度。该方法具有如下的缺点:无法保证优先级高的作业被调度的机率更高。由于用户被分配的调度时间是确定的,当某用户提交的作业较少时,其低优先级的作业可能比其它用户的高优先级的作业更容易被调度。
[0005]3)计算能力调度算法(Capacity Scheduler)的主要思想是:建立多个作业队列,并为每个队列分配一定的调度时间;在调度时,总是优先选择实际调度时间与预期相差最大的作业队列;在每个队列内部按照上述FIFO的算法进行调度。该方法具有如下的缺点:由于每个作业队列的调度时间是额定的,当不同队列的作业数量差别较大时,存在优先级低的作业被优先调度的情况。


【发明内容】

[0006]为了克服上述现有技术的不足,本发明提供一种多用户多队列调度方法,在任何调度场景下,它既可以避免用户间的调度抢占,又能在兼顾作业优先级的前提下,保证低优先级作业一定的调度机率。
[0007]为了实现上述发明目的,本发明采取如下技术方案:
[0008]本发明提供一种多用户多队列调度方法,所述方法具体包括以下步骤:
[0009]步骤1:建立多用户多队列调度模型;
[0010]步骤2:调度服务器接收用户提交的作业,并对作业进行缓存;
[0011]步骤3:调度服务器对作业进行周期性循环调度,并将作业下发给资源对应的服务器。
[0012]所述步骤I中,多用户多队列调度模型如下:
[0013]定义资源集合Φ = Iri I i = 1,2,…,η},其中!Ti表示资源集合中第i个资源,η表示资源集合中资源总数;作业集合ψ = {tj |j = l, 2,…,m},其中tj表示作业集合中第j个作业,m表示作业集合中作业总数;函数U(tp表示作业&所属的用户,函数K(tp表示作业h的优先级;作业队列ψυΛ= ItjIuajM =ιτκαρ =ki表示所属用户为u、优先级为k的所有作业的集合,其中U e (I, U),ke (I, K), U为用户总数,κ为最高优先级;定义Wiu表示作业集合ΨυΛ上一次被调度的时间,Pk为优先级为k的作业的被调度概率,
且有ΣnkPk =1。
[0014]所述步骤2包括以下步骤:
[0015]步骤2-1:当调度服务器接收到用户提交的作业时,根据U(tj)、K(tj)查找作业&对应的作业队列Wu,k ;
[0016]步骤2-2:当Ψυ;1?尚未创建,则创建该作业队列,并设置wu,k = O ;
[0017]步骤2-3:将作业&按照先入先出顺序放入作业队列Wu,k。
[0018]所述步骤3包括以下步骤:
[0019]步骤3-1:记录当前时间w ;
[0020]步骤3-2:计算每个非空的作业队列Wu,k的调度权重fu,k = (w-wu;k) pk,并选出fu,k最大的作业队列Ψ' u;k ;
[0021]步骤3-3:按照先入先出顺序从Ψ' u,k中取出作业t'」,并在资源集合Φ中找到满足t' ^条件的资源将t' ^下发到资源&对应的服务器上运行;
[0022]步骤3-4:更新Ψ ' u;k的上一次被调度时间,使更新后的时间w' u,k等于w ;
[0023]步骤3-5:检查每个为空的作业队列Wu,k,若wu,k < w-w。,将Wu,k删除,其中W。为调度最大记忆时间。
[0024]与现有技术相比,本发明的有益效果在于:
[0025]1.本发明提供的多用户多队列调度方法,可以在多用户、多优先级的作业调度环境中,使得:(1)若作业的优先级不同,优先级高的作业被调度的机率更高;(2)若作业的优先级相同,不同用户的作业被调度的机率与用户提交的作业数量无关;
[0026]2.该方法为每一个用户的每一个优先级的作业建立一个独立的作业队列,并在作业调度时,根据作业队列的优先级、上一次被调度的时间选择需要调度的作业队列
[0027]3.与目前广泛使用的Hadoop中公平份额调度算法(Fair Scheduler)与计算能力调度算法(Capacity Scheduler)调度方法相比,该方法可以保证在任何调度场景下的公平性。

【专利附图】

【附图说明】
[0028]图1是本发明实施例中作业接收和缓存流程图;
[0029]图2是本发明实施例中作业调度与下发流程图。

【具体实施方式】
[0030]下面结合附图对本发明作进一步详细说明。
[0031]本发明提供一种多用户多队列调度方法,所述方法具体包括以下步骤:
[0032]步骤1:建立多用户多队列调度模型;
[0033]所述步骤I中,多用户多队列调度模型如下:
[0034]定义资源集合Φ = Iri I i = 1,2,..., η},其中!Ti表示资源集合中第i个资源,η表示资源集合中资源总数;作业集合Ψ = Itj |j = l, 2,…,m},其中tj表示作业集合中第j个作业,m表示作业集合中作业总数;函数U(tp表示作业&所属的用户,函数K(tp表示作业h的优先级;作业队列ψυΛ= ItjIuajM =ιτκαρ =ki表示所属用户为u、优先级为k的所有作业的集合,其中U e (I, U),ke (I, K), U为用户总数,κ为最高优先级;定义Wiu 表示作业集合ΨυΛ上一次被调度的时间,Pk为优先级为k的作业的被调度概率,
且有二1。
I
[0035]步骤2:调度服务器接收用户提交的作业,并对作业进行缓存;
[0036]如图1,所述步骤2包括以下步骤:
[0037]步骤2-1:当调度服务器接收到用户提交的作业时,根据U (tj、K(tj)查找作业tj对应的作业队列Wu,k ;
[0038]步骤2-2:当Ψυ;1?尚未创建,则创建该作业队列,并设置wu,k = O ;
[0039]步骤2-3:将作业tj按照先入先出顺序放入作业队列Wu,k。
[0040]步骤3:调度服务器对作业进行周期性循环调度,并将作业下发给资源对应的服务器。
[0041]所述步骤3包括以下步骤:
[0042]如图2,步骤3-1:记录当前时间w ;
[0043]步骤3-2:计算每个非空的作业队列Wu,k的调度权重fu,k = (w-wu;k) pk,并选出fu,k最大的作业队列Ψ' u;k ;
[0044]步骤3-3:按照先入先出顺序从Ψ' u,k中取出作业t'」,并在资源集合Φ中找到满足t' ^条件的资源将t' ^下发到资源&对应的服务器上运行;
[0045]步骤3-4:更新Ψ ' u;k的上一次被调度时间,使更新后的时间w' u,k等于w ;
[0046]步骤3-5:检查每个为空的作业队列Wu,k,若wu,k < w-w。,将Wu,k删除,其中W。为调度最大记忆时间。
[0047]实施例
[0048]在实施例中用到的数据结构伪码为:
[0049]/*资源的数据结构*/
[0050]struct resource {
[0051]int rid;//资源 ID
[0052]/bother attributes*/
[0053]};
[0054]/*作业的数据结构*/
[0055]struct task {
[0056]int tid ;// 作业 ID
[0057]string user ;// 作业所属用户
[0058]int k ;//作业优先级
[0059]/bother attributes*/
[0060] };
[0061]/*作业队列的数据结构*/
[0062]struct queue {
[0063]string user ;//作业队列所属的用户
[0064]int k ;//作业队列的优先级
[0065]int last_sch_time ;// 上一次被调度时间
[0066]float sch_weight -J/ 调度权重
[0067]/bother attributes*/
[0068]};
[0069]设优先级为1-5,其中I最低、5最高。初始化不同优先级作业的调度概率floatpri [5],pri [I] = 0.03,pri [2] = 0.07,pri [3] = 0.15,pri [4] = 0.25,pri [5] = 0.5。
[0070]初始化调度最大记忆时间sch_max_record_time = 600秒。
[0071]一种公平的多用户多队列调度方法,在收到作业时触发“作业接收与缓存过程”,包含如下步骤:
[0072]在步骤10,当收到作业task时,在作业队列集合中查找对应的作业队列queue,要求 queue, user = = task.userMqueue.k = = task, k。
[0073]在步骤20,若未找到这样的作业队列,创建该作业队列,记为queue,并初始化queue, user = task, user, queue, k = task, k, queue.last_sch_time = 0。
[0074]在步骤30,若找到这样的作业队列,记为queue。
[0075]在步骤40,将task按照FIFO的顺序,放入queue的队尾。
[0076]本发明提供一种公平的多用户多队列调度方法,每隔0.01秒调用“作业调度与下发过程”,包含如下步骤:
[0077]在步骤100,记录当前时间now。
[0078]在步骤110,遍历每一个作业队列queue,若queue为空则直接忽略,否则计算queue 白勺调度权重,即 queue.sch_weight = (now - queue.last_sch_time)氺pri [queue, k]。
[0079]在步骤120,选出queue.sch_weight最大的作业队列,记为sch_queue。
[0080]在步骤130,按照FIFO顺序从sch_queue中取出第一个作业,记为sch_task。
[0081]在步骤130,在资源集合中找到满足sch_task条件的资源sch_resource。
[0082]在步骤140,将 sch_task 下发到 sch_resource 上运行。
[0083]在步骤150,更新 sch_queue 的上一次被调度时间 sch_queue.last_sch_time =now ο
[0084]在步骤160,检查每一个作业队列queue,若queue为空,且queue.last_sch_time<now - sch_max_record_time,则将 queue 删除。
[0085]最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,所属领域的普通技术人员参照上述实施例依然可以对本发明的【具体实施方式】进行修改或者等同替换,这些未脱离本发明精神和范围的任何修改或者等同替换,均在申请待批的本发明的权利要求保护范围之内。
【权利要求】
1.一种多用户多队列调度方法,其特征在于:所述方法具体包括以下步骤: 步骤1:建立多用户多队列调度模型; 步骤2:调度服务器接收用户提交的作业,并对作业进行缓存; 步骤3:调度服务器对作业进行周期性循环调度,并将作业下发给资源对应的服务器。
2.根据权利要求1所述的多用户多队列调度方法,其特征在于:所述步骤I中,多用户多队列调度模型如下: 定义资源集合Φ = Iri I i = 1,2,…,η},其中!Ti表示资源集合中第i个资源,η表示资源集合中资源总数;作业集合Ψ = ItjI j = 1,2,…,m},其中tj表示作业集合中第j个作业,m表示作业集合中作业总数;函数U(tp表示作业&所属的用户,函数K(tp表示作业\的优先级;作业队列ψυΛ= ItjIuajM =ιτκαρ =ki表示所属用户为u、优先级为k的所有作业的集合,其中U e (I, U), k e (I, K), υ为用户总数,κ为最高优先级;定义表示作业集合上一次被调度的时间,Pk为优先级为k的作业的被调度概率,且有 ?>* 二1。
I
3.根据权利要求2所述的多用户多队列调度方法,其特征在于:所述步骤2包括以下步骤: 步骤2-1:当调度服务器接收到用户提交的作业时,根据U (tp ,K(tj)查找作业&对应的作业队列Wu,k ; 步骤2-2:当ΨυΛ尚未创建,则创建该作业队列,并设置wu,k = O ; 步骤2-3:将作业tj按照先入先出顺序放入作业队列Wu,k。
4.根据权利要求3所述的多用户多队列调度方法,其特征在于:所述步骤3包括以下步骤: 步骤3-1:记录当前时间w ; 步骤3-2:计算每个非空的作业队列Wta的调度权重fu,k = (w-wu;k)pk,并选出fu,k最大的作业队列Ψ' u;k ; 步骤3-3:按照先入先出顺序从Ψ' u,k中取出作业t' P并在资源集合Φ中找到满足t'」条件的资源将t'」下发到资源&对应的服务器上运行; 步骤3-4:更新Ψ' u,k的上一次被调度时间,使更新后的时间w' u,k等于w; 步骤3-5:检查每个为空的作业队列Ψ^,若Wiu < wi。,将Ψ。删除,其中W0为调度最大记忆时间。
【文档编号】H04L12/865GK104079502SQ201410302274
【公开日】2014年10月1日 申请日期:2014年6月27日 优先权日:2014年6月27日
【发明者】刘欣然, 沈时军, 朱春鸽 申请人:国家计算机网络与信息安全管理中心
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1