发明内容
为满足现有技术发展的需要,本发明提供了一种分布式资源调度方法和调度系统。
本发明提供的分布式资源调度方法,其改进之处在于,所述方法包括
按评定的新任务处理请求的优先级别,将任务分配到对应的优先级等待队列;
根据获得任务的优先级等待队列,选定当前调度队列;
根据选定的调度队列,调用预先生成的资源分配策略为新任务请求分配可用的分布式节点资源。
进一步的,
所述等待队列包括优先级别从高到低n个优先级别等待队列q1、q2、…、qn和具有最高优先级qtop的等待队列Q;
所述将任务分配到对应优先级等待队列包括:将评定的优先级pi的新任务处理请求分配到优先级qi的等待队列i,并记录任务进入队列i的时间;将需立即执行的新任务分配至等待队列Q。
进一步的,所述选定当前调度队列包括:
若pi=qtop,且等待队列Q为当前调度队列,则当有可用的分布式节点资源剩余或空闲时,调用资源分配策略;否则继续等待至有可用的分布式节点空闲时调用资源分配策略;
若等待队列Q不是当前调度队列,则保存当前调度队列包含任务的完成情况,抢占可用的分布式节点资源,调度资源分配策略为等待队列Q分配可用的分布式节点资源。
进一步的,所述选定当前调度队列包括:
若pi=qi,且等待队列i为当前调度队列j,则当有可用的分布式节点资源剩余或空闲,调用资源分配策略;否则继续等待至有可用的分布式节点空闲时调用资源分配策略;
若等待队列i不是当前调度队列,则在等待队列i被选定为调度队列后调用资源分配策略。
进一步的,所述等待队列被选定为当前调度队列包括:
(1)按下式计算当前队列i的队列评价函数fi:
fi=αiqi+βt′ij
式中,αi:为当前调度队列i的权重系数;qi:当前调度队列i的优先级;β:任务等待时间的权重系数;t′ij:当前等待队列i中最早进入队列的任务j的等待时间,t′ij=tc-tij,tij:为当前调度队列i中最早进入队列的任务j的进入队列时间;tc:为当前时间;
(2)按下式计算等待队列k的队列评价函数fk:
fk=αkqk+βt′kj′
式中,αk:为当前调度队列k的权重系数;qk:当前调度队列k的优先级;t′kj′:等待队列k中最早进入队列的任务j′的等待时间,其t′kj′=tc-tkj′,tkj′:为当前调度队列k中最早进入队列的任务j的进入队列时间;
(3)比较队列评价函数fi和队列评价函数fk:
若fk>fi,则保存当前调度队列i的任务处理情况,终止当前任务执行,并回收分布式节点资源,为等待队列k分配资源;
若fk≤fi,则继续执行调度队列i中待处理任务,直至满足fk>fi时作为新的调度队列,保存并终止当前调度队列i的任务,回收分布式节点资源,为等待队列k分配资源。
进一步的,所述分配可用的分布式节点资源包括:
构建下式所示的时间和成本的适应度函数F1和节点资源负载均衡度的适应度函数F2:
式中,
表示所有执行任务的节点资源运行时间的最大值;Time(r,e)表示编号为r的节点资源执行挂载其上的任务e所需的执行时间;w:为分配给节点资源r执行的任务个数;R为分布式资源调度系统中可用的分布式节点资源总数;T为调度队列所包含的待处理任务的总数;
表示所有可用节点资源执行任务花费成本总和;Cost(r)表示编号为r的节点资源单位时间执行任务所花费的成本;σ
1、σ
2:用户偏好因子;
节点资源r的负载均衡率;ability(r):表示编号为r的节点资源上所有任务实际所需的能力;total_ability(r):表示编号为r的节点资源自身的执行能力;ω为常数。
进一步的,所述资源分配策略的生成包括:
(1)初始化控制参数和种群;所述控制参数包括:当前可用的分布式节点资源总数R、调度队列中包含的待处理任务总数T、适应度选择因子P、用户偏好因子σ1和σ2、交叉概率Pc、变异概率Pm、最大进化代数G以及当前进化代数t;
(2)以适应度选择因子P选择F1作为当前的适应度函数,以适应度选择因子(1-P)选择F2作为当前适应度函数;使用轮赌法随机选择种群中的两个个体,并以概率Pc进行染色体交叉操作,形成新个体;
(3)用适应度函数评价新个体:
若选择的适应度函数为F1,且新个体的适应度f′>上一代个体的适应度f,则直接接受新个体,否则,随机产生概率Pt,以概率Pt去接受新个体;
若选择的适应度函数为F2,且|f′|<|f|,则直接接受新个体,否则,随机产生概率Pt,以概率Pt去接受新个体;
(4)以概率Pm对新个体进行变异操作,并按适应度函数方法判断是否接受新个体,然后修改当前种群的进化代数,即t=t+1;如果t≤G,则重复执行(2),否则找出种群中适应度最大的个体,生成资源分配方案。
进一步的,所述选定当前调度队列和所述分配可用的分布式节点资源时,需要监控任务运行情况:
若等待队列Q无新任务到达,且有部分任务已完成,则可结合队列调度策略,为下一个调度队列实施资源分配策略,执行相应任务至等待队列Q的任务全部完成;
若当前调度队列i无新任务到达,且有部分任务已完成,则可结合队列调度策略,为下一个等待队列实施资源分配策略,执行相应任务直至选定等待队列l(l≠i)作为当前调度队列。
一种分布式资源调度系统,所述系统包括:
队列管理器:用于匹配任务等待队列;记录任务进入调度队列的时间;更新任务信息;提供用户操纵队列接口;
队列调度器,用于综合考虑任务优先级和任务等待时间,根据用户需求,权衡评价因子,并根据队列评价函数F确定当前调度队列;
任务监视器,用于响应记录任务完成情况请求,实时监控任务执行情况,并将监视结果反馈给资源分配器;
资源分配器,用于结合队列调度器的调度结果与任务监视器的反馈结果调整分布式节点资源的分配。
进一步的,所述队列管理器中包括:
匹配任务等待队列模块,用于对评定任务优先级的任务请求分配至对应的优先级等待队列;若任务请求须立即执行,需要将任务分配至等待队列Q;
记录模块,用于记录任务进入调度队列的时间;
更新任务信息模块,用于根据任务监视器反馈结果更新各队列包含的任务信息;
接口模块,用于提供用户操纵队列接口。
进一步的,所述资源分配器包括:
资源分配模块,用于对任务对象进行编码和解码;基于双适应度函数的遗传算法确定资源分配策略;
空闲资源调度模块,用于将确定为空闲资源的节点资源进行资源分配;
资源回收模块,用于强制回收正在执行任务的节点资源;回收执行完挂载其上所有任务后释放的节点资源。
与最接近的现有技术比,本发明提供的技术方案具有以下有益效果:
1、本发明提供的分布式资源调度系统及方法可根据不同应用场景设定任务优先级和任务等待时间的评价因子实现队列调度;能在考虑资源负载均衡基础上,根据用户需求有效地平衡任务总完成时间和任务完成总成本,既提升了资源利用率,加快了任务执行效率,同时还保障了服务质量,提高了用户的满意度。
2、本发明提供的技术方案中的队列调度器通过考虑任务优先级和任务等待时间两个影响因素,根据实际需求权衡影响两个评价因素的评价因子,增加了目标调度队列的灵活性,提高了调度队列的公平性;在队列调度器中引入影响评价因素的评价因子,可以根据用户需求调整评价因素的影响权重,在保障服务质量的同时更好地为用户服务。
3、本发明提供的技术方案中的资源分配器作为系统核心,主要通过使用基于双适应度的遗传算法,选择任务完成总时间和任务完成总成本作为适应度函数,并根据用户需求调整这两者的权重因子,同时,选择节点资源负载均衡作为另一适应度函数,在满足用户需求的同时保障了服务质量。
4、本发明提供的技术方案中的资源分配器能根据任务监视器的反馈结果实现对空闲资源的调度,以及实现资源的抢占,回收正在执行任务的节点资源,在不影响整个系统运行的情况下提高了资源利用率,加快了任务的执行效率,为用户提供了更好的资源分配平台。
具体实施方式
以下将结合说明书附图,以具体实施例的方式详细介绍本发明提供的技术方案。
如图1所示的分布式资源调度系统结构图,包括五个部分:队列管理器、队列调度器、任务监视器、资源管理器以及操作控制中心。队列管理器和队列调度器主要是用于管理和调度已设置不同优先级的等待队列,为实施资源分配提供合理的任务对象;任务监视器主要是监视各个分布式节点资源上任务的执行情况;资源管理器主要是为即将执行的任务分配节点资源,同时若有必要还能回收正在执行任务的节点资源;操作控制中心主要是为其他四部分提供交互接口,能够响应队列调度和资源分配等相关决策的操作。
队列管理器:队列是管理任务的一种技术方式,为不同任务请求分配至相应优先级的等待队列;为实现队列调度在将任务请求分配至等待队列时记录该任务进入等待队列的时间;其次,为避免后续等待队列中任务的重复执行,与其他组件结合不断更新任务信息,如清除已完成或已失效任务;另外,队列管理器提供用户操纵队列的接口,便于用户更好地管理和维护整个等待队列。
队列调度器:队列调度为分布式节点实施资源分配提供了分配对象。通过综合考虑各种评价因素,为实现队列调度选择合理的算法在本发明中综合考虑任务优先级和任务等待时间两个评价因素,根据用户需求权衡两者的评价因子,最终根据量化结果实现队列调度。
任务监视器:任务监视主要是通过不断监视各个分布式节点来查看任务的完成情况,为评判新任务执行是否有空闲资源提供理论依据,为对任务实施资源分配时提供资源对象。另外,在系统运行过程中,如有需求,任务监视器还能响应保存当前各任务处理情况的请求。
资源分配器:针对某调度队列,资源分配主要是将待处理的任务挂载至不同的分布式节点上。在对分布式节点资源进行分配的过程中,需要在考虑节点资源负载均衡的基础上,尽可能减少任务总完成时间和任务总完成成本,提高用户满意度。由于该系统支持优先级队列抢占,因此,资源分配器还需具备强制回收资源的功能。
本发明提供的分布式资源调度方法流程包括:
1、队列管理器
队列管理是队列调度的基础。假设有n个等待队列,并已设置好相应的优先级q1、q2…qn,以及具有最高优先级qtop的等待队列Q,假设n个等待队列和等待队列Q的优先级顺序为:qtop>q1>q2>q3>…>qn,同时队列Q具有最高权限。
对队列的管理主要包括四个方面:
a)匹配任务等待队列。当有任务请求时,需要根据评定因素(如任务所属用户、任务的重要程度、任务的紧急程度等)来评定任务的优先级,同时将其分配至对应的优先级等待队列i;若该任务非常紧急,必须立即执行(如系统修复等),需要将该任务分配至Q队列。
b)记录任务进入等待队列的时间。在完成任务优先级评定后,需要将该任务分配至对应的优先级等待队列i,同时记录该任务进入等待队列的时间tij(i为等待队列,j为进入等待队列i的顺序)。
c)更新任务信息。主要是根据任务监视器反馈结果不断更新各队列所包含任务信息,即在完成任务所对应队列下清空该任务的所有信息(如任务进入队列的时间),有效利用队列空间,同时使得各队列在下一次调度时为资源分配提供最新任务对象,避免任务的重复执行,提升任务执行效率;另外,当某等待队列为空时(队列不包含任意一个待处理的任务对象),若有新任务被送达,此时该新任务进入该队列的顺序又重新置为1,便于更好地实现时间管理。
d)提供用户操纵队列接口。若有必要,需要根据用户需求调整等待队列,如修改某些等待队列的优先级,增加或删除某些等待队列等。
2、队列调度器
队列调度为实施资源分配提供了任务对象,在本发明提供的分布式资源调度系统中,通过综合考虑任务优先级和任务等待时间两种评价因素,并将其量化,然后根据用户需求,权衡影响两个评价因素的评价因子,最后根据队列评价函数F确定调度队列。
本发明提供的分布式资源调度系统的主要工作流程中需要注意的是,在确定调度队列之前,需要区分最高优先级等待队列和其余等待队列。
A.针对最高优先级等待队列Q。最高优先级等待队列Q具有最高权限,优先调度。
(1)若等待队列Q中包含需要处理的任务,需要将全部分布式节点资源分配给Q队列,执行Q队列中的所有任务;同时,若还有分布式节点资源剩余,此时需要根据针对其他优先级等待队列i的决策来选定调度队列,执行相应任务。关于在同一调度队列中选取待处理的任务为其分配资源,在本系统中主要是依据先进先执行的原则,按照给定的资源分配策略有序地执行任务。
(2)若当前调度队列为非最高优先级等待队列i(i=1,2,…,n),而最高优先级等待队列Q有新任务时,需要立即保存当前队列i的各任务处理情况,然后再根据(1)所述过程立即执行队列Q中的新任务。
B.针对非最高优先级等待队列i(i=1,2,…,n)。
(1)为不同优先级等待队列i设置相应的权重系数αi(i=1,2,…,n),即队列1的权重系数为α1,队列2的权重系数为α2等;设定任务等待时间的权重系数β;给定队列评价函数F如下式所示:
F=αiqi+βt′ij
式中,t′
ij为等待队列i中任务j的等待时间;且α
i需满足关系式:
其中j(j≠i)为非最高优先级等待队列,同时q
j<q
i。
(2)获取当前调度队列i的优先级qi;假设该调度队列中正在执行的任务数为m,获取此m个任务中最早进入该调度队列的任务task(task=1,2,…m),然后提取任务task进入该调度队列i的时间tij。
(3)获取当前时间tc,计算任务task的等待时间t′ij=tc-tij,计算当前调度队列i的队列评价函数fi=αiqi+βt′ij。
(4)获取其他非最高优先级等待队列k(k≠i,k=1,2,…,n)的优先级qk;获取最早进入等待队列k的任务task′,提取任务task′进入队列k的时间tkj′。
(5)计算任务task′的等待时间t′kj′=tc-tkj′,计算等待队列k的队列评价函数fk=αkqk+βt′kj′。
(6)比较队列评价函数fi和fk,若fk>fi,此时保存当前调度队列i的各任务处理情况,立即终止当前任务的执行,同时回收整个分布式节点资源,然后根据给定的资源分配策略对队列k中的任务按照先进先执行的原则实施资源分配;若fk≤fi,此时继续执行调度队列i中待处理的任务,队列k继续等待,直至满足fk>fi时作为新一轮调度队列。
(7)不断重复计算队列评价函数fi、fk,选择队列评价函数较大值所属队列作为调度队列,此时该调度队列中所包含的任务将获得被执行权利。
3、任务监视器
任务监视器是整个分布式资源调度系统的辅助组件,通过监视各分布式节点上任务的完成情况来提升资源的利用率,从而提升系统执行任务的效率。任务监视器主要实现两个功能:
a)响应记录任务完成情况请求。在分布式资源调度系统整个运行过程中,当需要切换调度队列实现资源抢占时(如最高优先级队列Q有新任务请求,队列调度器根据队列评价函数调度新队列等),需要立即保存当前各任务完成情况,不断更新之前的记录信息,并将保存结果反馈至队列管理器。
b)实时监控任务执行。实时监控各分布式节点上各任务的完成情况,当发现某节点已执行完挂载其上的全部任务,处于空闲状态时,将该空闲的节点资源反馈给资源分配器,然后资源分配器可按照相应的资源分配策略为其他需要处理的任务分配资源,既提升了资源利用率,也加快了任务执行的效率,同时还保障了节点资源负载均衡。
4、资源分配器
在队列调度器根据队列评价函数确定调度队列的基础上,资源分配器主要是依据一定的分配策略为调度队列所包括的所有待处理的任务按照“先进先执行”的原则分配相应的节点资源。另外,资源分配器还需结合队列调度器的调度结果与任务监视器的反馈结果不断地调整分布式节点资源的分配,特别是在调度队列需要抢占资源时能够强制回收某些正在执行任务的节点资源,保障整个系统在运行过程中的服务质量。在分布式资源调度系统中,资源分配器的设计主要由三个功能机制构成。
A.资源分配机制。在进行资源分配之前,根据队列调度器调度的结果,每一个确定的调度队列将获得使用全部分布式节点资源的权限,本发明提供了基于双适应度遗传算法的分布式节点资源分配策略:
(1)任务对象的编码和解码。
假设全部分布式节点资源共有R个,由队列调度器确定的调度队列中包含T个待处理任务。对于种群中的任意个体,都能表示出所有待处理任务调度的一种资源分配方式,即种群中个体的染色体长度为T。在本发明中染色体采用间接编码方式,单个DNA的取值范围为[1,R]。染色体编码的格式如表1所示,表中的Value的取值范围为[1,R]的整数。
表1染色体的编码方式
假设{1,3,1,2,4,5,3,2,1}为个体的染色体编码,它表示的含义是编号为1的待处理任务被分配到编号为1的节点资源上执行,编号为2的待处理务被分配到编号为3的节点资源上执行,以此类推。对染色体进行解码后,可以得到各分布式节点资源上所分配的所有待处理任务。如对上述染色体进行解码之后,解码为R1={1,3,9},R2={4,8},R3={2,7},R4={5},R5={6}。R1={1,3,9}表示编号为1的节点资源上执行了编号为1、3和9的三个待处理任务。
(2)适应度函数。
分布式资源调度系统中所有任务的完成时间是进行种群染色体个体评价的一个依据,它反映了该系统对任务执行的效率问题以及用户任务完成的及时性问题。分布式资源调度系统执行所有任务所需的总完成时间是所有执行任务的节点资源所要运行时间的最大值,即:
式中,Time(r,i)表示编号为r的节点资源执行分配任务i所需的执行时间;w为分配给节点资源r执行的任务个数;R为分布式资源调度系统中可用的分布式节点资源总数;T为调度队列所包含的待处理任务的总数,并且有:
其中,w(r)表示分配给编号r的节点资源所需执行的任务个数。
进行种群染色体个体评价的依据包括:
①分布式资源调度系统中所有任务的完成成本;
反映了该系统提供服务的性价比以及用户对其相应任务完成情况的满意程度。分布式资源调度系统执行所有任务所需的总完成成本是所有可用节点资源执行挂载其上所有任务所需花费成本的总和,即:
式中,Cost(r)表示编号为r的节点资源单位时间执行任务所花费的成本。
②分布式资源调度系统中进行资源分配时资源的负载均衡度;
反映了该系统实施资源分配时任务挂载的公平性以及节点资源本身最大程度的利用率。本发明中分布式资源调度系统进行资源分配时资源的负载均衡率侧重于节点资源本身具备的执行能力是否与执行挂载其上任务所需的能力成正比,则编号为r的节点资源负载均衡率Load(r)为:
式中,ability(r)表示编号为r的节点资源执行挂载其上所有任务实际所需的能力;total_ability(r)表示编号为r的节点资源本身的执行能力。关于执行能力的定义可以是带宽、内存、CPU等,可根据用户的需求来确定。
编号为r的节点资源负载均衡率为Load(r),则分布式资源调度系统的负载均衡度为:
其中,R为分布式资源调度系统中可用的分布式节点资源总数。
本发明中分布式资源调度系统采用的遗传算法关于双适应度函数的设计在考虑节点资源负载均衡的基础上进一步考虑任务完成总时间和任务完成总成本,具体描述如下:
①如下式所示的定义时间和成本的适应度函数:
其中,σ1、σ2是根据用户确定的偏好因子,表示用户对完成总任务所期望时间和期望成本之间的偏好度,且有0≤σ1≤1,0≤σ2≤1,σ1+σ2=1。
②如下式所示的定义节点资源负载均衡度的适应度函数:
其中,ω为常数。
本发明提出的双适应度函数结合了F1和F2,最终的每次适应度的计算方法是以概率P选择F1作为当前的适应度函数,以概率(1-P)选择F2作为当前适应度函数。通过这种方式,该系统最终的资源分配结果可以逐步地趋向于较好的用户满意度,提高分布式节点资源的利用率。
(3)基于双适应度的遗传操作主要包括初始种群的生成、适应度函数计算、种群个体选择、交叉和变异等。具体工作流程如下:
a)初始化控制参数,包括种群大小R,染色体长度T,适应度选择因子P,用户偏好因子σ1、σ2,交叉概率Pc,变异概率Pm,最大进化代数G以及当前进化代数t等。
b)初始种群生成,为调度队列所包含的任务随机分配节点资源。
c)通过适应度选择因子P选择当前使用的适应度函数,使用轮赌法随机选择种群中的两个个体,并以概率Pc进行染色体交叉操作,形成新个体。
d)通过适应度函数对新个体进行评价。
假设上一代个体的适应度为f,新产生个体的适应度为f′,如果选择的适应度函数为F1,且f′>f,则直接接受新个体,否则,随机产生概率Pt,以概率Pt去接受新个体;如果选择的适应度函数为F2,且|f′|<|f|,则直接接受新个体,否则,随机产生概率Pt,以概率Pt去接受新个体。
e)对新个体以概率Pm进行变异操作,然后按照步骤(4)的方法判断是否接受新个体。
f)修改当前种群的进化代数,即t=t+1。如果t≤G,则转至(3)重复执行,否则找出种群中适应度最大的个体,生成资源分配方案,算法搜索过程结束。
B.空闲资源调度机制。
本发明中判定该分布式资源调度系统出现空闲资源主要分为两种情况:1)对调度队列所包含的待处理任务根据资源分配机制分配完毕后,若分布式节点资源还有剩余,则将剩余节点资源判定为空闲资源。2)根据任务监视器的反馈结果,若某节点资源在调度队列执行任务的过程中就已执行完挂载其上的所有任务,则可判定该节点资源为空闲资源。
针对系统的空闲资源可进一步实现资源分配,主要是通过队列调度器选择非最高优先级等待队列中队列评价函数仅次于当前调度队列评价函数的等待队列,然后同样是根据提出的资源分配机制实现该队列中所包含的待处理任务的资源分配。但需要注意的是,该空闲资源的分配策略只在无新调度队列抢占资源的时间段内起作用。
C.资源回收机制。
资源回收主要是指在某些特殊情况能够强制回收正在执行任务的节点资源,当然也包括某节点资源执行完挂载其上所有任务后对该节点资源的释放和回收。关于强制回收所提及的特殊情况主要分为两种:
1)当具有最高优先级qtop的队列Q有新任务请求时,需要立即抢占资源,即回收所有的分布式节点资源,为队列Q包含的所有待处理的任务提供资源对象。
2)针对空闲资源调度机制,当系统出现空闲资源,并且将空闲资源分配给另一等待队列(该等待队列的队列评价函数仅次于当前调度队列的队列评价函数)使用过程中,如果当前调度队列有新任务请求时,需要立即回收空闲资源,然后利用资源分配机制将空闲资源分配给当前调度队列所包含的新任务,如有需要,还能更新整个任务资源分配策略。
通过使用资源分配器为调度队列所包含的待处理任务分配相应节点资源,同时根据任务监视器反馈结果不断调整资源分配策略,这在一定程度上提升了资源利用率,加快了整个任务执行的效率,在尽可能满足资源负载均衡的基础上也提升了用户的满意度,保障了整个分布式资源调度系统在运行过程中的服务质量。
本发明提供的基于均衡队列和遗传算法的分布式资源调度方法包括:
阶段一:任务请求响应过程,如附图2所示。
(1):接收到新任务new_task处理请求,根据任务所属用户、任务的重要程度、任务的紧急程度等评定任务的优先级pi;
(2):若pi=qtop,则将任务new_task分配至最高优先级qtop的等待队列Q,然后执行(3);若pi=qi,则将任务new_task分配至优先级为qi的等待队列i,同时记录该任务进入队列i的时间tik(k为任务new_task进入队列i的顺序),执行(3);
(3):获取当前调度队列j;
如果pi=qtop,且Q=j,则判断当前是否有可用的分布式节点资源剩余或空闲,如果有可用的分布式节点资源剩余或空闲,则立即跳转至(4);否则继续等待,直至有可用的分布式节点空闲再执行(4);
若Q≠j,则需立即保存当前调度队列所包含任务的完成情况,抢占所有可用的分布式节点资源,然后执行(4);
如果pi=qi,且i=j,继而判断当前是否有可用的分布式节点资源剩余或空闲,如果有可用的分布式节点资源剩余或空闲,则立即跳转至(4);否则继续等待,直至有可用的分布式节点空闲再执行(4);
若i≠j,则任务new_task在队列i中等待,直至队列i被选定为调度队列后执行(4);
(4):调用资源分配策略,为所有待处理的任务分配节点资源,然后执行任务,结束新任务请求响应过程。
阶段二:等待队列调度过程,如附图3所示。该过程主要是针对非最高优先级队列的调度,如果最高优先级队列Q有待处理任务,立即抢占所有可用的分布式节点资源,并执行所需处理的任务。
(1):获取当前调度队列i及当前正在执行的任务个数m,获取此m个任务中最早进入该调度队列i的任务task(task=1,2,…m),然后提取任务task进入该调度队列i的时间tij;
(2):获取其他非最高优先级等待队列k(k≠i,k=1,2,…,n)的优先级qk;获取最早进入等待队列k的任务task′,提取任务task′进入队列k的时间tkj′;
(3):获取当前时间tc,并计算任务task的等待时间t′ij=tc-tij,计算当前调度队列i的队列评价函数fi=αiqi+βt′ij;
(4):计算任务task′的等待时间t′kj′=tc-tkj′,计算等待队列k的队列评价函数fk=αkqk+βt′kj′;
(5):比较队列评价函数fi和fk,如果fk>fi,则执行(6);如果fk≤fi,则继续执行调度队列i中待处理的任务,队列k继续等待,直至满足fk>fi时作为新一轮调度队列,然后执行(6);
(6):立即保存当前调度队列i的各任务处理情况,并终止当前任务的执行,同时回收整个分布式节点资源,然后根据给定的资源分配策略对队列k中的任务按照“先进先执行”的原则实施资源分配。
至此一轮等待队列调度过程结束。需要不断重复计算队列评价函数fi、fk,选择队列评价函数较大值所属队列作为调度队列,新一轮队列调度过程开始执行。
阶段三:任务资源分配过程,如附图4所示。
(1):由队列调度器确定当前调度队列,获取调度队列中所包含的待处理的任务总数T,获取当前可用的分布式节点资源总数R;
(2):构建双适应度评价函数。
即时间和成本的适应度函数:
(3):初始化控制参数,包括种群大小R,染色体长度T,适应度选择因子P,用户偏好因子σ1、σ2,交叉概率Pc,变异概率Pm,最大进化代数G以及当前进化代数t等;
初始化种群,为调度队列所包含的任务随机分配节点资源;
(4):以适应度选择因子P选择F1作为当前的适应度函数,以适应度选择因子(1-P)选择F2;
(5):使用轮赌法随机选择种群中的两个个体,并以概率Pc进行染色体交叉操作,形成新个体;
(6):通过适应度函数对新个体进行评价。假设上一代个体的适应度为f,新产生个体的适应度为f′,如果选择的适应度函数为F1,且f′>f,则直接接受新个体,否则,随机产生概率Pt,以概率Pt去接受新个体;如果选择的适应度函数为F2,且|f′|<|f|,则直接接受新个体,否则,随机产生概率Pt,以概率Pt去接受新个体;
(7):对新个体以概率Pm进行变异操作,并按照(6)的方法判断是否接受新个体,然后执行(8);
(8):修改当前种群的进化代数,即t=t+1。如果t≤G,则跳转至(4)重复执行,否则找出种群中适应度最大的个体,生成资源分配方案,算法搜索过程结束;
(9):根据资源分配方案为待处理任务分配节点资源,开始执行任务。此时对当前调度队列所包含的待处理任务的资源分配过程结束。
实施例
如附图5所示的分布式资源任务执行流程图所示,当有新任务请求到达时,需要根据任务所属用户、任务的重要程度和任务的紧急程度来评定任务优先级,并将任务分配至对应的优先级等待队列。针对不同的优先级等待队列来执行相应的队列调度策略,然后根据选定的调度队列,按照资源分配策略为其所包含的待处理的所有任务分配可行的节点资源,同时监视任务的运行情况,并根据其反馈结果不断地调整资源分配情况,在保障服务质量的同时,尽可能提高资源利用率和加快任务执行效率。
其具体的实施方案为:
A.针对任务请求评定为最高优先级任务
(1)将任务分配至最高优先级qtop等待队列Q;
(2)获取当前调度队列j,如果Q=j,则跳转至(3)执行,否则跳转至(4)执行;
(3)判断当前是否有可用的分布式节点资源剩余或空闲,如果有可用的分布式节点资源剩余或空闲,则立即跳转至(5)执行;否则继续等待,直至有可用的分布式节点空闲,然后跳转至(5)执行;
(4)立即保存当前调度队列j所包含任务的完成情况,抢占所有可用的分布式节点资源,然后跳转至(5)执行;
(5)根据基于双适应度的遗传算法,为队列Q包含的所有待处理的任务分配所有可用的分布式节点资源,开始执行任务;
(6)监视任务运行情况,若队列Q再无新任务到达,而此时又有部分任务已完成,则可结合队列调度策略,为下一个即将调度的队列实施资源分配策略,执行相应任务,直至队列Q所需处理的任务全部执行完毕;
(7)最高优先级qtop等待队列Q的队列调度、资源分配以及任务执行过程结束,开始执行非最高优先级等待队列的队列调度和资源分配过程。
B.针对任务请求评定为非最高优先级任务
(1)假设当前任务请求所评定的优先级为qi,则将该任务分配至优先级为qi的等待队列i;
(2)获取当前调度队列j,如果i=j,则跳转至(3)执行,否则跳转至(4)执行;
(3)判断当前是否有可用的分布式节点资源剩余或空闲,如果有可用的分布式节点资源剩余或空闲,则立即跳转至(6)执行,否则判断当前是否有其他队列k(k≠j)所包含的任务正在执行,如果有,则立即保存队列k所包含任务的运行情况,回收相应资源,然后跳转至(6)执行,否则继续等待,直至有可用的分布式节点空闲,然后跳转至(6)执行;
(4)判断当前是否有可用的分布式节点资源剩余或空闲,如果有可用的分布式节点资源剩余或空闲,则跳转至(5)执行,否则继续等待,直至当前有可用的节点资源空闲,然后跳转至(5)执行,或者根据队列调度策略,选定队列i为当前调度队列,然后跳转至(6)执行;
(5)根据队列调度策略,计算下一个即将调度的队列l,如果l=i,则跳转至(6)执行,否则继续等待,直至队列i为当前调度队列,然后跳转至(6)执行;
(6)根据基于双适应度的遗传算法,为队列i包含的所有待处理的任务分配所有可用的分布式节点资源,开始执行任务;
(7)监视任务运行情况,若队列i再无新任务到达,而此时又有部分任务已完成,则可结合队列调度策略,为下一个即将调度的队列实施资源分配策略,执行相应任务,直至选定l(l≠i)为当前调度队列;
(8)当选定队列l为当前调度队列时,需要立即保存队列i所包含任务的执行情况,释放节点资源,同时修改队列i所包含的待处理任务的相关信息;
(9)一轮非最高优先级等待队列的队列调度、资源分配和任务执行过程结束,开始执行下一个调度队列所包含的待处理任务。
一种分布式资源调度系统,所述系统包括:
队列管理器:用于匹配任务等待队列;记录任务进入调度队列的时间;更新任务信息;提供用户操纵队列接口;
队列调度器,用于综合考虑任务优先级和任务等待时间,根据用户需求,权衡评价因子,并根据队列评价函数F确定当前调度队列;
任务监视器,用于响应记录任务完成情况请求,实时监控任务执行情况,并将监视结果反馈给资源分配器;
资源分配器,用于结合队列调度器的调度结果与任务监视器的反馈结果调整分布式节点资源的分配。
进一步的,所述队列管理器中包括:
匹配任务等待队列模块,用于对评定任务优先级的任务请求分配至对应的优先级等待队列;若任务请求须立即执行,需要将任务分配至等待队列Q;
记录模块,用于记录任务进入调度队列的时间;
更新任务信息模块,用于根据任务监视器反馈结果更新各队列包含的任务信息;
接口模块,用于提供用户操纵队列接口。
进一步的,所述资源分配器包括:
资源分配模块,用于对任务对象进行编码和解码;基于双适应度函数的遗传算法确定资源分配策略;
空闲资源调度模块,用于将确定为空闲资源的节点资源进行资源分配;
资源回收模块,用于强制回收正在执行任务的节点资源;回收执行完挂载其上所有任务后释放的节点资源。
以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员依然可以对本发明的具体实施方式进行修改或者等同替换,这些未脱离本发明精神和范围的任何修改或者等同替换,均在申请待批的本发明的权利要求保护范围之内。