发明内容
发明目的:针对上述现有技术存在的缺陷,本发明旨在提供一种无线协作微云系统的资源调度方法,通过将若干AP的协作调度,使之共同处理一个工作流,减少了单个工作流的平均处理时间,提高了系统性能。同时,通过资源的分配,负载的均衡使得资源的利用率有所提高。
技术方案:一种无线云计算系统的资源分配方法,包括以下步骤:
(1)计算工作流的任务n任务节点权值和任务n到任m边的权值;
(2)计算每个任务的优先级;
(3)找到剩余任务中优先级最高的任务n,n对PCP进行初始化。设任务n的后驱任务有r个,分别为m1,m2,…,mr;
(4)去除m1,m2,…,mr中前驱未全部被分配至任何PCP段的任务,剩余的任务中取优先级值最大的任务加入该段PCP,一直分配下去,直到没有符合条件的任务,该段PCP分配完成;
(5)逐个检查该段PCP中的任务,完成新一段PCP的分配,直到所有的任务都被分配至PCP段中;
(6)如果不存在可分配AP,则将所有的AP设置为可分配,找到可分配PCP段的AP,计算PCP段分配至可分配AP的EFT,比较一段PCP在各个可分配AP中的EFT,选取使EFT有最小的值的AP作为该段PCP的映射AP;
(7)当选取过程中,选取AP得到的EFT为无穷时,逐一分析该段PCP中的任务,如果任务的前驱到该任务传输时间为无穷,进行路由;
(8)确定起点AP和终点AP,接着找出通过最短跳数连接两个AP的路径,将该路径作为路由路径。
进一步的,步骤(1)中所述任务n任务节点权值为该节点的任务处理延时其中I为任务的任务量,为平均每个AP的处理速度;所述任务n到任m边的权值为传输延时其中Transferdata为任务间传输的任务量,为AP间平均链路的带宽。
进一步的,所述步骤(2)具体为:计算出每个任务节点到结束任务nexit的最长路径的值,将该值作为每个任务的优先级。
进一步的,计算出每个任务节点到结束任务nexit的最长路径的方法具体为:设n任务的后驱任务有r个,分别为m1,m2,...,mr,则任务n的优先级为其中设定初值即结尾任务nexit的优先级Iexit为结尾任务的任务量。
进一步的,步骤(4)具体为:假设两个集合α和β,α内部放入已经被分配至PCP的任务,β内放入未分配至PCP的任务,α的初始值为一个空集,之后按照优先级rank的顺序,寻找PCP段;对于m1,m2,...,mr中任务mi,其中mi的所有的前驱任务有q个,分别为l1,l2,...,lq,如果l1,l2,...,lq都已经在α中,则mi得以保留,并继续分配,直到没有符合条件的任务,该段PCP分配完成。
进一步的,步骤(5)具体为:逐个检查该段PCP中的任务,如果该段PCP中的任务的后驱任务中存在该任务的前驱全部都分配至PCP的任务,则开始对下一段PCP进行分配,直到所有的任务都被分配至PCP段中。
进一步的,所述步骤(8)具体为:设需要进行路由的起始AP为APfrom,路由的终点AP为APto,设经过一跳增加跳数,找出APfrom可以到达的AP,如果当中没有APto,则继续寻找路由路径,找出两跳APfrom可以到达的AP,如果其中依然没有APto,则继续增加跳数,直到找出可以到达APto的路径为止,将该路径作为路由路径。
有益效果:首先,本发明提出了一种基于PCP的任务分配方式,通过PCP的映射过程,完成对任务的映射过程,此过程中使关联性较强的任务分配于同一AP当中,减少了任务间数据的传输时间。其次,在PCP的分配过程中考虑到了让PCP至AP的映射更加的均衡,在以往的PCP分配方式中,当AP之间的信道带宽过于的小的时候,如果按照最优的选择方式,可能造成有些AP永远分配不到PCP,而本发明中通过强制将AP设置为可分配不可分配两种状态,避免了这种情况。最后,本发明针对无线通信中AP之间并非全联通的情况,设置了路由算法,将若干AP连接起来,使之协作起来处理一个工作流,减少了单个工作流的处理时间,提高了系统性能。
具体实施方式
下面通过一个最佳实施例并结合附图对本技术方案进行详细说明。
任务流中任务有一定的先后顺序,所有的任务必须等待它的所有前驱都执行完毕才可以执行,则我们需要设定优先级去衡量任务的执行顺序。在任务到AP(WirelessAccess Point)的映射过程当中,可以将具有一定前后关系的任务是可以分配在同一个PCP(Partial Critical Path)段内,位于同一段PCP中的任务一定分配于同一个AP,则该段PCP内的任务间的数据传输时间为0,这样通过PCP分配到AP减少了AP间传输的总数据量。在上述PCP映射过程中,需要考虑两个条件,一方面,希望各个PCP段在AP中分布的更均匀些,可以保证负载更加均衡,另一方面,需要PCP选取局部最优的AP,使其在更短的时间内被完成。当存在AP之间非全联通的情况,任务之间的数据无法直接到达,需要通过路由到其他的AP完成对数据的传输。
如图1所示,一种无线云计算系统的资源分配方法,包括以下步骤:
(1)移动应用被分解为多个任务块,任务之间具有数据依赖关系,形成一个工作流,如图2所示,以一个简单工作流为例,其中工作流的内部有相应的权值,首先计算工作流的任务n任务节点权值和任务n到任m边的权值;任务n任务节点权值为该节点的任务处理延时其中I为任务的任务量,为平均每个AP的处理速度;所述任务n到任m边的权值为传输延时其中Transferdata为任务间传输的任务量,为AP间平均链路的带宽。
(2)计算每个任务的优先级,具体为:计算出每个任务节点到结束任务nexit的最长路径的值,将该值作为每个任务的优先级。计算出每个任务节点到结束任务nexit的最长路径的方法具体为:设n任务的后驱任务有r个,分别为m1,m2,...,mr,则任务n的优先级为 其中设定初值即结尾任务nexit的优先级Iexit为结尾任务的任务量。
如图4所示,通过结束任务逐步向前搜索,当一个任务的后驱任务的优先级已知之后,可以求得该任务的优先级的值。我们假设有一个集合x,其中放入已知优先级的额任务,首先结尾任务的优先级可求,将其放入x中初始化,对于集合x中的所有任务,找出这些任务的前驱,去重并放入集合temp中,接着逐个分析temp中的任务,如果该任务的所有后驱任务都在x中,该任务得以保留,则通过以上方式,temp中任务的优先级可求,同时更新x中任务,继续上述过程,直到所有的任务都在集合x中。
(3)如图5所示,找到剩余任务中优先级最高的任务n,n首先加入该段PCP中,即n对PCP进行初始化,设其后驱任务有r个,分别为m1,m2,…,mr;
(4)去除m1,m2,…,mr中前驱未全部被分配至任何PCP段的任务,剩余的任务中取优先级值最大的任务加入该段PCP,一直分配下去,直到没有符合条件的任务,该段PCP分配完成;具体为:假设两个集合α和β,α内部放入已经被分配至PCP的任务,β内放入未分配至PCP的任务,α的初始值为一个空集,之后按照优先级rank的顺序,寻找PCP段;对于m1,m2,...,mr中任务mi,其中mi的所有的前驱任务有q个,分别为l1,l2,...,lq,如果l1,l2,...,lq都已经在α中,则mi得以保留,并继续分配,直到没有符合条件的任务,该段PCP分配完成。
(5)逐个检查该段PCP中的任务,完成新一段PCP的分配,直到所有的任务都被分配至PCP段中;具体为:逐个检查该段PCP中的任务,如果该段PCP中的任务的后驱存在该任务的前驱全部都分配至PCP的任务,则开始新一段PCP进行分配,重复以上过程建立新的PCP段直到所有的任务都被分配至PCP段α中。
(6)如图6所示,通过上一个步骤,找到了各段PCP,之后按照顺序,将各段PCP映射至AP中。如果不存在可分配AP,则将所有的AP设置为可分配,找到可分配PCP段的AP,计算PCP段分配至可分配AP的EFT(Estimated Finish Time),比较一段PCP在各个可分配AP中的EFT,选取使EFT有最小的值的AP作为该段PCP的映射AP;
具体的:对于一个AP,它有两种状态即可分配和不可分配。当一个可分配状态的AP被分配给了某个PCP之后,它的状态将装变为不可分配。这样将PCP一直分配下去,直到所有的AP都变为不可分配的状态时候,将所有AP的状态还原为可分配,之后继续进行PCP的映射过程。对于一段PCP,把该段PCP最后一个任务的EFT作为该段PCP的EFT,通过比较一段PCP在各个可分配AP中的EFT,选取使其EFT最小的AP作为选择AP。假设对于任务m,m的所有的前驱任务有q个,设为l1,l2,...,lq,任务m分配于APi,切此时已经分配给APi的任务有k个,分别为t1,t2,...,tk,则任务m的EFT如公式(2)所示,其中EST(Estimated Start Time)表示为公式(3),公式中(3)RRT(Resource Ready Time)表示为公式(4),TRT(TAsk Ready Time)表示为公式(5),其中公式(5)需要说明一下,当有前后驱关系的两个任务分配在同一个AP的时候,两个任务间数据传输时间即TT为0。则通过以上公式逐次求得PCP任务的EFT,
可以得到该段PCP的EFT。
EFT(m)=EST(m)+ETm (2)
EST(m)=max{RRT(APi),TRT(m)} (3)
RRT(APi)=max{EFT(t1),EFT(t2),...,EFT(tk)} (4)
(7)当选取过程中,选取AP得到的EFT为无穷时,需要进行路由以达到数据的传递,此时,该段PCP已经选择好了要分配的AP。首先,逐一分析该段PCP中的任务,如果任务的前驱到该任务传输时间为无穷,则找到无法直接连接的两个AP,寻找路由路径,进行路由;
(8)确定起点AP和终点AP,接着找出通过最短跳数连接两个AP的路径,将该路径作为路由路径;设需要进行路由的起始AP为APfrom,路由的终点AP为APto,设经过一跳增加跳数,找出APfrom可以到达的AP,如果当中没有APto,则继续寻找路由路径,找出两跳APfrom可以到达的AP,如果其中依然没有APto,则继续增加跳数,重复上述过程,直到找出可以到达APto的路径为止,将该路径作为路由路径。
这里对图2中10点工作流举一个例子。假设对于一个10点工作流,其结构如图2所示,下面设置具体的参数,假设每个AP的处理速度P都为10000MIPS(Million InstructionPer Second),则在数据传输过程中,设AP间带宽B都为106bit/s,则其任务号对应的任务量I如表1所示,其单位为MI(Million Instruction)。
表1任务量
任务号 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
任务量 |
0 |
1339000 |
1383000 |
1336000 |
1378000 |
1037000 |
1059000 |
1088000 |
1755000 |
0 |
其任务间传递的数据量Transferdata如表2所示,数据量单位为bit。
表2任务间传递的数据量Transferdata
假设有4个AP,其联通状况如表5所示,其中表内的值为1表示该路径联通,为0表示不联通,例如,表格中第2行第3列的标号为1,表示从AP1到AP2联通。
表3AP之间的连接关系
AP号 |
1 |
2 |
3 |
4 |
1 |
0 |
1 |
0 |
0 |
2 |
1 |
0 |
1 |
0 |
3 |
0 |
1 |
0 |
1 |
4 |
0 |
0 |
1 |
0 |
下面按照步骤完成任务的映射过程:
①将表1中数据除以表2中数据除以即可得到图2中工作流的各任务节点权值和边权值。
②则任务9的rank值任务6的后驱只有任务9则同理 按照上述方法,得到rank值如表4。
表4各任务节点rank值
③~⑤首先选择任务1开始寻找,任务1放入PCP当中,之后看任务1的后驱即[2,3,4,5],四个任务的前驱都只是任务1,则选择rank值最大的任务5放入该段PCP当中,之后看任务5的后驱任务8,任务8的前驱为[2,4,5],其中任务2,4没有被分配进入任何一段PCP,则此段PCP寻找完成,该段PCP为[1,5],接下来分析此PCP。任务1的未被分配的后驱[2,3,4],在未分配出去的任务中取rank最大值的任务,为任务3,其后驱为7,对于任务7,其前驱为任务[3,4],任务4并没有被分配出去,则此段PCP分配完成,为[3],接下来分析此段PCP,没发现符合要求的任务,结束。回到对任务1的分析,它未被分配的后驱[2,4],取rank比较大的也就是任务2,任务2的后驱为[6,8],两者都不符合加入PCP,此段PCP分配结束。按照上述方法一直取下去。其PCP分配的结果如表5。
表5PCP分配结果
PCP标号 |
1 |
2 |
3 |
4 |
5 |
6 |
包含任务 |
1,5 |
3 |
2 |
4,8 |
7 |
6,9,10 |
⑥~⑧对于第一段PCP即[1,5],其分配至AP1,对于任务1,其EFT为0,对于任务5,其前驱只有任务1,则该段PCP的EFT(即任务5的EFT)1378000/P=137.8,此时AP1设置为不可分配。接下来分配第二段PCP即[3],任务3的前驱为任务1,任务1的EFT为0,在剩余可分配的AP2,AP3,AP4中,它们的RRT都为0,则PCP的分配给AP1的EFT(即任务3的EFT)为max{0+0/B,0}+1383000/P=138.3,同理计算出在该段PCP可分配在AP3和AP4的EFT分别为138.3与138.3,则按照顺序将该段PCP映射给AP2,得到任务3的EFT为138.3,此时AP2设置为不可分配。之后分配第三段PCP即[2],它的前驱为任务1,其EFT为0,其在剩余可分配的AP3,AP4中的RRT都为0,则PCP分配给AP3的EFT为max{0+0/B,0}+1339000/P=133.9,同理该段PCP分配在AP4的EFT(即任务2的EFT)也为133.9,则我们顺序选择将该段PCP映射给AP3,任务2的EFT为133.9,AP3设置为不可分配。接着对第四段PCP即[4,8]进行分配,此时可分配的AP为AP4,其RRT为0,对于任务4,其前驱任务1的EFT为0,则任务4的EFT=max{0+0/B,0}+1336000/P=133.6,对于任务8,它的前驱为[2,4,5],这些前驱分配的AP号为[3,4,1],对于任务4,它和任务8在同一个PCP中,两者的传输延时不计,对于任务2,它映射在AP3,AP3到AP4可以直接传输,传输延时为8.873456。对于任务5,它位于AP1,而AP1到AP4无法直接传输,我们需要寻找AP1到AP4的路由路径,AP1的连接路径为AP2,则以AP1为起点,路由一跳的路径为[1,2],没有到达AP3,继续寻找。以AP1为起点,路由两条的所有路由路径为[1,2,1],[1,2,3],也没有到达AP4,以AP1为起点,路由三跳的所有路由路径为[1,2,1,2],[1,2,3,2],[1,2,3,4],其中后一条路径到达AP4,则选择该条路径为路由路径,此时AP4的RRT为任务4的EFT,即为133.6,则任务8的EFT为max{max{137.8+7853276/B*3,1383+8873456/B,133.6},133.6}+1088000/P=270.1598,此时AP4设置为不可分配。之后所有的AP都设置为不可分配了,则重新把所有的AP设置为可分配。按照这种方法继续下去,直到所有的PCP段分配完成,则完成了任务到AP的映射过程。
以上仅是本发明的优选实施方式,应当指出:对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。