技术领域本发明涉及一种应用于移动云计算领域的任务卸载方法,更具体地说,本发明涉及一种计算密集型任务向云服务器中卸载的方法。
背景技术:
随着科技的进步,智能手机上的应用程序逐渐趋于计算密集型化,比如面部/手势识别、视觉文本翻译、视频图像处理等。执行上述每一个计算密集型化的应用程序均可看做执行一个“计算密集型任务”。这些计算密集型任务的工作流程中都包含多项服务,每一项服务的完成是通过执行一个独立的任务实现的。将每一项服务以它所对应的任务来表示。每一个任务接收输入数据,执行完毕后输出相应的数据。在一个计算密集型任务的工作流程中,依照程序开发人员设定的任务执行的先后顺序,每一个任务执行完毕,它输出的数据需被它的后续任务接收作为输入数据,后续任务才能开始执行。智能手机由于受到计算能力有限、电池能量有限、内存有限等限制,在处理计算密集型任务时,会显得效率低下。用来解决智能手机有限的计算能力的一个有效的方法是将计算密集型任务合理卸载到云服务器,即卸载到互联的计算机集群中执行,最后再把计算结果传回智能手机。通过卸载,利用云服务器强大的计算能力,使得计算密集型任务总的运算完成时间大大缩短,并且大大降低了智能手机的能量消耗。一个高效合理的任务卸载策略可以大幅度节省计算密集型任务执行完成的总时间。近年来国内外已有一些专家学者对任务卸载方案进行研究,这些方案大致分为两类。第一类:将一个完整的计算密集型任务全部卸载到云服务器上执行;第二类:将一个计算密集型任务分割成多项服务,每项服务对应计算密集型任务中的一个任务,将一部分任务卸载到云服务器中执行,另一部分任务在智能手机中执行。目前已有的研究大多采用第一种方案,由于被卸载的计算密集型任务需要从通过网络从智能手机传输到云服务器上,那么将完整的计算密集型任务交付于云服务器计算产生的网络传输开销是巨大的。此外,由于在此种情况下智能手机并不对任务进行计算,则会造成智能手机的闲置。同时,已有一些学者对于第二种方案进行了研究。然而,绝大多数方法只对于简单型任务进行了探究,并未深入探究复合型任务,这将不能代表所有的情况。极少数的对于简单型任务和复合型任务都进行了探究的方法中,并未对智能手机的计算能力进行衡量,也并未研究如何降低网络上的传输开销。
技术实现要素:
本发明所要解决的技术问题是针对移动云计算中任务卸载机制的不高效问题,提供了一种计算密集型任务向由计算机集群构成的云服务器中卸载的方法即一种计算密集型任务向云服务器中卸载的方法。为解决上述技术问题,本发明是采用如下技术方案实现的:所述的计算密集型任务向云服务器中卸载的方法的步骤如下:1)以任务图表示计算密集型任务中任务执行的先后顺序及任务间的关系:(1)构建表示计算密集型任务工作流程的任务图;(2)构建一般形式的任务图;2)一般形式的任务图中任务的卸载决策;3)复合型任务的卸载决策:(1)确定大计算量任务;(2)确定大计算量任务集合;(3)对大计算量任务集合的前序任务的判断:在一个复合型任务的任务图中,对于一个大计算量任务集合的前序任务f,当任务f的前序任务为它所在复合型任务中的第一个任务时,则对任务f进行如下判断:a.当此复合型任务依照步骤2)即“一般形式的任务图中任务的卸载决策”步骤,将该复合型任务卸载到云服务器中执行时,当任务f满足公式(3)时,将任务f卸载到云服务器中执行;反之,将任务f在智能手机中执行;pf+inf+outf-sf-Tcf>0(3)b.当此复合型任务依照步骤2)即“一般形式的任务图中任务的卸载决策”步骤,将该复合型任务在智能手机中执行时,当任务f满足公式(4)时,将任务f卸载到云服务器中执行;反之,将任务f在智能手机中执行;pf-inf+outf-sf-Tcf>0(4)4)最终的卸载决策;当网络状况不佳时,智能手机用户可以选择将全部任务在智能手机上执行;当网络状态良好时,智能手机用户可以选择开启智能手机中的卸载决策模块,将一部分任务卸载到云服务器上执行。技术方案中所述的最终的卸载决策是指:(1)当表示计算密集型任务工作流程的任务图为简单型任务和复合型任务的组合时,则按照步骤1)即“以任务图表示计算密集型任务中任务执行的先后顺序及任务间的关系”步骤、步骤2)即“一般形式的任务图中任务的卸载决策”步骤、步骤3)即“复合型任务的卸载决策”步骤与步骤4)即“最终的卸载决策”步骤的顺序进行任务的卸载决策;(2)当表示计算密集型任务工作流程的任务图仅仅包含一系列简单型任务时,则按照步骤1)即“以任务图表示密集型任务中任务执行的先后顺序及任务间的关系”步骤、步骤2)即“一般形式的任务图中任务的卸载决策”步骤与步骤4)即“最终的卸载决策”步骤的顺序进行任务的卸载决策;(3)当表示计算密集型任务工作流程的任务图仅仅包含一个复合型任务时,则按照步骤1)即“以任务图表示计算密集型任务中任务执行的先后顺序及任务间的关系”步骤、步骤3)即“复合型任务的卸载决策”步骤与步骤4)即“最终的卸载决策”步骤的顺序进行任务的卸载决策;在第三种情况中,由于表示计算密集型任务工作流程的任务图仅仅包含一个复合型任务,因此没有经过步骤2)即“一般形式的任务图中任务的卸载决策”步骤,即无法预先确定该复合型任务的任务图中的第一个任务和最后一个任务在智能手机上执行还是在云服务器上执行;此处采取的措施是,在经过步骤1)即“以任务图表示计算密集型任务中任务执行的先后顺序及任务间的关系”步骤后,分别假设该复合型任务的任务图中的第一个任务和最后一个任务在智能手机上执行、在云服务器上执行,再通过步骤3)即“复合型任务的卸载决策”步骤,获得两种情况下计算密集型任务执行的总时间,最终的卸载决策则选取计算密集型任务执行的总时间少的一种情况。技术方案中所述的以任务图表示计算密集型任务中任务执行的先后顺序及任务间的关系是指:1)任务图中的每一个节点表示一个任务,有向边表示任务间的先后执行顺序;在表示计算密集型任务工作流程的任务图中,某些时刻,仅有一个任务在单独执行,则将这些在某些时刻单独执行的任务定义为“简单型任务”;在表示计算密集型任务工作流程的任务图中,某些时刻,有多个任务同时在执行,则将每一时刻同时执行的所有的任务看作一个整体,将这个整体定义为“复合型任务”;2)任务图的定义:以一个有向无环图来描述一组相互关联的任务;其中,每一个节点表示一个任务,有向边表示任务间的先后执行顺序,则定义这个有向无环图为这一组任务的任务图;表示计算密集型任务工作流程的任务图的定义:以一个有向无环图来描述一个计算密集型任务中所包含的全部任务;以每一个节点表示此计算密集型任务中包含的每一个任务,以有向边表示此计算密集型任务中所包含的任务的先后执行顺序,则定义这个有向无环图为表示此计算密集型任务工作流程的任务图;3)所述的一般形式的任务图是线性的,该任务图是将各节点采用有向边有序地连接起来;一般形式的任务图的定义:在表示计算密集型任务工作流程的任务图中,每一个表示简单型任务的节点不变,而将每一个复合型任务以一个节点表示,仍以有向边表示任务间的先后执行顺序,得到一个线性任务图,则定义这个线性任务图为表示此计算密集型任务工作流程的任务图所对应的一般形式的任务图;4)复合型任务的任务图的定义:在表示计算密集型任务工作流程的任务图中,可能存在一个或多个代表此表示计算密集型任务工作流程的任务图中所包含的复合型任务的有向无环图,则定义这些代表复合型任务的有向无环图为此表示计算密集型任务工作流程的任务图所对应的复合型任务图。技术方案中所述的一般形式的任务图中任务的卸载决策步骤如下:1)在一般形式的任务图中,计算将第一个任务卸载到云服务器中执行较在智能手机上执行的节约的时间;按照公式(1)计算:E1=p1-s1-in1-out1-Tc1(1)式中:E1表示将任务1卸载到云服务器中执行较在智能手机上执行的节约的时间;p1表示将任务1在智能手机上执行的时间;s1表示将任务1在云服务器上执行的时间;in1表示将任务1卸载到云服务器中执行时,任务1的输入数据在智能手机和云服务器之间的无线网络上的传输时间;out1表示将任务1卸载到云服务器中执行时,任务1的输出数据由云服务器向智能手机传回时在无线网络上的传输时间;Tc1表示将任务1卸载到云服务器中执行时,计算密集型任务中任务1所对应的代码在无线网络上由智能手机传输到云服务器的时间;2)在一般形式的任务图中,将第二个任务和第二个任务后面的每一个任务按照顺序采用依次求出每个任务节约最大时间的方法,选取使得计算密集型任务执行的总时间最短的最优方案;共有F个任务,当任务2和任务i-1之间的所有任务都已经依照公式(2)决策完毕,并且在任务i前面,恰好有m个连续的任务在当前卸载队列中,则对于任务i的决策按照公式(2)执行;Ei={Ei-1+ini+pi-si-Tci,if(Ei-1+ini+pi-si)>(pi-si-ini)pi-si-ini-outi-Tci,if(Ei-1+ini+pi-si)<(pi-si-ini)---(2)]]>式中:Ei表示将任务i加入当前卸载队列或抛弃当前卸载队列并将任务i作为新的卸载队列的起始卸载点两种情况下,二者中节约的时间的较大值;Ei-1表示将任务i-1加入当前卸载队列或抛弃当前卸载队列两种情况下,二者中节约的时间的较大值;ini和outi分别表示任务i的输入数据和输出数据在智能手机和云服务器之间的无线网络上的传输时间;Tci表示将任务i卸载到云服务器中执行时,计算密集型任务中任务i所对应的代码在无线网络上由智能手机传输到云服务器的时间;Ei-1+ini+pi-si-Tci表示将任务i加入当前卸载队列中,节约的时间;pi-si-ini-outi-Tci表示抛弃当前卸载队列并将任务i作为新的卸载队列的起始卸载点节约的时间;(Ei-1+ini+pi-si)>(pi-si-ini)表示将任务i加入当前卸载队列节约的时间较将当前卸载队列抛弃,并将任务i作为新的卸载队列的起始卸载点节约的时间更多;(Ei-1+ini+pi-si)<(pi-si-ini)表表示将当前卸载队列抛弃,并将任务i作为新的卸载队列的起始卸载点节约的时间较将任务i加入当前卸载队列节约的时间更多;第二个任务和第二个任务后面的每一个任务全部按照公式(2)执行完毕后,每一个任务对应一个时间节约较大值Ei(1≤i≤F));3)在一般形式的任务图中确定最佳的卸载队列卸载起始点和卸载结束点。在F个时间节约较大值中Ei(1≤i≤F)中,将这F个值中最大的一个Ei值赋值为Emax;则一般形式任务图中任务的卸载决策为将Emax对应的卸载队列的卸载起始点和卸载结束点以及二者之间的所有任务卸载到云服务器中执行,其余的任务在智能手机中执行。技术方案中所述的确定大计算量任务是指:根据智能手机的计算能力,设定阈值W;对于复合型任务中的所有简单型任务,将在智能手机上执行时间大于W的任务命名为“大计算量任务”,其余任务命名为“非大计算量任务”;对于大计算量任务的卸载决策为:将这些任务卸载到云服务器中执行。技术方案中所述的确定大计算量任务集合是指:在每一个复合型任务的任务图中,当一个大计算量任务按照有向边的指向与另一个大计算量任务之间存在一个或多个非大计算量任务时,则将大计算量任务与这些按照有向边的指向与另一个大计算量任务之间的非大计算量任务一同命名为“大计算量任务集合”。技术方案中所述的对大计算量任务集合的前序任务的判断还包括:1)前序任务定义:在一个任务图中,如果一条有向边从任务p出发指向任务q,那么定义任务p为任务q的前序任务;2)大计算量任务集合的前序任务的定义:在一个复合型任务的任务图中,如果有一条有向边从一个不包含在计算密集型任务集合内的任务f出发,指向大计算量任务集合中的任何一个任务,那么定义任务f为该大计算量任务集合的前序任务。与现有技术相比本发明的有益效果是:1.本发明所述的计算密集型任务向云服务器中卸载的方法是在程序开发人员将计算密集型任务依据工作流程,分割为多项服务,每一项服务对应一个独立的任务的基础上,依照任务执行的先后顺序,构造表示计算密集型任务工作流程的一般形式的任务图。2.本发明所述的计算密集型任务向云服务器中卸载的方法对于任务的表示是从一般形式的任务图出发,对于简单型任务和复合型任务都进行了探究,能够代表问题的一般性。3.本发明所述的计算密集型任务向云服务器中卸载的方法针对一般形式的任务图,采用依次求出每个任务节约最大时间的方法寻求最优卸载方案,能够提高方法的精度。4.本发明所述的计算密集型任务向云服务器中卸载的方法针对复合型任务中的简单型任务,根据智能手机的计算能力,设定了“大计算量任务”的阈值,能够充分利用云服务器强大的计算能力完成计算量较大的任务的执行,又能够在减轻移动设备负担的基础上使其根据自身能力执行一些计算量较小的任务。5.本发明所述的计算密集型任务向云服务器中卸载的方法针对复合型任务中的简单型任务,设定“大计算量任务”的阈值,并将“大计算量任务集合”卸载到云服务器上执行。6.本发明所述的计算密集型任务向云服务器中卸载的方法在对复合型任务的判断中,对“大计算量任务集合”的前序任务进行判断,可以减小任务在智能手机和云服务器之间总的传输时间。附图说明下面结合附图对本发明作进一步的说明:图1是本发明所述的计算密集型任务向云服务器中卸载的方法的应用场景图,该图是已有专家设计的智能手机内的任务卸载模块与云服务器之间联系的模块架构图,本发明所述的计算密集型任务向云服务器中卸载的方法应用于该图中的卸载决策模块中;图2是本发明所述的计算密集型任务向云服务器中卸载的方法的由四个步骤组成的流程框图;图3是本发明所述的计算密集型任务向云服务器中卸载的方法依照一个计算密集型任务中任务执行的先后顺序及任务间的关系构建的表示计算密集型任务工作流程的任务图;图4是本发明所述的计算密集型任务向云服务器中卸载的方法依照一个计算密集型任务中任务执行的先后顺序及任务间的关系构建的表示计算密集型任务工作流程的任务图所对应的一般形式的任务图;图5-a为图3中的第一个复合型任务的任务图;图5-b为图3中的第二个复合型任务的任务图;图6是本发明所述的计算密集型任务向云服务器中卸载的方法中一般形式的任务图中任务卸载过程示意图;图7是本发明所述的计算密集型任务向云服务器中卸载的方法中智能手机上一个脸部识别应用程序的工作流程图,该流程图中的任务可以通过本发明所述的计算密集型任务向云服务器中卸载的方法卸载到云服务器上执行;图8是本发明所述的计算密集型任务向云服务器中卸载的方法中智能手机上一个脸部识别应用程序的工作流程图所构建的表示计算密集型任务工作流程的任务图;图9是本发明所述的计算密集型任务向云服务器中卸载的方法中在智能手机上一个脸部识别应用程序的表示计算密集型任务工作流程的任务图基础上所构建的一般形式的任务图;图10是本发明所述的计算密集型任务向云服务器中卸载的方法中智能手机上一个脸部识别应用程序的表示计算密集型任务工作流程的任务图基础上所构建的复合型任务图。具体实施方式下面结合附图对本发明作详细的描述:本发明中,要求程序开发者在开发应用程序的同时,对于计算速度固定的智能手机和计算速度固定的云服务器,将计算密集型任务在它们之上进行测试,并给出计算密集型任务中所包含的每一个任务在该固定速度的智能手机和云服务器上的执行时间。同时,程序开发者给出每一个任务所对应的代码量的大小和在特定输入下,任意两个有数据交换的任务之间传递的数据量的大小。本发明中,在程序开发者给出上述参数的前提下,当用户使用相同计算速度的智能手机时,手机的网络带宽监测模块监测网速,智能手机中的卸载决策模块做出卸载决策,将一部分任务卸载到云服务器中执行,另一部分在智能手机中执行。参阅图2,计算密集型任务向云服务器中卸载的方法包括如下步骤:1.以任务图表示计算密集型任务中任务执行的先后顺序及任务间的关系1)构建表示计算密集型任务工作流程的任务图参阅图3,对于一个给定的计算密集型任务,在程序开发人员将其依据工作流程分割为多个独立的任务的基础上,以每一个节点表示一个任务,以有向边表示任务间的先后执行顺序,依照计算密集型任务中任务执行的先后顺序及任务间的关系构建表示计算密集型任务工作流程的任务图。其中:任务图的定义:以一个有向无环图来描述一组相互关联的任务。其中,每一个节点表示一个任务,有向边表示任务间的先后执行顺序。则定义这个有向无环图为这一组任务的任务图。表示计算密集型任务工作流程的任务图的定义:以一个有向无环图来描述一个计算密集型任务中所包含的全部任务。以每一个节点表示此计算密集型任务中包含的每一个任务,以有向边表示此计算密集型任务中所包含的任务的先后执行顺序。则定义这个有向无环图为表示此计算密集型任务工作流程的任务图。2)构建一般形式的任务图在表示计算密集型任务工作流程的任务图中,将每一个简单型任务以一个节点表示,将每一个复合型任务也以一个节点表示,以有向边表示任务间的先后执行顺序,构建一般形式的任务图。其中:简单型任务的定义:在表示计算密集型任务工作流程的任务图中,某些时刻,仅有一个任务在单独执行。则将这些在某些时刻单独执行的任务定义为“简单型任务”。复合型任务的定义:在表示计算密集型任务工作流程的任务图中,某些时刻,有多个任务同时在执行。则将每一时刻同时执行的所有的任务看作一个整体,将这个整体定义为“复合型任务”。参阅图4,图中是图3所对应的一般形式的任务图,该任务图是线性的。该任务图是将图3中的每一个复合型任务都以一个节点表示得到的。其中:一般形式的任务图的定义:在表示计算密集型任务工作流程的任务图中,每一个表示简单型任务的节点不变,而将每一个复合型任务以一个节点表示,仍以有向边表示任务间的先后执行顺序,得到一个线性任务图。则定义这个线性任务图为此表示计算密集型任务工作流程的任务图所对应的一般形式的任务图。参阅图5,图中是图3所包含的两个复合型任务的任务图,即图3中所包含的两个复合型任务。其中,图5-a为图3中的第一个复合型任务的任务图;图5-b为图3中的第二个复合型任务的任务图。其中:复合型任务的任务图的定义:在表示计算密集型任务工作流程的任务图中,可能存在一个或多个代表此表示计算密集型任务工作流程的任务图中所包含的复合型任务的有向无环图。则定义这些代表复合型任务的有向无环图为此表示计算密集型任务工作流程的任务图所对应的复合型任务图。2.一般形式的任务图中任务的卸载决策1)在一般形式的任务图中,计算将第一个任务卸载到云服务器中执行较在智能手机上执行的节约的时间。按照公式(1)计算:E1=p1-s1-in1-out1-Tc1(1)式中:E1表示将任务1卸载到云服务器中执行较在智能手机上执行的节约的时间;p1表示将任务1在智能手机上执行的时间;s1表示将任务1在云服务器上执行的时间;in1表示将任务1卸载到云服务器中执行时,任务1的输入数据在智能手机和云服务器之间的无线网络上的传输时间;out1表示将任务1卸载到云服务器中执行时,任务1的输出数据由云服务器向智能手机传回时在无线网络上的传输时间;Tc1表示将任务1卸载到云服务器中执行时,计算密集型任务中任务1所对应的代码在无线网络上由智能手机传输到云服务器的时间。2)在一般形式的任务图中,将第二个任务和第二个任务后面的每一个任务按照顺序采用依次求出每个任务节约最大时间的方法,选取使得计算密集型任务执行的总时间最短的最优方案。在图6所示的一般形式的任务图中,共有F个任务,当任务2和任务i-1之间的所有任务都已经依照公式(2)决策完毕,并且在任务i前面,恰好有m个连续的任务在当前卸载队列中,则对于任务i的决策按照公式(2)执行。Ei={Ei-1+ini+pi-si-Tci,if(Ei-1+ini+pi-si)>(pi-si-ini)pi-si-ini-outi-Tci,if(Ei-1+ini+pi-si)<(pi-si-ini)---(2)]]>式中:Ei表示将任务i加入当前卸载队列或抛弃当前卸载队列并将任务i作为新的卸载队列的起始卸载点两种情况下,二者中节约的时间的较大值;Ei-1表示将任务i-1加入当前卸载队列或抛弃当前卸载队列两种情况下,二者中节约的时间的较大值;ini和outi分别表示任务i的输入数据和输出数据在智能手机和云服务器之间的无线网络上的传输时间;Tci表示将任务i卸载到云服务器中执行时,计算密集型任务中任务i所对应的代码在无线网络上由智能手机传输到云服务器的时间;Ei-1+ini+pi-si-Tci表示将任务i加入当前卸载队列中,节约的时间;pi-si-ini-outi-Tci表示抛弃当前卸载队列并将任务i作为新的卸载队列的起始卸载点节约的时间;(Ei-1+ini+pi-si)>(pi-si-ini)表示将任务i加入当前卸载队列节约的时间较将当前卸载队列抛弃,并将任务i作为新的卸载队列的起始卸载点节约的时间更多;(Ei-1+ini+pi-si)<(pi-si-ini)表示将当前卸载队列抛弃,并将任务i作为新的卸载队列的起始卸载点节约的时间较将任务i加入当前卸载队列节约的时间更多。将图6中的第二个任务和第二个任务后面的每一个任务全部按照公式(2)执行完毕后,每一个任务对应一个时间节约较大值Ei(1≤i≤F)。3)在一般形式的任务图中确定最佳的卸载队列卸载起始点和卸载结束点。在F个时间节约较大值中Ei(1≤i≤F)中,将这F个值中最大的一个Ei值赋值为Emax。则一般形式任务图中任务的卸载决策为将Emax对应的卸载队列的卸载起始点和卸载结束点以及二者之间的所有任务卸载到云服务器中执行,其余的任务在智能手机中执行。需要说明的是,对于所有的复合型任务,依照卸载决策将该任务卸载到云服务器中执行的含义是将该复合型任务中的第一个任务和最后一个任务卸载到云服务器中执行,该复合型任务中其余的任务则要通过步骤3即“复合型任务的卸载决策”步骤进行判断;对于所有的复合型任务,依照卸载决策将该任务在智能手机中执行的含义是将该复合型任务中的第一个任务和最后一个任务在智能手机中执行,该复合型任务中其余的任务则要通过步骤3即“复合型任务的卸载决策”步骤进行判断。3.复合型任务的卸载决策对复合型任务中所包含的每一个简单型任务进行卸载决策。1)确定大计算量任务根据智能手机的计算能力,设定阈值W。对于复合型任务中的所有简单型任务,将在智能手机上执行时间大于W的任务命名为“大计算量任务”,其余任务命名为“非大计算量任务”。对于大计算量任务的卸载决策为:将这些任务卸载到云服务器中执行。2)确定大计算量任务集合在每一个复合型任务的任务图中,当一个大计算量任务按照有向边的指向与另一个大计算量任务之间存在一个或多个非大计算量任务时,则将大计算量任务与这些按照有向边的指向与另一个大计算量任务之间的非大计算量任务一同命名为“大计算量任务集合”。3)对大计算量任务集合的前序任务的判断前序任务定义:在一个任务图中,如果一条有向边从任务p出发指向任务q,那么定义任务p为任务q的前序任务。大计算量任务集合的前序任务的定义:在一个复合型任务的任务图中,如果有一条有向边从一个不包含在大计算量任务集合内的任务f出发,指向大计算量任务集合中的任何一个任务,那么定义任务f为该大计算量任务集合的前序任务。在一个复合型任务的任务图中,对于一个大计算量任务集合的前序任务f,当任务f的前序任务为它所在复合型任务中的第一个任务时,则对任务f进行如下判断:(1)当此复合型任务依照步骤2即“一般形式的任务图中任务的卸载决策”步骤,将该复合型任务卸载到云服务器中执行时,当任务f满足公式(3)时,将任务f卸载到云服务器中执行;反之,将任务f在智能手机中执行。pf+inf+outf-sf-Tcf>0(3)(2)当此复合型任务依照步骤2即“一般形式的任务图中任务的卸载决策”步骤,将该复合型任务在智能手机中执行时,当任务f满足公式(4)时,将任务f卸载到云服务器中执行;反之,将任务f在智能手机中执行。pf-inf+outf-sf-Tcf>0(4)4.最终的卸载决策当网络状况不佳时,智能手机用户可以选择将全部任务在智能手机上执行。当网络状态良好时,智能手机用户可以选择开启智能手机中的卸载决策模块,将一部分任务卸载到云服务器上执行。参阅图3,图中所示表示计算密集型任务工作流程的任务图是简单型任务和复合型任务的组合,代表了一个计算密集型任务最复杂的情况。实际上,由于各种计算密集型任务的不同,根据程序开发人员分割后的计算密集型任务而构建的表示计算密集型任务工作流程的任务图可能是如下三种情况:参阅图3,表示计算密集型任务工作流程的任务图为简单型任务和复合型任务的组合;参阅图4,表示计算密集型任务工作流程的任务图仅仅包含一系列简单型任务;参阅图5-a或图5-b,表示计算密集型任务工作流程的任务图仅仅包含一个复合型任务。1)当表示计算密集型任务工作流程的任务图为简单型任务和复合型任务的组合时,则按照步骤1即“以任务图表示计算密集型任务中任务执行的先后顺序及任务间的关系”步骤、步骤2即“一般形式的任务图中任务的卸载决策”步骤、步骤3即“复合型任务的卸载决策”步骤、步骤4即“最终的卸载决策”步骤的顺序进行任务的卸载决策。2)当表示计算密集型任务工作流程的任务图仅仅包含一系列简单型任务时,则按照步骤1即“以任务图表示计算密集型任务中任务执行的先后顺序及任务间的关系”步骤、步骤2即“一般形式的任务图中任务的卸载决策”步骤与步骤4即“最终的卸载决策”步骤的顺序进行任务的卸载决策。3)当表示计算密集型任务工作流程的任务图仅仅包含一个复合型任务时,则按照步骤1即“以任务图表示计算密集型任务中任务执行的先后顺序及任务间的关系”步骤、步骤3即“复合型任务的卸载决策”步骤、步骤4即“最终的卸载决策”步骤的顺序进行任务的卸载决策。在第三种情况中,需要说明的是,由于表示计算密集型任务工作流程的任务图仅仅包含一个复合型任务,因此没有经过步骤2即“一般形式的任务图中任务的卸载决策”步骤,即无法预先确定该复合型任务的任务图中的第一个任务和最后一个任务在智能手机上执行还是在云上执行。此处采取的措施是,在经过步骤1即“以任务图表示计算密集型任务中任务执行的先后顺序及任务间的关系”步骤后,分别假设该复合型任务的任务图中的第一个任务和最后一个任务在智能手机上执行、在云服务器上执行,再通过步骤3即“复合型任务的卸载决策”步骤,获得两种情况下计算密集型任务执行的总时间,最终的卸载决策则选取计算密集型任务执行的总时间较少的一种情况。实施例下面结合一个具体的实施例的两种不同情形对本发明提出的一种计算密集型任务向云服务器中卸载的方法做进一步的说明:情形一:1.以任务图表示计算密集型任务中任务执行的先后顺序及任务间的关系1)构建表示计算密集型任务工作流程的任务图参阅图7,脸部识别应用程序可看做一个计算密集型任务,其工作流程中的“人脸图像采集”、“窗体显示”两个任务是固定在智能手机完成的,而工作流程中的其余任务既可以在云服务器上执行,又可以在智能手机上执行。将该计算密集型任务工作流程除“人脸图像采集”、“窗体显示”两个任务外的其余任务构建表示计算密集型任务工作流程的任务图,参阅图8,图中的每一个节点表示一个任务,有向边表示任务间的先后执行顺序,每一个节点上的数字表示任务的序号。2)构建一般形式的任务图参阅图8,任务1、任务2、任务4在执行时,仅有它们单独的一个任务在执行,即任务1、任务2、任务4为简单型任务;任务3.1、任务3.2、任务3.3、任务3.4、任务3.5、任务3.6、任务3.7、任务3.8、任务3.9均为简单型任务,但是它们在执行的过程中存在同时执行的情况,将任务3.1、任务3.2、任务3.3、任务3.4、任务3.5、任务3.6、任务3.7、任务3.8、任务3.9看作一个整体,以任务3表示,即任务3为复合型任务。参阅图9,图9是图8所示表示计算密集型任务工作流程的任务图对应的一般形式的任务图,该任务图是线性的。该任务图是将图8中的每一个复合型任务以一个节点表示得到的。参阅图10,图中是图8所示表示计算密集型任务工作流程的任务图中包含的复合型任务的任务图。在选定的智能手机和云服务器下,当脸部识别应用程序的输入为一张42KB的图片时,实际测得的每个简单型任务分别在智能手机和云服务器的执行时间如表1所示;实际测得的每个简单型任务所对应的代码量的大小如表2所示;实际测得的每两个任务之间传递的数据量的大小如表3所示;实际测得的复合型任务3在智能手机和云服务器的执行时间分别为4530ms,1840ms;实际测得的复合型任务3所对应的代码量的大小为780KB。表1执行时间(ms)任务1任务2任务3.1任务3.2任务3.3任务3.4手机3403708905204701980云90150210240130410执行时间(ms)任务3.5任务3.6任务3.7任务3.8任务3.9任务4手机75069015801680710440云180110390430220190表2表32.一般形式任务图中任务的卸载决策参阅图9,由简单型任务2向复合型任务3传输的数据量即为图8中简单型任务2向简单型任务3.1传输的数据量,即为23KB;由复合任务3向简单型任务4传输的数据量即为图8中简单型任务3.9向简单型任务4传输的数据量,即为39KB。当智能手机和云服务器之间的无线网络速度一定时,两个任务之间的数据在智能手机和云服务器之间的无线网络传输的时间可以通过传输的数据量和无线网络的速度做除法得到;每个任务的代码由智能手机传输到云服务器的时间可以通过这个任务的代码量和无线网络的速度做除法得到。在本次实验中,设定智能手机和云服务器之间的无线网络速度为100kb/s。1)在图9所示一般形式的任务图中,按照公式(1)计算将任务1卸载到云服务器中执行较在智能手机上执行的节约的时间。E1=P1-s1-in1-out1-Tc1(1)2)在图9所示一般形式的任务图中,对任务2、任务3、任务4按照顺序采用依次求出每个任务节约最大时间的方法,分别利用公式(2)选取使得计算密集型任务执行的总时间最短的最优方案。Ei=Ei-1+ini+pi-si-Tci,if(Ei-1+ini+pi-si)>(pi-si-ini)pi-si-ini-outi-Tci,if(Ei-1+ini+pi-si)<(pi-si-ini)---(2)]]>根据公式(2)依次判断将任务2、任务3、任务4中的每一个任务加入当前卸载队列中或当前卸载队列抛弃,并将该任务作为新的卸载队列的起始卸载点两种情况下哪种情况节约的时间更多,并按照节约时间更多的情况选择将每一个任务加入当前卸载队列中或当前卸载队列抛弃,并将该任务作为新的卸载队列的起始卸载点,求出每一个任务对应的时间节约较大值Ei。3)在图9所示一般形式的任务图中,确定最佳的卸载队列卸载起始点和卸载结束点。将E1、E2、E3、E4中的最大值赋值为Emax。将Emax对应的卸载队列的卸载开始点和卸载结束点以及二者之间的所有任务卸载到云服务器中执行,其余的任务在智能手机中执行。在本次实验中,根据上述方法,图9所示一般形式的任务图的卸载决策结果为:将任务1卸载到云服务器上执行,将任务2、任务3、任务4在智能手机上执行。需要说明的是,对于复合型任务3,依照上述卸载决策结果为将该任务在智能手机中执行,其含义是将复合型任务3中的第一个任务(任务3.1)和最后一个任务(任务3.9)在智能手机中执行,该复合型任务中其余的任务(任务3.2、任务3.3、任务3.4、任务3.5、任务3.6、任务3.7、任务3.8)卸载与否,则要通过步骤3即“复合型任务的卸载决策”步骤进行判断。综上所述,在步骤2即“一般形式任务图中任务的卸载决策”步骤的结果为:将任务1卸载到云服务器中执行,将任务2、任务3.1、任务3.9、任务4在智能手机上执行,而任务3.2、任务3.3、任务3.4、任务3.5、任务3.6、任务3.7、任务3.8卸载与否,则要通过步骤3即“复合型任务的卸载决策”步骤进行判断。3.复合型任务的卸载决策参阅图10,对复合型任务3中的每一个简单型任务进行卸载决策,即对图10中的任务3.2、任务3.3、任务3.4、任务3.5、任务3.6、任务3.7、任务3.8做出卸载决策。1)确定大计算量任务本次实验中设定阈值W=1000ms。则在复合型任务3中,任务3.4、任务3.7、任务3.8为“大计算量任务”,其余任务命为“非大计算量任务”。对于大计算量任务(任务3.4、任务3.7、任务3.8)的卸载决策为:将这些任务卸载到云服务器中执行。2)确定大计算量任务集合在图10中,大计算量任务3.4按照有向边的指向,与大计算量任务3.7之间存在一个非大计算量任务3.5,计算密集型任务3.4按照有向边的指向,与计算密集型任务3.8之间存在一个非大计算量任务3.6,则“大计算量任务集合”为任务3.4、任务3.5、任务3.6、任务3.7、任务3.8。3)对大计算量任务集合的前序任务的判断根据大计算量任务集合的前序任务的定义,任务3.2、任务3.3均为该大计算量任务集合的前序任务。而任务3.2的前序任务为任务3.1,任务3.1为它所在复合型任务3中的第一个任务;任务3.3的前序任务为任务3.1,任务3.1为它所在复合型任务3中的第一个任务。因此,对任务3.2、任务3.3进行如下判断:由于在步骤2即“一般形式任务图中任务的卸载决策”步骤中,复合型任务3已被判定为在智能手机中执行(含义是任务3.1和任务3.9在智能手机中执行),判断任务3.2和任务3.3是否满足公式(4)pf-inf+outf-sf-Tcf>0(4)其结果是任务3.2满足公式(4),任务3.3不满足公式(4),因此将任务3.2卸载到云服务器中执行,将任务3.3在智能手机中执行。综上所述,在步骤3即“复合型任务的卸载决策”步骤的结果为:将任务3.2、任务3.4、任务3.5、任务3.6、任务3.7、任务3.8卸载到云服务器中执行,而任务3.3在智能手机中执行。4.最终的卸载决策当网络状况不佳时,智能手机用户可以选择将全部任务在智能手机上执行。当网络状态良好时,智能手机用户可以选择开启智能手机中的卸载决策模块,将一部分任务卸载到云服务器上执行。综合步骤1即“以任务图表示计算密集型任务中任务执行的先后顺序及任务间的关系”步骤、步骤2即“一般形式任务图中任务的卸载决策”步骤、步骤3即“复合型任务的卸载决策”步骤,做出最终的卸载决策。综合步骤2即“一般形式任务图中任务的卸载决策”步骤、步骤3即“复合型任务的卸载决策”步骤的结果,最终对于任务图(图8)的卸载决策结果为:将任务1、任务3.2、任务3.4、任务3.5、任务3.6、任务3.7、任务3.8卸载到云服务器中执行,而任务2、任务3.1、任务3.3、任务3.9、任务4在智能手机中执行。即,对于本实验中的脸部应用程序工作流程中,将“脸部登记”、“脸部图像预处理”、“脸部图像特征提取”、“人脸库比对”、“脸部识别”、“表情库比对”、“表情识别”这些项服务卸载到云服务器中执行,而“脸部区域检测”、“脸部分割”、“脸部跟踪、帧间差异”、“后处理”、“图像转换”这些项服务在智能手机中执行。表4为实施例中情形一的仿真结果。在仿真中,在智能手机和云服务器之间的无线网络速度为100kb/s时,针对智能手机上一个脸部识别应用程序,将本发明所述的计算密集型任务向云服务器中卸载的方法与将全部任务在智能手机上执行,计算密集型任务执行的总时间进行了对比。实验结果表明,本发明所述的计算密集型任务向云服务器中卸载的方法有效缩短了智能手机上应用程序执行完成的总时间。表4情形二:1.以任务图表示计算密集型任务中任务执行的先后顺序及任务间的关系此步骤中与情形一中的过程和实验数据完全相同。2.一般形式任务图中任务的卸载决策在本次实验中,与情形一不同的是,设定智能手机和云服务器之间的无线网络速度为150kb/s。而其他实验数据与情形一的设置完全相同。1)在图9所示一般形式的任务图中,按照公式(1)计算将任务1卸载到云服务器中执行较在智能手机上执行的节约的时间。E1=p1-s1-in1-out1-Tc1(1)2)在图9所示一般形式的任务图中,对任务2、任务3、任务4按照顺序采用依次求出每个任务节约最大时间的方法,分别利用公式(2)选取使得计算密集型任务执行的总时间最短的最优方案。Ei=Ei-1+ini+pi-si-Tci,if(Ei-1+ini+pi-si)>(pi-si-ini)pi-si-ini-outi-Tci,if(Ei-1+ini+pi-si)<(pi-si-ini)---(2)]]>根据公式(2)依次判断将任务2、任务3、任务4中的每一个任务加入当前卸载队列中或当前卸载队列抛弃,并将该任务作为新的卸载队列的起始卸载点两种情况下那种情况节约的时间更多,并按照节约时间更多的情况选择将每一个任务加入当前卸载队列中或当前卸载队列抛弃,并将该任务作为新的卸载队列的起始卸载点,求出每一个任务对应的时间节约较大值Ei。3)在图9所示一般形式的任务图中,确定最佳的卸载队列卸载起始点和卸载结束点。将E1、E2、E3、E4中的最大值赋值为Emax。将Emax对应的卸载队列的卸载开始点和卸载结束点以及二者之间的所有任务卸载到云服务器中执行,其余的任务在智能手机中执行。在本次实验中,根据上述方法选出的图9所示一般形式的任务图的卸载决策结果为:将任务1、任务2、任务3、任务4卸载到云服务器上执行。需要说明的是,对于复合型任务3,依照上述卸载决策结果为将该任务在云服务器中执行,其含义是将复合型任务3中的第一个任务(任务3.1)和最后一个任务(任务3.9)卸载到云服务器中执行,该复合型任务中其余的任务(任务3.2、任务3.3、任务3.4、任务3.5、任务3.6、任务3.7、任务3.8)卸载与否,则要通过步骤3即“复合型任务的卸载决策”步骤进行判断。综上所述,在步骤2即“一般形式任务图中任务的卸载决策”步骤结果为:将任务1、任务2、任务3.1、任务3.9、任务4卸载到云服务器中执行,而任务3.2、任务3.3、任务3.4、任务3.5、任务3.6、任务3.7、任务3.8卸载与否,则要通过步骤3即“复合型任务的卸载决策”步骤进行判断。3.复合型任务的卸载决策参阅图10,对复合型任务3中的每一个简单型任务进行卸载决策,即对图8中的任务3.2、任务3.3、任务3.4、任务3.5、任务3.6、任务3.7、任务3.8做出卸载决策。1)大计算量任务本次实验中设定阈值W=1000ms。则在复合型任务3中,任务3.4、任务3.7、任务3.8为“大计算量任务”,其余任务命为“非大计算量任务”。对于大计算量任务(任务3.4、任务3.7、任务3.8)的卸载决策为:将这些任务卸载到云服务器中执行。2)确定大计算量任务集合在复合型任务3的任务图中,大计算量任务3.4按照有向边的指向,与大计算量任务3.7之间存在一个非大计算量任务3.5,大计算量任务3.4按照有向边的指向,与大计算量任务3.8之间存在一个非大计算量任务3.6,则“大计算量任务集合”为任务3.4、任务3.5、任务3.6、任务3.7、任务3.8。3)对大计算量任务集合的前序任务的判断根据大计算量任务集合的前序任务的定义,任务3.2、任务3.3均为该大计算量任务集合的前序任务。而任务3.2的前序任务为任务3.1,任务3.1为它所在复合型任务3中的第一个任务;任务3.3的前序任务为任务3.1,任务3.1为它所在复合型任务3中的第一个任务。因此,对任务3.2、任务3.3进行如下判断:由于在步骤2即“一般形式任务图中任务的卸载决策”步骤中,复合型任务3已被判定为卸载到云服务器中执行(含义是任务3.1和任务3.9在云服务器中执行),判断任务3.2和任务3.3是否满足公式(3)pf+inf+outf-sf-Tcf>0(3)其结果是任务3.2满足公式(4),任务3.3不满足公式(4),因此将任务3.2卸载到云服务器中执行,将任务3.3在智能手机中执行。综上所述,在步骤3即“复合型任务的卸载决策”步骤的结果为:将任务3.2、任务3.4、任务3.5、任务3.6、任务3.7、任务3.8卸载到云服务器中执行,而任务3.3在智能手机中执行。4.最终的卸载决策当网络状况不佳时,智能手机用户可以选择将全部任务在智能手机上执行。当网络状态良好时,智能手机用户可以选择开启智能手机中的卸载决策模块,将一部分任务卸载到云服务器上执行。综合步骤1即“以任务图表示计算密集型任务中任务执行的先后顺序及任务间的关系”步骤、步骤2即“一般形式任务图中任务的卸载决策”步骤、步骤3即“复合型任务的卸载决策”步骤,做出最终的卸载决策。综合步骤2即“一般形式任务图中任务的卸载决策”步骤、步骤3即“复合型任务的卸载决策”步骤的结果,最终对于任务图(图8)的卸载决策结果为:将任务1、任务2、任务3.1、任务3.2、任务3.4、任务3.5、任务3.6、任务3.7、任务3.8、任务3.9、任务4卸载到云服务器中执行,而任务3.3在智能手机中执行。即,对于本实验中的脸部应用程序工作流程中,将“脸部登记”、“脸部区域监测”、“脸部分割”、“脸部图像预处理”‘、“脸部图像特征提取”、“人脸库比对”、“脸部识别”、“表情库比对”、“表情识别”、“后处理”、“图像转换”这些项服务卸载到云服务器中执行,而“脸部跟踪、帧间差异”、这项服务在智能手机中执行。表5为实施例中情形二的仿真结果。在仿真中,在智能手机和云服务器之间的无线网络速度为150kb/s时,针对智能手机上一个脸部识别应用程序,将本发明所述的计算密集型任务向云服务器中卸载的方法与将全部任务在智能手机上执行,应用程序执行的总时间进行了对比。实验结果表明,本发明所述的计算密集型任务向云服务器中卸载的方法有效缩短了智能手机上计算密集型任务执行完成的总时间。表5