CN115827088A - 一种基于任务依赖的边缘计算卸载调度方法 - Google Patents
一种基于任务依赖的边缘计算卸载调度方法 Download PDFInfo
- Publication number
- CN115827088A CN115827088A CN202211393070.9A CN202211393070A CN115827088A CN 115827088 A CN115827088 A CN 115827088A CN 202211393070 A CN202211393070 A CN 202211393070A CN 115827088 A CN115827088 A CN 115827088A
- Authority
- CN
- China
- Prior art keywords
- task
- node
- tasks
- nopre
- dag
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种基于任务依赖的边缘计算卸载调度方法,属于边缘计算和网络通信技术领域。工业设备具有任务依赖关系的任务,传统方法对于任务调度处理较复杂,且容易选择不适合的卸载节点。本发明方法与传统方法不同,根据任务请求,首先通过SDN控制器选择适合的卸载节点并进行路径规划,然后将任务图中的任务进行调度,为各个任务选择在本地节点或卸载节点执行,并且针对任务图中的无前驱任务在不同情况下设计不同的调度决策,对任务调度进行了灵活处理,减少了任务卸载的总时延,设计了较佳的任务调度决策。
Description
技术领域
本发明属于边缘计算和网络通信技术领域,尤其涉及一种基于任务依赖的边缘计算卸载调度方法。
背景技术
工业场景中,设备往往需要执行一些计算任务,很多计算任务设备自身无法处理,需要卸载到与设备连接的边缘端进行处理。当任务较多或者对于边缘端的要求较高时,需要对任务进行卸载,有些场景下会将任务卸载到云端进行处理,然而对于云端的服务器要求较高,且云服务器一般距离工业现场较远,对于有时延要求的任务,不适合卸载到云端,一般将这些任务卸载到设备现场的其他边缘服务器上进行处理。
随着模块化程序设计的发展,越来越多的工业应用开始采用模块化程序设计,其中一般包含很多任务模块。模块与模块之间存在着数据依赖关系,这些任务模块的依赖关系一般可以用有向无环图来表示,图中的每个节点对应相应的任务,节点间的边表示任务之间的依赖关系。将模块化的任务通过这种方式卸载,而不是传统中的整体卸载,可以大大提高任务卸载的灵活性。
对于有向无环图类型的任务,任务之间不仅会有前驱后继的关系,可能还会有并行任务的关系,对于并行任务,由于可以同时执行,这时设计较好的卸载决策就显得尤为重要。
任务卸载的一个比较关键的一环是选择适合的卸载节点。传统网络中选择节点更多是考虑节点自身的计算资源,不能将链路中的网络要素考虑在内,容易选择路径较远或者网络路径较差的节点。SDN作为一种新型网络架构,可以较容易获取整个系统的网络状态参数,从而获取不仅满足节点计算资源需求,又有较好传输路径的卸载节点。同时,SDN控制器对于有向无环图类型的任务卸载,可以根据需求为其设计相应的卸载决策,减少卸载时延,最终获得适合的卸载节点和较佳的卸载策略。
发明内容
本发明的目的是克服现有技术的不足,提出一种基于任务依赖的边缘计算卸载调度方法。
本发明解决其技术问题所采用的技术方案如下:一种基于任务依赖的边缘计算卸载调度方法,包括如下步骤:
(1)基于任务依赖的工业边缘计算系统由工业设备Device、边缘节点Edge、SDN交换机SW和SDN控制器Controller组成;
若干个Device连接到一个Edge,Edge为Device提供任务处理所需的计算能力;
每个Edge连接一个SW,两者组合在一起形成一个具备计算能力的网络节点Node,Node的计算能力大小记作CP;
Node彼此连接组成网络Net,彼此连接的两个Node之间的连线称为链路Link,Link的延迟记作Delay;
Controller拥有Net的全局视图TopoNet,TopoNet由Node和Link组成;
将Device自身连接的Node记作NodeLocal,NodeLocal维护着一个任务依赖关系图;
(2)Device产生一组彼此有依赖关系的任务交由NodeLocal处理;
(3)NodeLocal将这些任务之间的依赖关系表示为有向无环图DAG,DAG中的顶点表示各个计算任务,每条有向边表示任务之间的依赖关系,两个顶点之间存在有向边表明后继任务不能早于前驱任务调度执行,前驱任务的输出数据作为后继任务的输入;
DAG中没有前驱的任务称作开始任务TaskStart,没有后继的任务称作结束任务TaskEnd;
(4)NodeLocal向Controller发送DAG处理请求TaskReq,TaskReq中包含了DAG中的各个任务间的依赖关系,且每个任务还包含了处理该任务对Node计算能力的要求,即CP值大小记作CPTask,Controller对DAG的处理包括如下步骤:
(4-1)Controller将DAG图中的所有任务标记为未调度任务TaskUnscheduled;
(4-2)Controller遍历所有TaskUnscheduled,找到CPTask最大的TaskUnscheduled,该TaskUnscheduled所对应的CP值记作CPMax;
(5)Controller基于TopoNet进行路径规划,具体包括如下步骤:
(5-1)以NodeLocal为起点,在TopoNet中遍历各个Node,直到找到第一个CP值大于等于CPMax的Node,将其作为卸载节点NodeUnload;
(5-2)Controller以Delay为链路代价,以NodeLocal为起点,以NodeUnload为终点,在TopoNet中规划最短路径Pathmin,为该路径上的每一个SW生成转发表并下发到各个SW;
(6)Controller在DAG中以TaskStart为起始点查找没有前驱节点的任务TaskNopre,具体包括如下步骤:
(6-1)当TaskNopre数量只有1个,如果TaskNopre的CPTask小于等于NodeLocal的CP值CPLocal,则TaskNopre在NodeLocal上执行,否则TaskNopre在NodeUnload上执行;跳转至步骤(6-3);
(6-2)当TaskNopre数量大于1个,Controller将所有TaskNopre的CPTask按照升序排序,按照排序从前往后依次判断每个TaskNopre的CPTask是否小于等于CPLocal;
如果所有的TaskNopre都不满足该条件,则所有的TaskNopre都卸载到NodeUnload上,按照顺序依次执行;
如果有部分的TaskNopre满足该条件,则NodeLocal根据排序从前往后依次执行满足条件的TaskNopre,NodeUnload从后往前依次执行不满足条件的TaskNopre,直到所有的TaskNopre被执行完毕;
如果全部的TaskNopre都满足该条件,则NodeLocal根据排序从前往后依次执行TaskNopre,NodeLocal从后往前依次执行TaskNopre,直到所有的TaskNopre被执行完毕;
(6-3)Controller将已调度的TaskNopre及其连接的有向边从DAG中删除,再返回到步骤(6),直到DAG中没有剩余任务,调度结束。
进一步地,步骤(3)中,将有向无环图DAG表示为G=(T,L),T表示DAG中所有任务的集合,L表示DAG中所有有向边的集合;每条有向边l(m,n)表示任务m和任务n的依赖关系,具体表示任务m的输出数据作为任务n的输入,将任务m称作任务n的前驱,任务n称作任务m的后继;任务n有多个输入时,必须当任务n的所有前驱任务都执行完毕后,才可以执行任务n。
进一步地,步骤(5-2)中,在TopoNet中通过Dijkstra算法规划最短路径,记作Pathmin,为Pathmin上的每一个SW生成转发表并下发到各个SW。
本发明有益效果如下:针对有任务依赖关系的边缘计算卸载问题,提出了一种基于任务依赖的边缘计算卸载调度方法。在有依赖关系的任务图中,通过SDN控制器选择满足任务计算需求的卸载节点,对卸载节点进行路径规划,并将任务图中的任务进行调度,确定各个任务在本地节点或卸载节点执行,针对任务图中的无前驱任务是否有多个的情况,分别设计调度决策,对任务调度进行了灵活处理,减少了任务卸载的总时延,设计了较佳的任务调度决策。
附图说明
图1中(a)、(b)为两个任务图样例;
图2为本发明一示例性实施例提供的基于任务依赖的边缘计算卸载调度方法流程图。
具体实施方式
为了便于本领域一般技术人员理解和实现本发明,现结合附图进一步说明本发明的技术方案,给出一种本发明所述的具体实施方式。
基于任务依赖的工业边缘计算系统由工业设备、边缘节点、SDN交换机和SDN控制器组成;若干个工业设备与边缘节点连接,边缘节点连接SDN交换机,各个SDN交换机与SDN控制器相连;每条链路有自己的延迟值;SDN控制器可以掌控网络的全局视图;边缘节点用来处理工业设备的计算任务,每个边缘节点有自己的计算能力值。
每个边缘节点同一时间段内都只能运行一个任务,工业设备产生的计算任务是有依赖关系的,可以看做有向无环图,如图1所示,在一个任务图中,顶点表示各个计算任务,有向边表示计算任务之间的依赖关系,两个顶点之间存在有向边表明后继任务(有向边的结尾顶点)不能早于前驱任务(有向边的起始顶点)调度执行,前驱任务的输出数据作为后继任务的输入。任务图中没有前驱的任务称作开始任务,没有后继的任务称作结束任务。
工业设备产生有依赖关系的任务,将其交给与该设备直连的边缘节点即本地节点处理,本地节点向SDN控制器发送任务处理请求,任务请求中包含了各个任务间的依赖关系,而且每个任务包含处理该任务对于边缘节点计算能力值的要求。
SDN控制器将任务图中的所有任务标记为未调度任务,遍历任务图中所有任务,找到对节点计算能力要求最大的一个任务,针对该计算能力要求,以本地节点为起点,在网络拓扑图中遍历其他各节点,直到找到第一个满足计算能力要求的作为卸载节点,然后以路径延迟为链路代价通过Dijkstra算法为卸载节点规划路径。Dijkstra算法是从一个顶点到其余顶点的最短路径算法,解决的是有权图中最短路径问题。本方法中的权值就是每条链路的延迟值。通过这一步,不仅选择了满足计算资源需求的边缘节点,还对所选择节点进行了路径规划,可以拥有较好的任务卸载传输路径。
确定完任务卸载节点后,SDN控制器根据规划好的卸载路径,为该路径上的每一个SDN交换机生成转发表,并将转发表下发给这些SDN交换机。
SDN控制器搜索任务图中没有前驱节点的任务,判断无前驱任务是否只有单个任务,如果是只有单个任务,则根据计算需求判断本地节点是否满足任务处理条件,如果满足则在本地节点处理该任务,不满足则在卸载节点处理;
如果无前驱任务有多个,就先根据各个无前驱任务对节点计算能力值大小进行排序,按照排序从小到大依次判断每个无前驱任务是否满足在本地节点计算的条件,如果都不满足,则按照顺序在卸载节点上依次执行所有无前驱任务;
如果有部分无前驱节点任务满足在本地节点计算的条件,则本地节点按照从前往后的顺序依次执行满足条件的无前驱任务,卸载节点按照从后往前的顺序依次执行不满足条件的无前驱任务,直到所有无前驱节点任务都被执行;
如果所有无前驱节点任务都满足在本地节点计算的条件,则本地节点按照从前往后的顺序依次执行无前驱任务,卸载节点按照从后往前的顺序依次执行无前驱任务,直到所有无前驱节点任务都被执行;
在有部分或所有无前驱任务都满足本地节点计算条件时,将本地节点和卸载节点都运用起来,而不是仅在本地节点执行任务,可以减少执行所有无前驱任务所需的时间,灵活处理任务调度。
SDN控制器将已调度的任务从任务图中删除,再从搜索有无前驱任务的步骤继续计算,直到任务图中没有剩余任务,调度结束。
以下描述一种基于任务依赖的边缘计算卸载调度方法的示例性实施过程,如图2所示,包括如下步骤:
步骤(1)基于任务依赖的工业边缘计算系统由工业设备(记作Device)、边缘节点(记作Edge)、SDN交换机(记作SW)和SDN控制器(记作Controller)组成;
若干个Device连接到一个Edge,Edge为Device提供任务处理所需的计算能力;
每个Edge连接一个SW,两者组合在一起形成一个具备计算能力的网络节点(记作Node),Node的计算能力大小记作CP;
Node彼此连接组成网络(记作Net),彼此连接的两个Node之间的连线称为链路(记作Link),Link上有该链路的延迟(记作Delay);
Controller拥有Net的全局视图(记作TopoNet),TopoNet由Node和Link组成;
将Device自身连接的Node记作NodeLocal,NodeLocal维护着一个任务依赖关系图;
步骤(2)Device产生一组彼此有依赖关系的任务交由本地的NodeLocal处理;
步骤(3)NodeLocal将这些任务之间的依赖关系表示为有向无环图,记作DAG,表示为G=(T,L),T表示DAG中所有任务的集合,L表示DAG中所有有向边的集合;
每条有向边l(m,n)表示任务m和任务n的依赖关系,具体表示任务m的输出数据作为任务n的输入,将任务m称作任务n的前驱,任务n称作任务m的后继;任务n有多个输入时,必须当任务n的所有前驱任务都执行完毕后,才可以执行任务n;
DAG中没有前驱的任务称作开始任务(记作TaskStart),没有后继的任务称作结束任务(记作TaskEnd);除了TaskStart和TaskEnd,每个任务都有至少一个前驱或后继;
步骤(4)NodeLocal向Controller发送DAG处理请求(记作TaskReq),TaskReq中包含了DAG中的各个任务间的依赖关系,且每个任务还包含了处理该任务对Node计算能力的要求,即CP值大小(记作CPTask),Controller对DAG的处理包括如下步骤:
步骤4-1Controller将DAG图中的所有任务标记为未调度任务(记作TaskUnscheduled);
步骤4-2Controller遍历所有TaskUnscheduled,找到CPTask最大的TaskUnscheduled,该TaskUnscheduled所对应的CP值记作CPMax;
步骤(5)Controller基于TopoNet进行路径规划,具体包括如下步骤:
步骤5-1以NodeLocal为起点,在TopoNet中遍历各个Node,直到找到第一个CP值大于等于CPMax的Node,将其作为卸载节点(记作NodeUnload);
步骤5-2Controller以Delay为链路代价,以NodeLocal为起点,以NodeUnload为终点,在TopoNet中通过Dijkstra算法规划最短路径(记作Pathmin),为该路径上的每一个SW生成转发表并下发到各个SW;
步骤(6)Controller在DAG中以TaskStart为起始点查找没有前驱节点的任务(记作TaskNopre),具体包括如下步骤:
步骤6-1当TaskNopre数量只有1个,如果TaskNopre的CPTask小于等于NodeLocal的CP值(记作CPLocal),则TaskNopre在NodeLocal上执行,否则TaskNopre在NodeUnload上执行;跳转至步骤6-3;
步骤6-2当TaskNopre数量大于1个,Controller将所有TaskNopre的CPTask按照升序排序,按照排序从前往后依次判断每个TaskNopre的CPTask是否小于等于CPLocal;
如果所有的TaskNopre都不满足该条件,则所有的TaskNopre都卸载到NodeUnload上,按照顺序依次执行;
如果有部分的TaskNopre满足该条件,则NodeLocal根据排序从前往后依次执行满足条件的TaskNopre,NodeUnload从后往前依次执行不满足条件的TaskNopre,直到所有的TaskNopre被执行完毕;
如果全部的TaskNopre都满足该条件,则NodeLocal根据排序从前往后依次执行TaskNopre,NodeLocal从后往前依次执行TaskNopre,直到所有的TaskNopre被执行完毕;
步骤6-3Controller将已调度的TaskNopre及其连接的有向边从DAG中删除,再返回到步骤(6),直到DAG中没有剩余任务,调度结束。
以上所述的具体实施方式对本发明的技术方案和有益效果进行了详细说明,应理解的是以上所述仅为本发明的最优选实施例,并不用于限制本发明。凡在本发明的原则范围内所做的任何修改、补充和等同替换等,均应包含在本发明的保护范围之内。
Claims (3)
1.一种基于任务依赖的边缘计算卸载调度方法,其特征在于,包括如下步骤:
(1)基于任务依赖的工业边缘计算系统由工业设备Device、边缘节点Edge、SDN交换机SW和SDN控制器Controller组成;
若干个Device连接到一个Edge,Edge为Device提供任务处理所需的计算能力;
每个Edge连接一个SW,两者组合在一起形成一个具备计算能力的网络节点Node,Node的计算能力大小记作CP;
Node彼此连接组成网络Net,彼此连接的两个Node之间的连线称为链路Link,Link的延迟记作Delay;
Controller拥有Net的全局视图TopoNet,TopoNet由Node和Link组成;
将Device自身连接的Node记作NodeLocal,NodeLocal维护着一个任务依赖关系图;
(2)Device产生一组彼此有依赖关系的任务交由NodeLocal处理;
(3)NodeLocal将这些任务之间的依赖关系表示为有向无环图DAG,DAG中的顶点表示各个计算任务,每条有向边表示任务之间的依赖关系,两个顶点之间存在有向边表明后继任务不能早于前驱任务调度执行,前驱任务的输出数据作为后继任务的输入;
DAG中没有前驱的任务称作开始任务TaskStart,没有后继的任务称作结束任务TaskEnd;
(4)NodeLocal向Controller发送DAG处理请求TaskReq,TaskReq中包含了DAG中的各个任务间的依赖关系,且每个任务还包含了处理该任务对Node计算能力的要求,即CP值大小记作CPTask,Controller对DAG的处理包括如下步骤:
(4-1)Controller将DAG图中的所有任务标记为未调度任务TaskUnscheduled;
(4-2)Controller遍历所有TaskUnscheduled,找到CPTask最大的TaskUnscheduled,该TaskUnscheduled所对应的CP值记作CPMax;
(5)Controller基于TopoNet进行路径规划,具体包括如下步骤:
(5-1)以NodeLocal为起点,在TopoNet中遍历各个Node,直到找到第一个CP值大于等于CPMax的Node,将其作为卸载节点NodeUnload;
(5-2)Controller以Delay为链路代价,以NodeLocal为起点,以NodeUnload为终点,在TopoNet中规划最短路径Pathmin,为该路径上的每一个SW生成转发表并下发到各个SW;
(6)Controller在DAG中以TaskStart为起始点查找没有前驱节点的任务TaskNopre,具体包括如下步骤:
(6-1)当TaskNopre数量只有1个,如果TaskNopre的CPTask小于等于NodeLocal的CP值CPLocal,则TaskNopre在NodeLocal上执行,否则TaskNopre在NodeUnload上执行;跳转至步骤(6-3);
(6-2)当TaskNopre数量大于1个,Controller将所有TaskNopre的CPTask按照升序排序,按照排序从前往后依次判断每个TaskNopre的CPTask是否小于等于CPLocal;
如果所有的TaskNopre都不满足该条件,则所有的TaskNopre都卸载到NodeUnload上,按照顺序依次执行;
如果有部分的TaskNopre满足该条件,则NodeLocal根据排序从前往后依次执行满足条件的TaskNopre,NodeUnload从后往前依次执行不满足条件的TaskNopre,直到所有的TaskNopre被执行完毕;
如果全部的TaskNopre都满足该条件,则NodeLocal根据排序从前往后依次执行TaskNopre,NodeLocal从后往前依次执行TaskNopre,直到所有的TaskNopre被执行完毕;
(6-3)Controller将已调度的TaskNopre及其连接的有向边从DAG中删除,再返回到步骤(6),直到DAG中没有剩余任务,调度结束。
2.根据权利要求1所述的基于任务依赖的边缘计算卸载调度方法,其特征在于,步骤(3)中,将有向无环图DAG表示为G=(T,L),T表示DAG中所有任务的集合,L表示DAG中所有有向边的集合;每条有向边l(m,n)表示任务m和任务n的依赖关系,具体表示任务m的输出数据作为任务n的输入,将任务m称作任务n的前驱,任务n称作任务m的后继;任务n有多个输入时,必须当任务n的所有前驱任务都执行完毕后,才可以执行任务n。
3.根据权利要求1所述的基于任务依赖的边缘计算卸载调度方法,其特征在于,步骤(5-2)中,在TopoNet中通过Dijkstra算法规划最短路径,记作Pathmin,为Pathmin上的每一个SW生成转发表并下发到各个SW。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211393070.9A CN115827088A (zh) | 2022-11-08 | 2022-11-08 | 一种基于任务依赖的边缘计算卸载调度方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211393070.9A CN115827088A (zh) | 2022-11-08 | 2022-11-08 | 一种基于任务依赖的边缘计算卸载调度方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115827088A true CN115827088A (zh) | 2023-03-21 |
Family
ID=85527213
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211393070.9A Pending CN115827088A (zh) | 2022-11-08 | 2022-11-08 | 一种基于任务依赖的边缘计算卸载调度方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115827088A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116455817A (zh) * | 2023-03-23 | 2023-07-18 | 中国人民解放军军事科学院系统工程研究院 | 一种软件定义云网融合架构及路由实现方法 |
-
2022
- 2022-11-08 CN CN202211393070.9A patent/CN115827088A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116455817A (zh) * | 2023-03-23 | 2023-07-18 | 中国人民解放军军事科学院系统工程研究院 | 一种软件定义云网融合架构及路由实现方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110891093B (zh) | 一种时延敏感网络中边缘计算节点选择方法及系统 | |
CN107657316B (zh) | 通用处理器与神经网络处理器的协同系统设计 | |
JP2870117B2 (ja) | 最適計画作成方法 | |
CN110557732B (zh) | 一种车辆边缘计算网络任务卸载负载均衡系统及均衡方法 | |
CN104636204B (zh) | 一种任务调度方法与装置 | |
JP4781089B2 (ja) | タスク割り当て方法およびタスク割り当て装置 | |
CN112000388B (zh) | 基于多边缘集群协同的并发任务调度方法及装置 | |
CN113064671A (zh) | 基于多智能体的边缘云可扩展任务卸载方法 | |
CN115827088A (zh) | 一种基于任务依赖的边缘计算卸载调度方法 | |
CN108769182A (zh) | 一种预测执行任务执行时间的组合优化调度方法 | |
CN110689262A (zh) | 天基信息系统任务调度方法、装置和电子设备 | |
CN107908471A (zh) | 一种任务并行处理方法和处理系统 | |
CN113904923A (zh) | 一种基于软件定义网络的服务功能链联合优化方法 | |
CN113592203A (zh) | 一种压力传感器生产作业调度的智能优化方法及系统 | |
CN116893861A (zh) | 基于空地协同边缘计算的多智能体协作依赖任务卸载方法 | |
CN111049900B (zh) | 一种物联网流计算调度方法、装置和电子设备 | |
CN116302453B (zh) | 量子电子混合平台的任务调度方法及装置 | |
CN117290006A (zh) | 面向vec的依赖性任务卸载和服务缓存联合优化方法 | |
CN109684062B (zh) | 基于成本的跨云平台任务调度方法和系统 | |
Shang et al. | Online container scheduling for data-intensive applications in serverless edge computing | |
Wei et al. | Drl-deploy: adaptive service function chains deployment with deep reinforcement learning | |
CN115756646A (zh) | 一种基于工业互联网的边缘计算任务卸载优化方法 | |
CN116132353A (zh) | 基于ddqn的tsn路由选择方法 | |
CN115841197A (zh) | 一种路径规划方法、装置、设备及存储介质 | |
Shen et al. | Blocking flow shop scheduling based on hybrid ant colony optimization |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |