主权项 |
一种移动云计算环境中能耗优化的合作任务迁移方法,在微云网络中部署微云控制器,微云控制器周期性收集网络内部各设备的运行信息,当网络内部的设备发起任务迁移请求时,控制器将周期性运行离线启发式算法,并根据离线启发式算法输出的任务决策向量进行任务迁移,其特征在于,所述离线启发式算法的输出结果为整个调度方案的能耗E,每个任务<img file="FDA0000891102810000011.GIF" wi="55" he="69" />调度的决策向量<img file="FDA0000891102810000012.GIF" wi="783" he="95" />其中<img file="FDA0000891102810000013.GIF" wi="64" he="71" />表示设备i上编号为h的任务,算法包括如下步骤:步骤一,对每个任务按照任务类型进行分类,相同任务类型T的任务属于同一任务集合Set(T),该任务类型需要执行的任务数为|Set(T)|,每个任务集合按照任务的请求时间由远到近进行排列,初始化每个任务的决策变量;步骤二,对于每种任务的首任务,求出每单位流量节省能耗<img file="FDA0000891102810000014.GIF" wi="446" he="151" />按照每单位流量节省能耗非减顺序进行排序,生成任务类型序列Seq,其中<img file="FDA0000891102810000015.GIF" wi="161" he="72" />为任务h在本地执行时的能耗,<img file="FDA0000891102810000016.GIF" wi="219" he="79" />为任务h迁移到云端执行时的能耗,<maths num="0001"><math><![CDATA[<mrow><msubsup><mi>ϵ</mi><mi>O</mi><mrow><mi>i</mi><mrow><mo>(</mo><mi>n</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow></mrow></msubsup><mrow><mo>(</mo><msubsup><mi>C</mi><mi>h</mi><mi>i</mi></msubsup><mo>)</mo></mrow><mo>=</mo><msubsup><mi>ρ</mi><mi>T</mi><mrow><mi>i</mi><mrow><mo>(</mo><mi>n</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow></mrow></msubsup><mo>·</mo><mfrac><msubsup><mi>D</mi><mi>h</mi><mrow><mi>i</mi><mi>n</mi></mrow></msubsup><msubsup><mi>φ</mi><mi>T</mi><mrow><mi>i</mi><mrow><mo>(</mo><mi>n</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow></mrow></msubsup></mfrac><mo>+</mo><msubsup><mi>ρ</mi><mi>T</mi><mrow><mi>i</mi><mrow><mo>(</mo><mi>n</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow></mrow></msubsup><mo>·</mo><mfrac><msubsup><mi>D</mi><mi>h</mi><mrow><mi>o</mi><mi>u</mi><mi>t</mi></mrow></msubsup><msubsup><mi>φ</mi><mi>T</mi><mrow><mo>(</mo><mi>n</mi><mo>+</mo><mn>1</mn><mo>)</mo><mi>i</mi></mrow></msubsup></mfrac><mo>,</mo></mrow>]]></math><img file="FDA0000891102810000017.GIF" wi="846" he="142" /></maths>n为网络中的设备个数,<img file="FDA0000891102810000018.GIF" wi="182" he="110" />为设备i传递到云端的无线传输功率,<img file="FDA0000891102810000019.GIF" wi="178" he="110" />为设备i与云端之间的传输速率,<img file="FDA00008911028100000110.GIF" wi="85" he="71" />为任务h迁移时传入的数据量,<img file="FDA00008911028100000111.GIF" wi="92" he="71" />为任务h迁移时输出的数据量,<img file="FDA00008911028100000112.GIF" wi="142" he="69" />为任务h迁移到云端执行时产生的流量,<maths num="0002"><math><![CDATA[<mrow><mi>D</mi><mrow><mo>(</mo><msubsup><mi>C</mi><mi>h</mi><mi>i</mi></msubsup><mo>)</mo></mrow><mo>=</mo><msub><mi>α</mi><mrow><mi>n</mi><mo>+</mo><mn>1</mn></mrow></msub><mrow><mo>(</mo><msubsup><mi>C</mi><mi>h</mi><mi>i</mi></msubsup><mo>)</mo></mrow><mo>·</mo><mrow><mo>(</mo><msubsup><mi>D</mi><mi>h</mi><mrow><mi>i</mi><mi>n</mi></mrow></msubsup><mo>+</mo><msubsup><mi>D</mi><mi>h</mi><mrow><mi>o</mi><mi>u</mi><mi>t</mi></mrow></msubsup><mo>)</mo></mrow><mo>,</mo></mrow>]]></math><img file="FDA00008911028100000113.GIF" wi="645" he="95" /></maths>其中<img file="FDA00008911028100000114.GIF" wi="198" he="94" />为决策变量;步骤三,在满足出口流量约束的条件下,依次将任务序列Seq中各任务类型的首任务迁移到云端;步骤四,对于每一种任务分类集合中的每一个任务安装时间先后进行检查:(1)如果任务类型T的首任务<img file="FDA00008911028100000210.GIF" wi="55" he="67" />未迁移至云端,对于Set(T)中的每一个任务h=1→|Set(T)|,h为任务编号,取值范围为1到任务集和的大小。选取迁移的服务器节点j满足<img file="FDA0000891102810000021.GIF" wi="574" he="93" />令<img file="FDA0000891102810000022.GIF" wi="246" he="77" />将能耗E更新为<maths num="0003"><math><![CDATA[<mrow><mi>E</mi><mo>+</mo><msubsup><mi>ϵ</mi><mi>O</mi><mrow><mi>i</mi><mi>j</mi></mrow></msubsup><mrow><mo>(</mo><msubsup><mi>C</mi><mi>h</mi><mi>i</mi></msubsup><mo>)</mo></mrow><mo>;</mo></mrow>]]></math><img file="FDA0000891102810000023.GIF" wi="268" he="71" /></maths>(2)如果该类型T的首任务C<sub>1</sub><sup>i</sup>已经迁移至云端:a)令决策向量中<img file="FDA0000891102810000024.GIF" wi="270" he="72" />将能耗E更新为<img file="FDA0000891102810000025.GIF" wi="270" he="79" />b)对于Set(T)中的其他任务,h=2→|Set(T)|,即编号为1的任务已经迁移至云端,对其他编号的任务进行后续处理,选取迁移的服务器节点j满足<maths num="0004"><math><![CDATA[<mrow><msubsup><mi>ϵ</mi><mi>O</mi><mrow><mi>i</mi><mi>j</mi></mrow></msubsup><mrow><mo>(</mo><msubsup><mi>C</mi><mi>h</mi><mi>i</mi></msubsup><mo>)</mo></mrow><mo>=</mo><msubsup><mi>min</mi><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow><mi>n</mi></msubsup><mrow><mo>(</mo><msubsup><mi>ϵ</mi><mi>O</mi><mrow><mi>i</mi><mi>k</mi></mrow></msubsup><mo>(</mo><msubsup><mi>C</mi><mi>h</mi><mi>i</mi></msubsup><mo>)</mo><mo>)</mo></mrow><mo>,</mo></mrow>]]></math><img file="FDA0000891102810000026.GIF" wi="573" he="93" /></maths>令<maths num="0005"><math><![CDATA[<mrow><msub><mi>α</mi><mi>j</mi></msub><mrow><mo>(</mo><msubsup><mi>C</mi><mi>h</mi><mi>i</mi></msubsup><mo>)</mo></mrow><mo>=</mo><mn>1</mn><mo>,</mo></mrow>]]></math><img file="FDA0000891102810000027.GIF" wi="246" he="79" /></maths>将能耗E更新为<maths num="0006"><math><![CDATA[<mrow><mi>E</mi><mo>+</mo><msubsup><mi>ϵ</mi><mi>O</mi><mrow><mi>i</mi><mi>j</mi></mrow></msubsup><mrow><mo>(</mo><msubsup><mi>C</mi><mi>h</mi><mi>i</mi></msubsup><mo>)</mo></mrow><mo>.</mo></mrow>]]></math><img file="FDA0000891102810000028.GIF" wi="302" he="71" /></maths> |