1.本发明涉及一种边缘计算中相关性任务在异构环境下的调度方法,属于边缘计算和优化算法技术领域。
背景技术:2.物联网和移动智能设备的广泛使用极大地促进了许多延迟敏感和资源密集型应用的发展,例如虚拟/增强现实、人脸识别和数据流处理。目前,这些应用程序是在移动设备或云服务器上处理或执行的。一方面,移动设备没有足够的计算资源用于许多资源密集型应用程序。另一方面,在云上运行资源密集型应用通常需要从移动设备到云中远程服务器的大量数据传输,从而导致不可预测的通信延迟。因此,多接入边缘计算(mec)已成为克服本地计算模式和云计算模式上述缺点的有前途的解决方案。靠近移动设备的边缘节点为卸载需要低延迟的任务提供了一种替代方案。
3.计算卸载技术不仅可以节省终端设备的能耗,提高用户体验,还可以缩短任务的执行时间。因此,在过去几年中,mec中的任务卸载和调度问题一直是许多研究工作的重点。但是,边缘计算中不仅存在相互独立的任务,具有相关性任务的应用程序不计其数。我们以人脸识别应为例。基本上,人脸识别应用可以分为五个相关任务:对象获取、人脸检测、预处理、特征提取和分类。当这些任务被卸载到边缘节点时,我们需要考虑以下因素:任务之间可能存在依赖关系。比如任务“特征提取”的输出就是任务“分类”的输入。因此,只有在“特征提取”任务完成后,才能开始“分类”任务。基于实际情况,本发明也将边缘节点的处理速度不同和边缘节点之间的传输速率不同考虑在内,如何在异构环境下调度相关性任务是具有实际意义的问题。
技术实现要素:4.为了解决现有技术中存在的问题,本发明提出了一种移动边缘计算场景下相关性任务调度的模型及其优化方法,从而达到最小化任务的完成时间的目的。
5.为实现上述目的,本发明采用的技术方案为:一种移动边缘计算中相关性任务的调度方法,其特征在于:包括以下具体步骤:
6.步骤1:云端收集每个应用程序产生的任务信息和边缘节点的信息:设用户终端设备集合将终端设备上的应用程序的任务化分为多个子任务,各子任务之间存在依赖关系,用有向无环图来表示任务的依赖关系;设任务集合任务由二元组表示(bi,di),e是边的集合,表示任务i的依赖关系;
7.其中v是任务的数量,用i,j表示任务,bi表示任务i的计算负载量,di表示任务i的输入数据量,任务i和任务j之间传输的数据量为u
i,j
;
8.设边缘节点的集合fk是边缘节点k的处理速度,其中k是边缘节点的数量,用k,k'表示边缘节点,所述边缘节点k,k'之间的传输速率用ξ
kk'
表示;
9.步骤2:确定任务卸载到不同边缘节点上的传输时间:
10.首先令
11.其中r
h,k
表示终端设备h将任务卸载到边缘节点k的传输速率,h是产生任务i的用户终端设备,w
h,k
是设备h到边缘节点k的链路带宽,ph是终端设备h的发射功率,l
h,k
是设备h和边缘节点k之间的距离,β是路径损失指数,σ是信道噪声功率。则,任务i卸载到边缘节点k的传输时间可以表示为:
[0012][0013]
步骤3:给出以下定义:
[0014]
(1)pred(i):任务i的直接前驱的集合,任务i有多个直接前驱;
[0015]
(2)succ(i):任务i的直接后继的集合,任务i有多个直接后继;
[0016]
(3)et
i,k
:是任务i在边缘节点k上的执行时间,计算公式为:
[0017][0018]
其中,x
i,k
是二进制变量,当x
i,k
=1时表示任务i是卸载到边缘节点k上执行的;bi是任务i的计算负载量,fk是边缘节点k的处理速度;
[0019]
(4)rt
i,k
:是任务i的准备完成时间,它与两部分时间有关,一是任务i上传到边缘节点k的传输时间,二是任务i的所有前驱节点都已经完成计算并将所需的数据传输至任务i所在的边缘节点k上,计算公式为:
[0020][0021]
(5)st
i,k
:是任务i在边缘节点k上的开始执行时间;
[0022]
(6)est
i,k
:是任务i在边缘节点k上的最早开始执行时间,它与两部分时间有关,一是任务i已经准备完成的时间,二是边缘节点k开始空闲的时间,计算公式为:
[0023]
est
i,k
=max{rt
i,k
,atk}
ꢀꢀ
(5)
[0024]
其中,atk是边缘节点k开始空闲的时间;
[0025]
(7)ft
i,k
:是任务i在边缘节点k上的完成时间:它是由开始时间和执行时间共同决定的,计算公式为:
[0026]
ft
i,k
=st
i,k
+et
i,k
ꢀꢀ
(6)
[0027]
(8)t:任务图的总的完成时间,表示为:
[0028][0029]
步骤4:形式化相关性任务的调度问题:
[0030]
系统中所有的任务卸载且只能被卸载到一个边缘节点上执行,并建立约束以保证所有的任务只能被卸载到一个边缘节点上;
[0031]
系统中所有的边缘节点每次只能执行一个任务,如果有其它的任务,需要等待前一个任务完成之后才能执行,并建立约束st
i,k
+et
i,k
≤st
j,k
,以保证边缘节点一次只能执行一个任务且任务在执行的过程中不会被中断执行;
[0032]
由于任务之间依赖性,因此,具有依赖关系的两个任务的执行受到约束,建立约束以保证具有依赖关系的两个任务i,j必须满足任务j在开始执行之前,它的前驱任务i已经计算完成并将数据传输至任务j所在的边缘节点k'上;
[0033]
优化目标是最小化任务图(dag)的完成时间,构造得到统一的形式化相关性任务的调度问题:
[0034][0035][0036][0037][0038][0039]
步骤5:设计边缘节点的组分配规则,得到任务与边缘节点组的映射关系;
[0040]
步骤6:确定相关性任务在边缘节点上的调度方案:采用基于速度的最早优先调度算法得到相关性任务在边缘节点上的调度方案;
[0041]
步骤7:设备根据得到的调度方案,将任务卸载到对应的边缘节点上,通过边缘节点对任务进行调度执行。
[0042]
进一步的,所述步骤1中,应用程序产生的任务信息包括任务的输入数据量和计算负载量;所述边缘节点的信息包括边缘节点的处理速度和边缘节点之间的传输速率。
[0043]
进一步的,所述步骤5中,根据边缘节点的不同速度,将边缘节点分成q组,其中k是边缘节点的数量,γ=logk/loglogk,不失一般性,假设组里的边缘节点的速度范围为[γ
q-1
,γq);
[0044]
划分完组之后,需要确定任务分配到哪个边缘节点组中,组分配的设计是基于线性规划问题的解;首先,不考虑边缘节点之间的传输时间,建立以下的混合整数线性规划问题:
[0045][0046][0047][0048][0049][0050][0051]
由于混合整数线性规划问题是np难的,对x
i,k
=1约束松弛为x
i,k
≥0,设
t
*
是此问题的最优解,对于集合用表示在组里所有边缘节点的处理速度:
[0052][0053]
设是任务i分配到边缘节点组的总的部分:
[0054][0055]
对任意的任务i,设li是至少有一半的任务分配到边缘节点组中:最大的组下标序列:
[0056][0057]
因此,选择将任务i卸载到在边缘节点组中的总的速度最大的边缘节点组:
[0058][0059]
进一步的,所述步骤6中的算法具体步骤如下:
[0060]
步骤6.1:初始化调度策略方案和任务集合
[0061]
步骤6.2:找到任务集合中所有没有前驱节点的任务,加入到θ集合;
[0062]
步骤6.3:根据步骤5中的组分配规则和任务与边缘节点的映射关系,对θ集合中所有的任务,分别计算任务在卸载的边缘节点组中的所有边缘节点上的开始时间,即st
′
i,k
=min
k∈y(i)
est
i,k
;
[0063]
步骤6.4:找到开始时间最小的任务加入到ρ集合,即ρ={i:i=argmin
i'∈θ
sti′
,k
};
[0064]
步骤6.5:在ρ集合里随机选择任务i在边缘节点k上执行,并记录开始时间st
′
i,k
;
[0065]
步骤6.6:将此时的最早开始时间赋值给开始时间,即st
i,k
=st
′
i,k
;
[0066]
步骤6.7:将分配过的任务i在任务集合中移除,即
[0067]
步骤6.8:重复执行步骤1.6.2到步骤1.6.7,直到任务集合为空;
[0068]
步骤6.9:输出调度策略方案stv×k。
[0069]
与现有技术相比,本发明的有益效果是:本发明形式化异构环境下相关性任务的调度问题,最小化任务的完成时间;首先为了解决异构性带来的挑战,提出对边缘节点根据速度的不同进行分组,并设计任务与边缘节点组的映射函数;其次,为了解决相关性带来的挑战,提出在同一个边缘节点组中采用最早时间优先调度算法,试图运行可以最早执行的任务,从而以贪婪的方式最小化边缘节点的空闲时间,最终达到最小化任务的完成时间的目标。
附图说明
[0070]
图1为本发明的移动边缘计算中相关性任务系统模型示意图。
[0071]
图2为本发明的移动边缘计算中相关性任务调度方法的流程图。
[0072]
图3为本发明的基于速度的最早时间优先调度算法的流程图。
[0073]
图4位本发明的任务之间的依赖关系建模dag图。
具体实施方式
[0074]
下面详细描述本发明的实施方式,所述实施方式的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施方式是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
[0075]
本实施例提出的一种移动边缘计算中相关性任务的调度模型如图1所示;考虑异构环境下相关性任务的卸载,以最小化所有任务的完成时间为目标,求解任务在边缘节点上的调度方案。该移动边缘计算中相关性任务的调度方法的具体流程如图2所示,包括以下步骤:
[0076]
步骤1:云端收集每个应用程序产生的任务信息和边缘节点的信息:所述应用程序产生的任务信息包括任务的输入数据量和计算负载量;所述的边缘节点的信息包括边缘节点的处理速度和边缘节点之间的传输速率,如表1所示。
[0077]
任务计算负载量(cpu cycles)输入数据量1220kb2430kb3140kb4410kb5560kb6620kb7250kb
[0078]
表1:任务信息表
[0079]
设任务的集合用i,j表示任务,任务之间的依赖关系建模为dag图,如图4所示。
[0080]
设边缘节点的集合k,k'表示边缘节点,边缘节点k,k'之间的传输速率用ξ
kk'
表示,设ξ
12
=1kb/s,ξ
13
=0.2kb/s,ξ
23
=0.5kb/s,具体内容如表2所示。
[0081][0082]
表2:边缘节点信息表
[0083]
设任务之间的输入数据量为u
i,j
,u
1,2
=6,u
2,4
=10,u
2,5
=14,u
3,6
=20,u
4,7
=4,u
5,7
=20,u
6,7
=10。
[0084]
步骤2:确定任务卸载到不同边缘节点上的传输时间:
[0085]
首先设终端设备1到边缘节点的传输速率为:r
1,1
=500kb/s,r
1,2
=600kb/s,r
1,3
=
400kb/s,则任务卸载到边缘节点的传输时间可以表示为(kb/s):
[0086][0087]
表3:任务卸载到边缘节点的传输时间表
[0088]
步骤3:给出以下定义:
[0089]
(1)pred(i):任务i的直接前驱的集合,任务i可能有多个直接前驱,其中
[0090]
pred(2)={1},pred(3)={1},pred(4)={2},pred(5)={2},pred(6)={3},pred(7)={4,5,6}(2)succ(i):任务i的直接后继的集合,任务i可能有多个直接后继其中
[0091]
succ(1)={2,3},succ(2)={4,5},succ(3)={6},
[0092]
succ(4)={7},succ(5)={7},succ(6)={7}
[0093]
(3)et
i,k
:是任务i在边缘节点k上的执行时间,计算公式为则计算为:
[0094][0095]
表4:任务在边缘节点上的执行时间表
[0096]
(4)rt
i,k
:是任务i的准备完成时间,它与两部分时间有关,一是任务i上传到边缘节点k的传输时间,二是任务i的所有前驱节点都已经完成计算并将所需的数据传输至任务i所在的边缘节点k上,计算公式为:
[0097][0098]
(5)st
i,k
:是任务i在边缘节点k上的开始执行时间。
[0099]
(6)est
i,k
:是任务i在边缘节点k上的最早开始执行时间,它与两部分时间有关,一是任务i已经准备完成的时间,二是边缘节点k开始空闲的时间,计算公式为:
[0100]
est
i,k
=max{rt
i,k
,atk}
[0101]
其中,atk是边缘节点k开始空闲的时间。
[0102]
(7)ft
i,k
:是任务i在边缘节点k上的完成时间:它是由开始时间和执行时间共同决定的,计算公式为:
[0103]
ft
i,k
=st
i,k
+et
i,k
[0104]
(8)t:任务图的总的完成时间,表示为:
[0105][0106]
步骤4:形式化相关性任务的调度问题:
[0107]
系统中所有的任务必须卸载且只能被卸载到一个边缘节点上执行,建立约束保证所有的任务只能被卸载到一个边缘节点上。
[0108]
系统中所有的边缘节点每次只能执行一个任务,如果有其它的任务,需要等待前一个任务完成之后才能执行,建立约束st
i,k
+et
i,k
≤st
j,k
保证边缘节点一次只能执行一个任务且任务在执行的过程中不会被中断执行。
[0109]
由于任务之间可能具有依赖性,意味着具有依赖关系的两个任务的执行受到约束,建立约束保证具有依赖关系的两个任务i,j必须满足任务j在开始执行之前,它的前驱任务i已经计算完成并将数据传输至任务j所在的边缘节点k'上。
[0110]
优化目标是最小化任务图(dag)的完成时间,构造得到统一的形式化相关性任务的调度问题:
[0111][0112][0113][0114][0115][0116]
步骤5:设计边缘节点的组分配规则,得到任务与边缘节点组的映射关系。
[0117]
根据边缘节点的不同速度,将边缘节点分成q组,其中k是边缘节点的数量,γ=logk/loglogk,不失一般性,假设组里的边缘节点的速度范围为[γ
q-1
,γq);
[0118]
划分完组之后,需要确定任务分配到哪个边缘节点组中,组分配的设计是基于线
性规划问题的解;首先,不考虑边缘节点之间的传输时间,建立以下的混合整数线性规划问题:
[0119][0120][0121][0122][0123][0124][0125]
由于混合整数线性规划问题是np难的,对x
i,k
=1约束松弛为x
i,k
≥0,设t
*
是此问题的最优解,对于集合用表示在组里所有边缘节点的处理速度:
[0126][0127]
设是任务i分配到边缘节点组的总的部分:
[0128][0129]
对任意的任务i,设li是至少由一半的任务分配到边缘节点组中:
[0130]
最大的组下标序列:
[0131][0132]
因此,选择将任务i卸载到在边缘节点组中的总的速度最大的边缘节点组:
[0133][0134]
步骤6:确定相关性任务在边缘节点上的调度方案:采用基于速度的最早优先调度算法得到相关性任务在边缘节点上的调度方案。
[0135]
基于速度的最早时间优先调度算法的具体步骤如下:
[0136]
步骤6.1:初始化调度策略方案和任务集合
[0137]
步骤6.2:找到任务集合中所有没有前驱节点的任务,加入到θ集合;
[0138]
步骤6.3:根据步骤1.5中的组分配规则和任务与边缘节点的映射关系,对θ集合中所有的任务,分别计算任务在卸载的边缘节点组中的所有边缘节点上的开始时间,即st
′
i,k
=min
k∈y(i)
est
i,k
,则此时:st
′
1,2
=0.03;
[0139]
步骤6.4:找到开始时间最小的任务加入到ρ集合,即ρ={i:i=argmin
i'∈θ
sti′
,k
},则此时ρ={1};
[0140]
步骤6.5:在ρ集合里随机选择任务i在边缘节点k上执行,并记录开始时间st
i,
'k,
则此时任务1卸载到边缘节点2上执行,st1'
,2
=0.03;
[0141]
步骤6.6:将此时的最早开始时间赋值给开始时间,即st
1,2
=0.03,则此时步骤6.7:将分配过的任务i在任务集合中移除,即则此时
[0142]
步骤6.8:重复执行步骤1.6.2到步骤1.6.7,直到任务集合为空;
[0143]
步骤6.9:输出调度策略方案stv×k。最终输出的调度策略方案如表5所示:
[0144][0145][0146]
表5:最终输出的调度方案stv×k[0147]
步骤7:设备根据得到的调度方案,将任务卸载到对应的边缘节点上,边缘节点对任务进行调度执行。
[0148]
应该注意的是,上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。