发明内容
本发明的目的就在于为了解决上述问题而提供了一种面向能耗的云工作流调度优化方法。
本发明通过以下技术方案来实现上述目的:面向能耗的云工作流调度优化方法,包括如下步骤:
步骤1:建立面向能耗的云工作流过程模型和资源模型,获得调度优化所需的信息。
云工作流过程模型定义为:Φ={T,E},T是云工作流过程模型中的任务t的集合,E是一个有向边即T中元素有序对的集合,E中的每个有向边被表示为e(ti,tj);在一个e(ti,tj)中,ti称为tj的前继任务,tj称为ti的后继任务,tj只有在其前继任务ti被执行完成后才能被资源执行;任务集T中的任务t被进一步描述为t=(id,length,IFL,OFL);t.id是任务t的编号或名称;t.length是任务t的执行长度,即任务t被计算资源即虚拟机处理时需要耗费的指令数量;t.IFL是处理任务t时需要的输入文件列表;t.OFL是任务t被处理后产生的输出文件列表。用file.size表示文件file的大小。
云工作流资源模型被定义为:cr=(H,VM);cr.H是云计算环境下主机h的集合;cr.VM是云计算环境下虚拟机vm的集合。
所述主机h被定义为:h=(id,ps,η,st);h.id是主机h的编号或名称;h.ps是主机h的计算能力;h.η是主机h的负载--功耗函数,根据《计算服务器功耗和性能特性的工业标准》提供的数据采用线性内插法来计算获得;h.st是主机h的当前状态,h.st=0表示当前主机h是空闲的,h.st=1表示当前主机h正在处理任务,在s时刻主机h的状态用h.st(s)表示。
所述虚拟机vm被定义为:vm=(id,hid,T,ps,bw,st);vm.id是虚拟机vm的编号或名称;vm.hid是虚拟机vm所在主机的编号或名称;vm.T是虚拟机vm可以处理的工作流任务集合;vm.ps是虚拟机vm的计算能力,由所在主机分配;vm.bw是虚拟机vm的带宽,由所在主机分配;vm.st是虚拟机vm的当前状态,vm.st=0表示当前虚拟机vm空闲,vm.st=1表示当前虚拟机vm正在处理任务,在s时刻虚拟机vm的状态用vm.st(s)表示;vm处于1状态时,其总是全力处理任务,其利用率为1,反之,vm处于0状态时,虚拟机不处理任务,其利用率为0。
步骤2:计算任务的优先级,即rank值
首先,计算处理任务ti时的平均执行时间需要从共享数据库获得输入数据/文件的平均传输时间及两个连续任务在虚拟机间的数据/文件平均传输时间
处理任务ti时的平均执行时间的计算方法如下:
其中:VMi={vm|ti∈vm.T}表示所有可以处理任务ti的虚拟机集合。
处理任务ti时需要从共享数据库获得输入数据/文件的平均传输时间的计算方法如下:
从任务ti到tj的数据/文件平均传输时间的计算方法如下:
其中:VMj={vm|tj∈vm.T}表示所有可以执行任务tj的虚拟机集合;
然后,计算每个任务的优先级,在工作流过程模型中对于没有后继任务的结束任务ti,其优先级为:
其它任务的优先级采用如下递归公式进行计算:
其中:succ(ti)={t|e(ti,t)∈E}是任务ti的后继任务集合;
步骤3:从任务集T中取出一个优先级最高的任务t,找出可以执行任务t的虚拟机集合VMt,计算把任务t分别分配给VMt中的每个虚拟机后完成包括t在内的所有已分配任务{t′1,L,t′m}将消耗的能耗
所述的计算方法如下:
其中:为任务t′1,L,t′m的完成时间,VMh={vm|vm.hid=h.id}是创建在主机h中的虚拟机集合。
步骤4:找出消耗能耗最小的vm,如果最小的只有一个,把t分配给此vm,如有多个最小的,则计算这些vm开始处理任务t时所在主机h的性能功率比ξh(s),其中s是虚拟机vm开始处理任务t的时刻,把t分配给能耗消耗最小当中其所在主机性能功耗比最高的;把任务t从任务集T中删除,若任务集T不为空则转到步骤3,否则转到步骤5;
所述虚拟机vm开始处理任务t时其所在主机h的性能功率比ξh(s)计算如下:
步骤5:输出工作流调度方案。
在步骤1中,若任务ti是任务tj的前继任务,那么任务ti执行后产生的输出文件中至少有一个是任务tj执行所需要的输入文件,即:ti.OFLI tj.IFL≠φ。
在步骤1中,所述主机状态为0的充要条件是:主机中的所有虚拟机都没有处理任务处于0状态,形式化表示为:主机状态为1的充要条件是:主机中有虚拟机在处理任务处于1状态,形式化表示为:
在步骤1中,所述任务执行长度与虚拟机的处理能力共同影响着虚拟机执行任务的时间。任务t在虚拟机vm上的执行时间为:
在步骤1中,所述文件大小与虚拟机带宽共同影响着文件在不同虚拟机或虚拟机与共享文件系统之间的传输时间。
文件在虚拟机vmi,vmj间传输文件file所需的时间为:
文件在虚拟机vmi与共享数据库间传输file所需的时间为:
本发明的有益效果在于:
(1)在云工作流资源模型中包含能耗因素的描述,建立了云工作流任务执行、虚拟机状态和主机负载之间的关系,根据《计算服务器功耗和性能特性的工业标准》(TheSPECpower benchmark)提供的数据采用线性内插法来计算建立了主机负载与功耗之间的关系,实现了基于负载的能耗计算方法。
(2)在任务优先级计算及任务选择时考虑了任务处理时文件在不同虚拟机间传输的速度差异、虚拟机与本地共享数据库间的文件传输等因素,更符合实际情况,在资源选择时,采用了能耗消耗最小的规则,在保持工作流执行时间效率的同时有效降低主机处理任务所消耗的能耗。
(3)从主机负载与功耗关系角度,进行能耗的计算与调度优化方法,不需要通过调整主机CPU的运行电压/频率、反复关闭/重启主机来实现能耗优化,不会影响主机的性能,也不会提升主机组件的磨损率,使用限制更少、范围更广。
具体实施方式
下面结合说明书附图及较佳实施例对本发明做进一步详细说明,但本发明并不仅限于以下的实施例。
图1为一个CyberShake工作流的过程逻辑结构图,由20个任务(task)组成,每个任务的执行长度以及处理所需要的输入文件和处理后的输出文件的名称以及其长度如表1所示。
数据中心设置有两台异构的物理主机,分别为ProLiant ML110G5(2cores×2660MHz,4GB)和ProLiant ML110G3(Historical)(2cores×3000MHz,4GB),各负载水平上的功耗如参数表2与表3所示。
有Large型、Medium型、以及Small型等三种不同类型的虚拟机作为计算资源的最小分配单位负责接收并处理工作流任务,其中:Large型虚拟机的处理能为2500MI/s,带宽为200Mbit/s;Medium型虚拟机的处理能力2000MI/s,带宽为150Mbit/s;Small型虚拟机的处理能力1500MI/s,带宽为100Mbit/s。
两台服务器中虚拟机(计算资源节点)配置方案如表4所示。
表1 CyberShake工作流中各任务的具体参数
表2 HP ProLiant ML110G5在各负载水平上的功耗参数
负载 |
0(空闲) |
10% |
20% |
30% |
40% |
50% |
60% |
70% |
80% |
90% |
100% |
平均有效功率(W) |
93.7 |
97 |
101 |
105 |
110 |
116 |
121 |
125 |
129 |
133 |
135 |
表3 HP ProLiant ML110G3(Historical)在各负载水平上的功耗参数
负载 |
0(空闲) |
10% |
20% |
30% |
40% |
50% |
60% |
70% |
80% |
90% |
100% |
平均有效功率(W) |
105 |
112 |
118 |
125 |
131 |
137 |
147 |
153 |
157 |
164 |
169 |
表4两台主机中的虚拟机配置方案
针对上述案例,一种面向能耗的云工作流调度优化方法,包括以下实施步骤:
执行步骤1:建立面向能耗的云工作流过程模型和资源模型,获得调度优化所需的信息。
过程模型中:T={t1,t2,L,t20},
t1.length=120000MI,t1.IFL={fd1,fd2,fd3},t1.OFL={f1-1,f1-2}
t2.length=126000MI,t2.IFL={fd4,fd5,fd6},t2.OFL={f2-1,f2-2}
t3.length=60000MI,t2.IFL={fd7,f1-1,f1-2},t2.OFL={f3-1}
……
t20.length=3000MI,t20.IFL={f11-1,f12-1,f13-1,f14-1,f15-1,f16-1,f17-1,f18-1},t20.OFL={f20-1}
fd1.size=900MB,fd2.size=900MB,fd3.size=135MB,f1-1.size=600MB,……,f20-1.size=40MB。
资源模型中:H={hHP3000,hHP2600},VM={vm1,vm2,vm3,vm4,vm5};
hHP3000.ps=3000×2=6000MI/s,hHP2660.ps=2660×2=5320MI/s;
根据表2和表3所提供的在各负载水平上的功耗参数,采用线性内插法可分别得到两种主机:hHP3000,hHP2660的负载--功耗函数。
vm1.hid=hHP3000,vm2.hid=hHP2660,vm3.hid=hHP3000,vm4.hid=hHP2660,vm5.hid=hHP3000。vm1.T={t1,t2,t3,t6,t7,t8,t12,t18},vm2.T={t1,t2,t3,t5,t13,t14,t15,t18,t19},vm3.T={t1,t2,t5,t6,t9,t11,t12,t14,t17,t18,t19},vm4.T={t1,t2,t4,t7,t10,t11,t13,t14,t16,t17,t20},vm5.T={t1,t4,t8,t9,t10,t12,t15,t16,t17,t20};
vm1.ps=1500MI/s,vm2.ps=2000MI/s,vm3.ps=2000MI/s,vm4.ps=2500MI/s,vm5.ps=2500MI/s;
vm1.bw=100Mbit/s,vm2.bw=150Mbit/s,vm3.bw=150Mbit/s,vm4.bw=200Mbit/s,vm5.bw=200Mbit/s。
执行步骤2:计算任务的优先级
计算任务ti(i=1,L 20)的平均执行时间
同理可得结果如表5所示。
表5各任务平均执行时间
计算从共享数据库获得文件的平均传输时间
同理可得结果如表6所示。
表6从共享数据库获得文件的平均传输时间
计算任务ti和间文件的平均传输时间:
同理可得其他任务间文件的平均传输时间,结果如表7所示。
表7任务间文件的平均传输时间
最后计算各任务的优先级:
同理可以获得其他任务的优先级,结果如表8所示。
表8各任务的优先级rank(ti)
任务 |
优先级 |
任务 |
优先级 |
任务 |
优先级 |
t1 |
284.77 |
t5 |
30.09 |
t13 |
6.09 |
t2 |
251.7 |
t10 |
24.6 |
t14 |
5.9 |
t3 |
55.17 |
t9 |
23.36 |
t17 |
5.46 |
t7 |
46.8 |
t12 |
7.886666667 |
t16 |
5.22 |
t8 |
35.72 |
t11 |
7.17 |
t19 |
1.65 |
t4 |
34.68666667 |
t18 |
7 |
t20 |
1.2 |
t6 |
34.1 |
t15 |
6.9 |
|
|
执行步骤3:从任务集T={t1,t2,L,t20}中的取出一个优先级最高的任务t1,找出可以执行任务t1的虚拟机集合VM1={vm1,vm2,vm3,vm4,vm5}。计算把任务t1分别分配给VM1中的每个虚拟机后完成包括t1在内的所有已分配任务{t1}将消耗的能耗若把t1分配给vm1,根据式(8),可得t1的执行时间根据式(10),可得vm1执行任务t1前获得所需文件的传输时间则任务t1完成时间为234.8,则(0-234.8)时间段内,hHP2660空闲,根据负载--功耗函数,可得主机hHP2660此时的平均有效功率为93.7W,而在hHP3000中只有vm1在运行,此时主机hHP3000的负载为0.25,根据负载--功耗函数,可得主机hHP3000此时的平均有效功率为121.5,根据式(6),可得整个云计算资源所消耗的能耗为234.8*93.7+234.8*121.5=50528.96。同理,计算若把t1分配给vm2,vm3,vm4,vm5后整个云计算资源所消耗的能耗分别为34891.66918,36018.24,27487.11429,28302.78。
执行步骤4:对于任务t1,经对比可以发现消耗能耗最小的虚拟机为vm4,因此把任务t1分配给vm4,t1的实际完成时间为125.4。把t1从任务集T中删除,更新任务集T,T={t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15,t16,t17,t18,t19,t20},由于任务集T非空,故转到步骤3。
执行步骤3:从当前任务集T={t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15,t16,t17,t18,t19,t20}中选择一个优先级最高的任务t2;当前可执行t2的虚拟机集合VM2={vm1,vm2,vm3,vm4},计算把t2分别分配给VM2中每个虚拟机后完成包括t2在内的所有已分配任务{t1,t2}将消耗的能耗若把t2分配给vm1,根据式(8),可得t2的执行时间根据式(10),可得vm1执行任务t2前获得所需文件的传输时间则任务t2的完成时间为213.6。对于hHP2660,在(0-125.4)时间段内,只有vm4运行,主机hHP2660的负载为0.469924812,根据负载--功耗函数,可知平均有效功率为114.1954887,在(125.4-213.6)时间段内,主机hHP2660处于空闲状态,根据负载--功耗函数,闲置状态对应的平均有效功率为93.7,则hHP2660主机的能耗为:125.4*114.1954887+(213.6-125.4)*93.7=22584.45429;对于hHP3000,在(0-213.6)时间段内,只有vm1运行,主机的负载为0.25,根据负载--功耗函数,平均有效功率为121.5,则hHP3000主机的能耗为:213.6*121.5=25952.4,根据式(6),可得整个云计算资源所消耗的能耗为22584.45429+25952.4=48536.85429。同理,计算把t2分配给vm2,vm3,vm4整个云计算资源所消耗的能耗分别为34704.78497,35542.71428,52738.43459。
执行步骤4:对于任务t2,经对比可以发现消耗能耗最小的虚拟机为vm2,则把任务t2分配给vm2,t2的完成时间为149.4,把t2从任务集T中删除,更新任务集T={t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15,t16,t17,t18,t19,t20},由于任务集T非空,故转到步骤3。
执行步骤3:从当前任务集T={t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15,t16,t17,t18,t19,t20}中选择一个优先级最高的任务t3;可执行t3的虚拟机集合VM3={vm1,vm2},计算把t3分别分配给VM3中每个虚拟机后完成包括t3在内的所有已分配任务{t1,t2,t3}将消耗的能耗若把t3分配给vm1,根据式(8),可得t3的执行时间根据式(9)和式(10)可得虚拟机vm1执行t3前获得所需文件的传输时间则任务t3的完成时间为125.4+40+104.4=269.8;对于hHP2660,在(0-125.4)时间段内vm2、vm4同时在运行,根据负载--功耗函数,主机的负载为0.84584662,平均有效功率为130.8345865,在(125.4-149.4)时间段内,只有vm2运行,根据负载--功耗函数,主机的负载为0.37593985,平均有效功率为108.7969925,在(149.4-269.8)时间段内,主机处于空闲状态,根据负载--功耗函数,闲置状态对应的平均有效功率为93.7W,则hHP2660主机的能耗为:125.4*130.8345865+(149.4-125.4)*108.7969925+(269.8-149.4)*93.7=30299.26497;对于hHP3000,在(0-125.4)时间段内,主机处于空闲状态,根据负载--功耗函数,闲置状态对应的平均有效功率为105,在(125.4-269.8)时间段内,只有vm1运行,根据负载--功耗函数,主机的负载为0.25,平均有效功率为121.5,则hHP3000主机的能耗为:125.4*105+(269.8-125.4)*121.5=30711.6,根据式(6),可得整个云计算资源所消耗的能耗为30299.26497+30711.6=61010.86497。同理,计算把t2分配给vm2,整个云计算资源所消耗的能耗为55998.96542。
执行步骤4:对于任务t3,经对比可以发现消耗能耗最小的虚拟机为vm2,则把任务t3分配给vm2,t3的完成时间为249,把t3从任务集T中删除,更新任务集T={t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15,t16,t17,t18,t19,t20},由于任务集T非空,故转到步骤3。
这样不断重复执行步骤3和步骤4直到完成优先级最低的任务t20的分配,得到所有任务的分配方案(整个任务分配的执行过程如下表9所示)。
表9整个任务分配的执行过程
执行步骤5:输出工作流调度(任务分配)方案,如表10所示。
表10工作流调度(任务分配)方案
任务调度顺序 |
任务ID |
任务开始时间 |
任务结束时间 |
任务处理时间 |
当前能耗 |
虚拟机 |
1 |
t1 |
0 |
125.4 |
125.4 |
27487.11429 |
vm4 |
2 |
t2 |
0 |
149.4 |
149.4 |
34704.78497 |
vm2 |
3 |
t3 |
149.4 |
249 |
99.6 |
55998.96542 |
vm2 |
4 |
t7 |
149.4 |
222.6 |
73.2 |
57612.1173 |
vm4 |
5 |
t8 |
149.4 |
216.6 |
67.2 |
59426.5173 |
vm5 |
6 |
t4 |
222.6 |
244.8 |
22.2 |
59915.75189 |
vm4 |
7 |
t6 |
125.4 |
208.6 |
83.2 |
61805.35189 |
vm3 |
8 |
t5 |
208.6 |
293 |
84.4 |
72412.95189 |
vm3 |
9 |
t10 |
216.6 |
276.6 |
60 |
74092.95189 |
vm5 |
10 |
t9 |
276.6 |
337.8 |
61.2 |
84663.51189 |
vm5 |
11 |
t12 |
244.8 |
257.6 |
12.8 |
84842.71189 |
vm1 |
12 |
t11 |
249 |
257.64 |
8.64 |
85019.79291 |
vm4 |
13 |
t18 |
276.6 |
284.1 |
7.5 |
85133.02035 |
vm2 |
14 |
t15 |
284.1 |
293.4 |
9.3 |
85273.42238 |
vm2 |
15 |
t13 |
293.4 |
301.8 |
8.4 |
85400.23712 |
vm2 |
16 |
t14 |
293 |
296 |
3 |
85469.23712 |
vm3 |
17 |
t17 |
337.8 |
340.44 |
2.64 |
86065.08512 |
vm5 |
18 |
t16 |
257.64 |
264.36 |
6.72 |
86202.81481 |
vm4 |
19 |
t19 |
337.8 |
368.25 |
30.45 |
92401.20181 |
vm3 |
20 |
t20 |
340.44 |
356.64 |
16.2 |
92733.22872 |
vm4 |
上述实施例只是本发明的较佳实施例,并不是对本发明技术方案的限制,只要是不经过创造性劳动即可在上述实施例的基础上实现的技术方案,均应视为落入本发明专利的权利保护范围内。