本发明属于工作流调度领域,具体涉及一种移动边缘环境下的工作流调度方法。
背景技术:
近年来,随着移动互联网的快速发展和用户设备的普及。诸如面部识别,增强现实和移动在线游戏等越来越多的新移动应用程序已经出现。这些类型的服务由于它们的密集计算和高能耗而需要更多的计算资源。这些应用程序的计算量很大,通常超过了普通移动设备的计算能力。移动设备可能无法在等待时间限制内完成计算密集型任务由于缺乏计算资源,内存和电池容量。移动边缘计算拯救了对计算资源有高要求的移动应用程序,边缘计算由于其靠近用户而可以有效地减少任务的传输延迟并且可以提供有效的计算服务,成为一种有希望的解决方案。在移动边缘计算系统中,用户将需要将移动设备中大量计算资源的任务卸载到与基站边缘相连的服务器上执行,可以大大提高计算运行速度,减少设备能耗。
但是边缘服务器资源是有限的,用户请求随机且频繁地到达服务器并且服务器在地理位置上的不均匀分布,造成负载不平衡的问题是不可避免的。重负荷地区的用户难免会有不好的体验。对于通信和计算资源有限的边缘服务器来说,这是一个巨大的挑战。过量的任务导致服务器拥塞进而会导致新来的用户工作流卸载失败,而一些服务器却有空闲资源没有得到利用,这是一种极大的浪费。
解决这一问题的一种有前途的方法是在mec之间进行合作。随着部署边缘服务器的趋势,每个服务器通常在附近有一些邻近服务器。同时,很少会看到所有服务器都超载。mec群集可以通过将具有较大计算工作负载的服务器卸载到具有较小计算工作负载的相邻服务器上,并在它们之间进行协调以为移动用户提供服务,从而平衡地理位置分散的服务器之间的工作负载。
鉴于上述情况,针对工作流调度的负载不均衡情况,本发明算法提出了一种移动边缘环境下的工作流协作调度方法,以解决现有技术存在的技术问题。
技术实现要素:
:
为了克服现有服务工作流调度方法中服务器负载不均衡而导致用户任务卸载失败率较高和任务延时较大的技术问题,本发明提出了一种移动边缘环境下的工作流协作调度方法。该方法采用了服务器协作的思想,用户工作流由各个服务器协作完成。本发明算法首先对工作流和服务器建模,然后利用改进的粒子群算法寻求工作流调度最优解。该算法保证了较低的工作流卸载失败率,同时减少了工作流运行结束时间。
为了解决现有工作中存在的问题,本发明的技术方案如下:
一种移动边缘环境下的工作流协作调度方法,包括以下步骤:
步骤(1):建立工作流模型。用户上传的工作流定义为w={i,t,e},其中i表示上传服务器编号,t={t1,t2,t3...tn}表示n个任务的集合,其中ti={ui,vi},ui表示任务的输入数据大小。vi表示任务执行所需要的计算处理能力。e={(ti,tj)|i,j∈t}表示任务之间的依赖关系,具有依赖关系的任务需要按顺序执行,且ti的执行结束时间早于tj的开始执行时间。工作流按照拓扑排序转为任务执行序列。
步骤(2):建立边缘服务器模型;一个mec系统由构成服务器群集的s个服务器和n个用户组成。每个服务器中都有一个缓冲区队列,用于存储来自本地用户的请求。如果cpu繁忙,则请求的内容将存储在缓冲区队列中。服务器可以选择将工作流储存在本地处理,或者转发给其他服务器执行。服务器i的缓冲区队列在时刻τ的积压为qi(τ):
qi(τ)={w1,w2,w3,...,wm}
其中wi代表在缓冲区队列中第i条尚未处理的工作流,未处理的工作流总量为m。任务缓冲区队列具有最大容量
将服务器i在时刻τ的负载状态定义为
定义任务卸载失败率为:
其中numfail表示卸载失败的工作流总量,numall表示上传的工作流总量。
步骤(3):建立计算开销模型;服务器i向服务器j传输一条工作流ws的时间开销为:
其中ns表示工作流ws内任务的数量,bi,j(τ)为服务器之间的传输速率。
服务器i内第j条工作流wj在服务器的排队延时为:
其中nl表示第l条工作流内任务的数量,fi,l表示服务器i为第l条工作流分配的计算频率。
工作流ws的完成时间为:
其中λi表示工作流在服务器i卸载失败的平均额外花费时间,用户卸载失败用户会在时间ttol内选择重传任务,保证任务执行,ttol是用户可接受的最大任务延时
步骤(4):定义协作工作流集合;在时刻τ所有超出阈值部分的工作流集合为w={w1,w2,w3...wh},待执行的工作流总量为h。
步骤(5):粒子群参数初始化;初始化参数包括粒子群最大迭代次数,最大种群数,粒子位置矩阵和速度矩阵等;
步骤(6):粒子适应度计算;本发明考虑了任务卸载失败率和任务完成延时两个方面的约束,并将其加入到适应度计算公式中。
步骤(7):迭代更新粒子群;所有粒子都朝着局部最优粒子和全局最优粒子移动。按照粒子迭代公式不断迭代更新粒子位置和速度。
步骤(8):粒子变异操作;适应度值较低的种群有较大概率被新的粒子替换;
步骤(9):判断是否达到最大迭代次数;未达到最大迭代次数则返回步骤(7);否则结束迭代,输出最优调度方案。
步骤(10):调度工作流到相应服务器执行;执行步骤9中得到的最优调度方案,执行结果返回至目标用户的设备。
与现有技术相比,本发明具有以下有益技术效果:
鲁棒性:本发明采用了改进的粒子群算法。在迭代过程中不断发现更优调度解,并且采用了动态改变的惯性系数w,c1和c2。迭代前期,w和c1较大,c2较小使粒子能尽可能的多搜索解空间而不会聚集在某一局部范围。算法后期,w和c1较小,c2较大有利于粒子向全局最优解移动,加快求解速度,提升算法性能。同时本发明算法对粒子群采取了变异操作,降低了陷入局部最优解的可能性,提高了粒子搜索的效率。
高效性:本发明算法考虑到将高负载的服务器工作流卸载到低负载的服务器。使不同负载状况的服务器能协作处理任务,使资源得到最大程度利用。并且考虑到了服务工作流的卸载失败率和总体运行延时。一方面减少了任务等待执行延迟;另一方面降低了任务卸载失败率,减少了任务失败造成的额外开销。并使用了改进的粒子群算法,使算法能在极短时间内给出最调度解,满足调度要求。
附图说明:
图1为本发明移动边缘计算环境下工作流调度的系统框架图;
图2为本发明移动边缘计算环境下工作流调度的流程图;
图3为本发明移动边缘计算环境下一条工作流转化成一条任务执行序列的一个实例;
图4为本发明与nc算法、rto和gto算法在不同工作流数量下的任务失败率对比图;
图5为本发明与nc算法、rto和gto算法在不同服务器数量下的任务失败率对比图;
图6为本发明与nc算法、rto和gto算法在工作流数量下的延时对比图;
具体实施方式
以下将结合附图对本发明提供的技术方案作进一步说明。
图1是移动边缘计算系统下工作流调度系统框架图。首先用户设备产生工作流,将计算密集型工作流上传至边缘服务器,边缘服务器对工作流中有依赖关系的任务根据拓扑排序形成任务调度序列;协作区域内的任意一个服务器节点根据本发明算法对所有超出服务器协作阈值的工作流产生最优调度决策;根据最优调度结果调度工作流;最终将工作流执行结果返回至目标用户。
参见图2,所示为本发明一种边缘计算环境下基于改进粒子群的工作流调度流程图,具体包括以下步骤:
步骤(1):建立工作流模型。在mec系统中,用户设备执行某个应用程序,则应用程序被建模为工作流。如果该条工作流需要大量计算则将其上传至服务器帮助执行。用户上传的工作流定义为w={i,t,e},其中i表示上传的服务器编号,t={t1,t2,t3...tn}表示n个任务的集合,其中ti={ui,vi},ui表示任务的输入数据大小。vi表示任务执行所需要的计算处理能力。e={(ti,tj)|i,j∈t}表示任务之间的依赖关系,具有依赖关系的任务需要按顺序执行,且ti的执行结束时间早于tj的开始执行时间。工作流按照拓扑排序转为任务执行序列。图3是一条任务流转化成一条任务执行序列的一个实例。任务a是任务b,c,d的前驱任务,所以任务a必须先于任务b,c,d执行,任意一个任务必须在其前驱任务执行完成后方可开始执行。
步骤(2):建立边缘服务器模型;一个mec系统由构成服务器群集的s个服务器和n个用户组成。每个服务器中都有一个缓冲区队列,用于存储来自本地用户的请求。如果cpu繁忙,则请求的内容将存储在缓冲区队列中。服务器可以选择将工作流储存在本地处理,或者转发给其他服务器执行。服务器i的缓冲区队列在时刻τ的积压为qi(τ):
qi(τ)={w1,w2,w3,...,wm}
其中wi代表在缓冲区队列中第i条尚未处理的工作流,未处理的工作流总量为m。任务缓冲区队列具有最大容量
将服务器i在时刻τ的负载状态定义为
定义时刻τ任务卸载失败率为:
其中numfail表示时刻τ卸载失败的工作流总量,numall表示时刻τ上传的工作流总量。
步骤(3):建立计算开销模型;服务器i向服务器j传输一条工作流ws的时间开销为:
其中ns表示工作流ws内任务的数量,bi,j(τ)为时刻τ服务器之间的传输速率。
服务器i内第j条工作流wj在服务器的排队延时为:
其中nl表示第l条工作流内任务的数量,fi,l表示服务器i为第l条工作流分配的计算频率。
工作流ws的完成时间为:
其中λi表示工作流在服务器i卸载失败的平均额外花费时间,用户卸载失败用户会在时间ttol内选择重传任务,保证任务执行,ttol是用户可接受的最大任务延时
步骤(4):定义协作工作流集合;在时刻τ所有超出阈值部分的工作流集合为w={w1,w2,w3...wh},其中wi={j,t,e},j表示该工作流来自服务器j,h表示等待调度的工作流总量。
步骤(5):粒子群参数初始化;粒子群最大迭代次数为gk,最大种群数为z,粒子位置矩阵随机初始化。得到粒子群位置矩阵:
其中
粒子速度矩阵随机初始化。得到粒子速度矩阵:
其中vi,j∈[-vmax,vmax]。
步骤(6):粒子适应度计算;本发明考虑了任务卸载失败率和任务完成时间两个方面的约束,并将其加入到适应度计算公式中。适应度函数计算如下:
其中α是对于任务失败情况的惩罚系数,
计算所有种群的
步骤(7):迭代更新粒子群;所有粒子都朝着局部最优粒子和全局最优粒子移动。按照公式不断迭代更新粒子位置和速度。具体公式如下:
其中wk表示惯性系数。r1,r2表示每次迭代过程中的随机数,c1,c2表示对局部最优个体和种群最优个体的学习率。惯性系数和学习率的更新公式如下:
其中wst和wend表示初始和结束惯性系数,cβ=1。
同时更新全局最优个体gbest和局部最优个体pbest。
步骤(8):粒子变异操作;适应度值较低的种群有较大概率被新的粒子替换;计算种群
其中m是一个大于所有种群粒子适应度的值,将pi从大到小排序。选取概率最大的s个种群。对这s个种群进行随机初始化操作,重新计算适应度。
步骤(9):判断是否达到最大迭代次数;未达到最大迭代次数则返回步骤(7);否则结束迭代,输出最优调度方案gbest。
步骤(10):调度工作流到相应服务器执行;执行步骤9中得到的最优调度方案gbest,执行结果返回至目标用户的设备。
为了展示本发明方法的有效性,分别与不进行任务调度算法nc,随机调度算法rto,基于贪婪策略的调度算法gto在任务失败率,任务平均执行延迟等方面进行对比。
实验采用pycharm平台作为仿真模拟平台,在配置为amd-3600,16gb,win1064位的台式机电脑上运行。采用dag模拟器生成工作流,每个服务器设置相同大小的缓冲区。算法种群数目设置为100,迭代次数设置为800,每次加入新种群数量为10。在协作区域内服务器数量为20,每个服务器有相同大小的缓冲区。用户数量为100,一段时间内单个用户提交的工作流总量为20,提交时间服从均匀分布。工作流内任务数量服从参数为20泊松分布。
为了探究该算法在不同边缘服务器数量下任务失败率的关系,针对每个工作流数量,观测其在边缘服务器数目一定情况下工作流卸载失败率的变化。如图4所示,随着工作流数量增加,任务失败率也提高,这是由于服务器数量固定,缓冲区大小一定,所及接受的工作流容量有限。部分地区服务器会超载。随着工作量数量增加,本发明算法相较于nc,rto和gto算法任务失败率增长幅度较缓。这是由于本算法能在迭代过程中不断寻求最优解,将任务卸载至其他空闲服务器协作处理。保持一个更低的任务卸载失败率。
为了进一步探究同一以地区边缘服务器部署数量和任务卸载失败率的关系,图5展示了边缘服务器数量在[20,45]之间与工作流失败率的情况。分析图5可以发现,边缘服务器的数量越多,任务卸载失败的情况减少,卸载失败率下降。这是由于随着服务器数量的增加,工作流卸载有了更多可选择的空间,在同一服务器同时卸载的概率降低。说明本算法在不同服务器部署数量情况下都能得到较优的任务失败率。
为了验证在工作流数量变化情况下任务延时的对比。在图6中分析可得。随着工作流数量增加,任务延时也增加,这是两个原因造成的,一是任务在排队等待过程花费了额外时间,二是由于任务传输也花费了一定时间。本发明算法在粒子适应度函数中考虑到了每条工作流的执行延迟,能够在迭代过程中,在解空间搜索的到一个总体较低的任务延时。也同时满足总体任务失败率的情况。
实验结果表明本发明的一种移动边缘环境下基于协作的服务工作流调度方法相对于nc方法、gto方法和rto方法能够更加有效地处理服务工作流,在工作流数目增长,边缘服务器个数较大时,有良好的性能,因为采用了改进的粒子群算法能在迭代过程中发现最优解调度工作流,一方面将的了任务卸载失败率,另一方面降低了任务的完成时间。
由上述分析可知,本发明具有以下有益技术效果:
鲁棒性:本发明采用了改进的粒子群算法。在迭代过程中不断发现更优调度解,并且采用了动态改变的惯性系数w,c1和c2。迭代前期,w和c1较大,c2较小使粒子能尽可能的多搜索解空间而不会聚集在某一局部范围。算法后期,w和c1较小,c2较大有利于粒子向全局最优解移动,加快求解速度,提升算法性能。同时本发明算法对粒子群采取了变异操作,降低了陷入局部最优解的可能性,提高了粒子搜索的效率。
高效性:本发明算法考虑到将高负载的服务器工作流卸载到低负载的服务器。使不同负载状况的服务器能协作处理任务,使资源得到最大程度利用。并且考虑到了服务工作流的卸载失败率和总体运行延时。一方面减少了任务等待执行延迟;另一方面降低了任务卸载失败率,减少了任务失败造成的额外开销。并使用了改进的粒子群算法,使算法能在极短时间内给出最调度解,满足调度要求。
以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
1.一种移动边缘环境下的工作流协作调度方法,其特征在于,包括以下步骤:
步骤(1):建立工作流模型;用户上传的工作流定义为w={i,t,e},其中i表示上传服务器编号,t={t1,t2,t3...tn}表示n个任务的集合,其中ti={ui,vi},ui表示任务的输入数据大小;vi表示任务执行所需要的计算处理能力;e={(ti,tj)|i,j∈t}表示任务之间的依赖关系,具有依赖关系的任务需要按顺序执行,且ti的执行结束时间早于tj的开始执行时间;工作流按照拓扑排序转为任务执行序列;
步骤(2):建立边缘服务器模型;一个mec系统由构成服务器群集的s个服务器和n个用户组成;每个服务器中都有一个缓冲区队列,用于存储来自本地用户的请求;如果cpu繁忙,则请求的内容将存储在缓冲区队列中;服务器可以选择将工作流储存在本地处理,或者转发给其他服务器执行;服务器i的缓冲区队列在时刻τ的积压为qi(τ):
qi(τ)={w1,w2,w3,...,wm}
其中wi代表在缓冲区队列中第i条尚未处理的工作流,未处理的工作流总量为m;任务缓冲区队列具有最大容量
将服务器i在时刻τ的负载状态定义为
定义任务卸载失败率为:
其中numfail表示卸载失败的工作流总量,numall表示上传的工作流总量;
步骤(3):建立计算开销模型;服务器i向服务器j传输一条工作流ws的时间开销为:
其中ns表示工作流ws内任务的数量,bi,j(τ)为服务器之间的传输速率;
服务器i内第j条工作流wj在服务器的排队延时为:
其中nl表示第l条工作流内任务的数量,fi,l表示服务器i为第l条工作流分配的计算频率;
工作流ws的完成时间为:
其中λi表示工作流在服务器i卸载失败的平均额外花费时间,用户卸载失败用户会在时间ttol内选择重传任务,保证任务执行,ttol是用户可接受的最大任务延时
步骤(4):定义协作工作流集合;在时刻τ所有超出阈值部分的工作流集合为w={w1,w2,w3...wh},待执行的工作流总量为h;
步骤(5):粒子群参数初始化;初始化参数包括粒子群最大迭代次数,最大种群数,粒子位置矩阵和速度矩阵;
步骤(6):粒子适应度计算;考虑了任务卸载失败率和任务完成延时两个方面的约束,并将其加入到适应度计算公式中;
适应度函数计算如下:
其中α是对于任务失败情况的惩罚系数,
计算所有种群的
步骤(7):迭代更新粒子群;所有粒子都朝着局部最优粒子和全局最优粒子移动;按照公式不断迭代更新粒子位置和速度;具体公式如下:
其中wk表示惯性系数;r1,r2表示每次迭代过程中的随机数,c1,c2表示对局部最优个体和种群最优个体的学习率;惯性系数和学习率的更新公式如下:
其中wst和wend表示初始和结束惯性系数,cβ=1;
同时更新全局最优个体gbest和局部最优个体pbest;
步骤(8):粒子变异操作;适应度值较低的种群有较大概率被新的粒子替换;计算种群
其中m是一个大于所有种群粒子适应度的值,将pi从大到小排序;选取概率最大的s个种群;对这s个种群进行随机初始化操作,重新计算适应度;
步骤(9):判断是否达到最大迭代次数;未达到最大迭代次数则返回步骤(7);否则结束迭代,输出最优调度方案gbest;
步骤(10):调度工作流到相应服务器执行;执行步骤(9)中得到的最优调度方案gbest,执行结果返回至目标用户的设备。
技术总结