一种基于任务依赖的边缘计算卸载调度方法

文档序号:33561439发布日期:2023-03-22 14:36阅读:91来源:国知局
一种基于任务依赖的边缘计算卸载调度方法

1.本发明属于边缘计算和网络通信技术领域,尤其涉及一种基于任务依赖的边缘计算卸载调度方法。


背景技术:

2.工业场景中,设备往往需要执行一些计算任务,很多计算任务设备自身无法处理,需要卸载到与设备连接的边缘端进行处理。当任务较多或者对于边缘端的要求较高时,需要对任务进行卸载,有些场景下会将任务卸载到云端进行处理,然而对于云端的服务器要求较高,且云服务器一般距离工业现场较远,对于有时延要求的任务,不适合卸载到云端,一般将这些任务卸载到设备现场的其他边缘服务器上进行处理。
3.随着模块化程序设计的发展,越来越多的工业应用开始采用模块化程序设计,其中一般包含很多任务模块。模块与模块之间存在着数据依赖关系,这些任务模块的依赖关系一般可以用有向无环图来表示,图中的每个节点对应相应的任务,节点间的边表示任务之间的依赖关系。将模块化的任务通过这种方式卸载,而不是传统中的整体卸载,可以大大提高任务卸载的灵活性。
4.对于有向无环图类型的任务,任务之间不仅会有前驱后继的关系,可能还会有并行任务的关系,对于并行任务,由于可以同时执行,这时设计较好的卸载决策就显得尤为重要。
5.任务卸载的一个比较关键的一环是选择适合的卸载节点。传统网络中选择节点更多是考虑节点自身的计算资源,不能将链路中的网络要素考虑在内,容易选择路径较远或者网络路径较差的节点。sdn作为一种新型网络架构,可以较容易获取整个系统的网络状态参数,从而获取不仅满足节点计算资源需求,又有较好传输路径的卸载节点。同时,sdn控制器对于有向无环图类型的任务卸载,可以根据需求为其设计相应的卸载决策,减少卸载时延,最终获得适合的卸载节点和较佳的卸载策略。


技术实现要素:

6.本发明的目的是克服现有技术的不足,提出一种基于任务依赖的边缘计算卸载调度方法。
7.本发明解决其技术问题所采用的技术方案如下:一种基于任务依赖的边缘计算卸载调度方法,包括如下步骤:
8.(1)基于任务依赖的工业边缘计算系统由工业设备device、边缘节点edge、sdn交换机sw和sdn控制器controller组成;
9.若干个device连接到一个edge,edge为device提供任务处理所需的计算能力;
10.每个edge连接一个sw,两者组合在一起形成一个具备计算能力的网络节点node,node的计算能力大小记作cp;
11.node彼此连接组成网络net,彼此连接的两个node之间的连线称为链路link,link
的延迟记作delay;
12.controller拥有net的全局视图topo
net
,topo
net
由node和link组成;
13.将device自身连接的node记作node
local
,node
local
维护着一个任务依赖关系图;
14.(2)device产生一组彼此有依赖关系的任务交由node
local
处理;
15.(3)node
local
将这些任务之间的依赖关系表示为有向无环图dag,dag中的顶点表示各个计算任务,每条有向边表示任务之间的依赖关系,两个顶点之间存在有向边表明后继任务不能早于前驱任务调度执行,前驱任务的输出数据作为后继任务的输入;
16.dag中没有前驱的任务称作开始任务task
start
,没有后继的任务称作结束任务task
end

17.(4)node
local
向controller发送dag处理请求task
req
,task
req
中包含了dag中的各个任务间的依赖关系,且每个任务还包含了处理该任务对node计算能力的要求,即cp值大小记作cp
task
,controller对dag的处理包括如下步骤:
18.(4-1)controller将dag图中的所有任务标记为未调度任务task
unscheduled

19.(4-2)controller遍历所有task
unscheduled
,找到cp
task
最大的task
unscheduled
,该task
unscheduled
所对应的cp值记作cp
max

20.(5)controller基于topo
net
进行路径规划,具体包括如下步骤:
21.(5-1)以node
local
为起点,在topo
net
中遍历各个node,直到找到第一个cp值大于等于cp
max
的node,将其作为卸载节点node
unload

22.(5-2)controller以delay为链路代价,以node
local
为起点,以node
unload
为终点,在topo
net
中规划最短路径path
min
,为该路径上的每一个sw生成转发表并下发到各个sw;
23.(6)controller在dag中以task
start
为起始点查找没有前驱节点的任务task
nopre
,具体包括如下步骤:
24.(6-1)当task
nopre
数量只有1个,如果task
nopre
的cp
task
小于等于node
local
的cp值cp
local
,则task
nopre
在node
local
上执行,否则task
nopre
在node
unload
上执行;跳转至步骤(6-3);
25.(6-2)当task
nopre
数量大于1个,controller将所有task
nopre
的cp
task
按照升序排序,按照排序从前往后依次判断每个task
nopre
的cp
task
是否小于等于cp
local

26.如果所有的task
nopre
都不满足该条件,则所有的task
nopre
都卸载到node
unload
上,按照顺序依次执行;
27.如果有部分的task
nopre
满足该条件,则node
local
根据排序从前往后依次执行满足条件的task
nopre
,node
unload
从后往前依次执行不满足条件的task
nopre
,直到所有的task
nopre
被执行完毕;
28.如果全部的task
nopre
都满足该条件,则node
local
根据排序从前往后依次执行task
nopre
,node
local
从后往前依次执行task
nopre
,直到所有的task
nopre
被执行完毕;
29.(6-3)controller将已调度的task
nopre
及其连接的有向边从dag中删除,再返回到步骤(6),直到dag中没有剩余任务,调度结束。
30.进一步地,步骤(3)中,将有向无环图dag表示为g=(t,l),t表示dag中所有任务的集合,l表示dag中所有有向边的集合;每条有向边l(m,n)表示任务m和任务n的依赖关系,具体表示任务m的输出数据作为任务n的输入,将任务m称作任务n的前驱,任务n称作任务m的后继;任务n有多个输入时,必须当任务n的所有前驱任务都执行完毕后,才可以执行任务n。
31.进一步地,步骤(5-2)中,在topo
net
中通过dijkstra算法规划最短路径,记作path
min
,为path
min
上的每一个sw生成转发表并下发到各个sw。
32.本发明有益效果如下:针对有任务依赖关系的边缘计算卸载问题,提出了一种基于任务依赖的边缘计算卸载调度方法。在有依赖关系的任务图中,通过sdn控制器选择满足任务计算需求的卸载节点,对卸载节点进行路径规划,并将任务图中的任务进行调度,确定各个任务在本地节点或卸载节点执行,针对任务图中的无前驱任务是否有多个的情况,分别设计调度决策,对任务调度进行了灵活处理,减少了任务卸载的总时延,设计了较佳的任务调度决策。
附图说明
33.图1中(a)、(b)为两个任务图样例;
34.图2为本发明一示例性实施例提供的基于任务依赖的边缘计算卸载调度方法流程图。
具体实施方式
35.为了便于本领域一般技术人员理解和实现本发明,现结合附图进一步说明本发明的技术方案,给出一种本发明所述的具体实施方式。
36.基于任务依赖的工业边缘计算系统由工业设备、边缘节点、sdn交换机和sdn控制器组成;若干个工业设备与边缘节点连接,边缘节点连接sdn交换机,各个sdn交换机与sdn控制器相连;每条链路有自己的延迟值;sdn控制器可以掌控网络的全局视图;边缘节点用来处理工业设备的计算任务,每个边缘节点有自己的计算能力值。
37.每个边缘节点同一时间段内都只能运行一个任务,工业设备产生的计算任务是有依赖关系的,可以看做有向无环图,如图1所示,在一个任务图中,顶点表示各个计算任务,有向边表示计算任务之间的依赖关系,两个顶点之间存在有向边表明后继任务(有向边的结尾顶点)不能早于前驱任务(有向边的起始顶点)调度执行,前驱任务的输出数据作为后继任务的输入。任务图中没有前驱的任务称作开始任务,没有后继的任务称作结束任务。
38.工业设备产生有依赖关系的任务,将其交给与该设备直连的边缘节点即本地节点处理,本地节点向sdn控制器发送任务处理请求,任务请求中包含了各个任务间的依赖关系,而且每个任务包含处理该任务对于边缘节点计算能力值的要求。
39.sdn控制器将任务图中的所有任务标记为未调度任务,遍历任务图中所有任务,找到对节点计算能力要求最大的一个任务,针对该计算能力要求,以本地节点为起点,在网络拓扑图中遍历其他各节点,直到找到第一个满足计算能力要求的作为卸载节点,然后以路径延迟为链路代价通过dijkstra算法为卸载节点规划路径。dijkstra算法是从一个顶点到其余顶点的最短路径算法,解决的是有权图中最短路径问题。本方法中的权值就是每条链路的延迟值。通过这一步,不仅选择了满足计算资源需求的边缘节点,还对所选择节点进行了路径规划,可以拥有较好的任务卸载传输路径。
40.确定完任务卸载节点后,sdn控制器根据规划好的卸载路径,为该路径上的每一个sdn交换机生成转发表,并将转发表下发给这些sdn交换机。
41.sdn控制器搜索任务图中没有前驱节点的任务,判断无前驱任务是否只有单个任
务,如果是只有单个任务,则根据计算需求判断本地节点是否满足任务处理条件,如果满足则在本地节点处理该任务,不满足则在卸载节点处理;
42.如果无前驱任务有多个,就先根据各个无前驱任务对节点计算能力值大小进行排序,按照排序从小到大依次判断每个无前驱任务是否满足在本地节点计算的条件,如果都不满足,则按照顺序在卸载节点上依次执行所有无前驱任务;
43.如果有部分无前驱节点任务满足在本地节点计算的条件,则本地节点按照从前往后的顺序依次执行满足条件的无前驱任务,卸载节点按照从后往前的顺序依次执行不满足条件的无前驱任务,直到所有无前驱节点任务都被执行;
44.如果所有无前驱节点任务都满足在本地节点计算的条件,则本地节点按照从前往后的顺序依次执行无前驱任务,卸载节点按照从后往前的顺序依次执行无前驱任务,直到所有无前驱节点任务都被执行;
45.在有部分或所有无前驱任务都满足本地节点计算条件时,将本地节点和卸载节点都运用起来,而不是仅在本地节点执行任务,可以减少执行所有无前驱任务所需的时间,灵活处理任务调度。
46.sdn控制器将已调度的任务从任务图中删除,再从搜索有无前驱任务的步骤继续计算,直到任务图中没有剩余任务,调度结束。
47.以下描述一种基于任务依赖的边缘计算卸载调度方法的示例性实施过程,如图2所示,包括如下步骤:
48.步骤(1)基于任务依赖的工业边缘计算系统由工业设备(记作device)、边缘节点(记作edge)、sdn交换机(记作sw)和sdn控制器(记作controller)组成;
49.若干个device连接到一个edge,edge为device提供任务处理所需的计算能力;
50.每个edge连接一个sw,两者组合在一起形成一个具备计算能力的网络节点(记作node),node的计算能力大小记作cp;
51.node彼此连接组成网络(记作net),彼此连接的两个node之间的连线称为链路(记作link),link上有该链路的延迟(记作delay);
52.controller拥有net的全局视图(记作topo
net
),topo
net
由node和link组成;
53.将device自身连接的node记作node
local
,node
local
维护着一个任务依赖关系图;
54.步骤(2)device产生一组彼此有依赖关系的任务交由本地的node
local
处理;
55.步骤(3)node
local
将这些任务之间的依赖关系表示为有向无环图,记作dag,表示为g=(t,l),t表示dag中所有任务的集合,l表示dag中所有有向边的集合;
56.每条有向边l(m,n)表示任务m和任务n的依赖关系,具体表示任务m的输出数据作为任务n的输入,将任务m称作任务n的前驱,任务n称作任务m的后继;任务n有多个输入时,必须当任务n的所有前驱任务都执行完毕后,才可以执行任务n;
57.dag中没有前驱的任务称作开始任务(记作task
start
),没有后继的任务称作结束任务(记作task
end
);除了task
start
和task
end
,每个任务都有至少一个前驱或后继;
58.步骤(4)node
local
向controller发送dag处理请求(记作task
req
),task
req
中包含了dag中的各个任务间的依赖关系,且每个任务还包含了处理该任务对node计算能力的要求,即cp值大小(记作cp
task
),controller对dag的处理包括如下步骤:
59.步骤4-1controller将dag图中的所有任务标记为未调度任务(记作
task
unscheduled
);
60.步骤4-2controller遍历所有task
unscheduled
,找到cp
task
最大的task
unscheduled
,该task
unscheduled
所对应的cp值记作cp
max

61.步骤(5)controller基于topo
net
进行路径规划,具体包括如下步骤:
62.步骤5-1以node
local
为起点,在topo
net
中遍历各个node,直到找到第一个cp值大于等于cp
max
的node,将其作为卸载节点(记作node
unload
);
63.步骤5-2controller以delay为链路代价,以node
local
为起点,以node
unload
为终点,在topo
net
中通过dijkstra算法规划最短路径(记作path
min
),为该路径上的每一个sw生成转发表并下发到各个sw;
64.步骤(6)controller在dag中以task
start
为起始点查找没有前驱节点的任务(记作task
nopre
),具体包括如下步骤:
65.步骤6-1当task
nopre
数量只有1个,如果task
nopre
的cp
task
小于等于node
local
的cp值(记作cp
local
),则task
nopre
在node
local
上执行,否则task
nopre
在node
unload
上执行;跳转至步骤6-3;
66.步骤6-2当task
nopre
数量大于1个,controller将所有task
nopre
的cp
task
按照升序排序,按照排序从前往后依次判断每个task
nopre
的cp
task
是否小于等于cp
local

67.如果所有的task
nopre
都不满足该条件,则所有的task
nopre
都卸载到node
unload
上,按照顺序依次执行;
68.如果有部分的task
nopre
满足该条件,则node
local
根据排序从前往后依次执行满足条件的task
nopre
,node
unload
从后往前依次执行不满足条件的task
nopre
,直到所有的task
nopre
被执行完毕;
69.如果全部的task
nopre
都满足该条件,则node
local
根据排序从前往后依次执行task
nopre
,node
local
从后往前依次执行task
nopre
,直到所有的task
nopre
被执行完毕;
70.步骤6-3controller将已调度的task
nopre
及其连接的有向边从dag中删除,再返回到步骤(6),直到dag中没有剩余任务,调度结束。
71.以上所述的具体实施方式对本发明的技术方案和有益效果进行了详细说明,应理解的是以上所述仅为本发明的最优选实施例,并不用于限制本发明。凡在本发明的原则范围内所做的任何修改、补充和等同替换等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1