一种云数据中心的节能任务分配方法
技术领域
本发明属于云数据中心节能领域,特别是涉及一种云数据中心的节能任务分配方法。
背景技术
云计算已成为当前信息技术业务的主要范例,它提供一个通过互联网管理的全球计算服务平台,帮助企业在没有前期计算设备投资的情况下按需使用计算服务。云计算的应用为用户提供可靠的各种资源服务,它是一种一切皆为服务的模式,为用户提高质量的服务。另外,云计算与互联网+的结合和云计算与大数据之间的应用,使云计算得到新的发展和应用。现阶段,由于得到相关技术标准和各个服务层协议的支撑,一些云计算产品的推出和应用,为客户提供高品质的服务体验,因此云计算具有广阔的发展前景。
任务分配问题是完成特定状态下任务队列和服务器队列的最佳匹配映射。任务调度算法研究的是如何将任务集合分配到合适的服务器资源上,并决定在各服务器资源上每个任务的执行顺序。其中,既需要考虑任务之间的依赖关系,因为这涉及了任务间的信息传递约束关系,又需要考虑整个任务调度后所产生的延时、能耗等性能指标。对于一般的任务图,它的最优任务调度问题是一个NP-完全问题。
大型虚拟化数据中心需要满足日益增长的计算、存储和网络需求,国内外的很多云计算服务提供商已经开始建立越来越多且需要大量能耗的数据中心,以满足不断增长的用户资源需求。无论是服务器、网络设备,还是制冷、用电设备,其用电量都会对各个数据中心的电能消耗带来影响。降低服务器能耗,提高能源利用率是改善数据中心能耗的主要方式。数据中心节能问题已经刻不容缓,即使在百分比上稍有改善,也将产生巨大的经济和环境效益。
针对以上情况,本文将在任务分配和服务器节点管理两个方面来联合对数据中心能耗优化,最大限度地降低数据中心能耗。
发明内容
本发明旨在解决现有技术中的问题。提出了一种云数据中心的节能任务分配方法。本发明的技术方案如下:
一种云数据中心的节能任务分配方法,其包括以下步骤:
S1,在云计算中,用户提出任务请求,获取任务数据集,把n个任务分配到m个服务器节点上运行,其中m<n,任务数据集用T={t1,t2,...,tn}表示,根据任务数据集的数据量获取指定数量的服务器资源数据集,S=(S1,S2,...Sm)代表多个不同的服务器,对任务数据集和服务器资源数据集分别进行数据标准化处理,得到待划分的任务数据集和服务器资源数据集。
S2,根据任务间信息将任务聚类,根据任务间信息利用K-DBSCAN(K均值聚类和具有噪声的基于密度的聚类)算法对任务聚类,将相关的任务聚合在一个任务集中;
S3,基于改进粒子群优化算法的任务分配策略,引入了惯性权重,依据迭代过程及粒子飞行情况对惯性权重进行动态调整,搜索子任务集和服务器节点的组合,将子任务集分配到服务器,使得其能耗最低,资源利用率最大化;
S4,根据任务到达情况,在延迟时间内对服务器进行电源管理操作,当一段任务运行结束时,采用在持续时间内延迟关闭节点来避免在新作业进入时节点被关闭;当服务器处于空闲状态而不是立即关闭时,添加一个计时器,用于在定义的持续时间内对等待状态进行计数,如果任务在此期间到达节点,则服务器将返回繁忙状态即设置成本为零,如果在持续时间内没有任务,该节点将关闭。
进一步的,所述步骤S1中提取任务数据集和服务器资源节点数据集包括:
(1)初始化任务参数;
(2)提取任务数据集,任务集用T={t1,t2,...,tn}表示,得到任务数据集矩阵,作为后续处理的原始数据;
(3)通过任务量需求获取所需服务器数量m;
(4)服务器数量集合用S=(S1,S2,...Sm)表示,得到一个服务器节点集矩阵Cr,作为后续处理的原始数据。
进一步的,步骤S2中根据任务间信息利用K-DBSCAN(K均值聚类和具有噪声的基于密度的聚类)算法对任务聚类包括:
(1)确定所要聚类的数目K,并随机选择K个任务对象作为初始聚类中心;
(2)计算各个样本到聚类中心的距离,再根据距离将任务样本归到距离最近的聚类;
样本到聚类中心的距离采用欧几里德距离公式计算:
Xi是数据集中的每个数据对象,Cj表示是个初始聚类中心。
(3)重新计算每个聚类的平均值,产生新的聚类中心;
(4)反复迭代,直到目标函数开始收敛,输出新的聚类中心;
(5)求每个初始聚类中心的划分距离Pd;
(6)根据K个初始聚类中心的Pd对任务集进行划分;
(7)根据集合中的k-距离变化曲线,确定每个任务子集的扫描半径参数Epsi,对其进行升序排序;
(8)依次调用Epsi作为参数对任务集进行聚类,每次调用对已经聚类的任务标记,直到所有的Epsi使用完毕,输出K个任务集。
进一步的,所述K-DBSCAN聚类算法使用聚类准则函数来评价聚类性能的好坏,聚类准则函数表示为:
Xi是数据集D中的每个数据对象,Cj是k个初始聚类中心。
聚类准则函数收敛,则聚类结束。当给定阈值ε足够小,
成立时,则聚类函数收敛;
聚类准确性r:
m为能被正确分配的任务对象,n为任务对象的总个数。
进一步的,所述步骤S4中利用改进粒子群搜索任务和节点最优分配的方法包括:
(1)根据S2结果初始化参数,设置最大最小的惯性权重值等参数,设置迭代次数为最大迭代次数;
(2)根据粒子信息设置粒子编码方式,随机初始化粒子的位置与速度;对粒子的速度初始化公式为vi=xi;
粒子群算法中每一个粒子都代表一个任务调度问题的潜在解。粒子位置矢量定义为一个n×m矩阵X,每一列代表一个任务分配情况,每一行代表一个服务器器执行情况;
粒子位置编码:
约束条件为:
xij表示任务子集ti与节点nj的分配关系,一个任务子集只能在一个服务器节点运行,则当xij=1表示任务子集ti在节点nj上运行,否则xij=0,每行每列均只能有一个xij=1,即表示一个任务子集只能对应一个节点,同时一个节点也只能对应一个任务集;
(3)计算每个粒子的适应度;适应度函数是评价粒子好坏的标准,粒子以适应度函数值大小不断迭代更新,直到满足停止条件,使用m×n阶矩阵ETC来表示子任务在云资源上的运行时间,其中ETC(i,j)表示子任务集i在服务器节点j上运行的时间,子任务i不在节点j上运行时,ETC(i,j)=0。根据解码结果,可以得出服务器节点j完成所有子任务的时间T(j):
服务器节点完成时间为FT:
FT=max(T(j)),j=1,2,3…m
适应度函数为:
Fitness=FT
(4)迭代次数t=1,执行调度;
(5)将粒子xi将其适应度值与按照经验,与其经历过的最好位置Pbest的适应度值进行比较,若最优,则将xi记录为该粒子经历过的最好位置Pbest;
(6)将粒子xi将其适应度值与按照经验,与其经历过的最好位置Gbest的适应度值进行比较,若最优,则将xi记录为该粒子经历过的最好位置Gbest;
(7)按照下述公式更新粒子的速度和位置,进行迭代更新;
Vi(t+1)=ω×Vi(t)+c1×rand()×[Pi-Xi(t)]+c2×rand()×[Pj-Xi(t)]
Xi(t+1)=Xi(t)+Vi(t+1)
(8)更新粒子的惯性权重;
(9)若当前迭代次数小于最大迭代次数,跳转回(3)继续执行;未达到则输出Gbest,算法运行结束。
进一步的,所述步骤S4中服务器电源管理中能耗包括:
(1)为了能满足SLA请求,需要打开适当的节能节点以连续运行新的任务。确定系统中所需节点主要取决于工作负载和用户SLA请求,监控器负责使用在线测量随着时间的变化来测量各种系统和应用和应用程序指标。一旦监视了即将到来的工作的工作量,通过用户请求的截止时间,计算出需要满足SLA所需的服务器节点数量,一旦找到所需服务器节点数量大于当前可用的节点数量,则添加节点以打开按能量效率降序排列的节点;
(2)当一段任务运行结束时,采用在持续时间内延迟关闭节点来避免在新作业进入时节点被关闭。当服务器处于空闲状态而不是立即关闭时,它会添加一个计时器,用于在定义的持续时间内对等待状态进行计数。如果任务在此期间到达节点,则服务器将返回繁忙状态,如果在持续时间内没有任务,该节点将关闭。
本发明的优点及有益效果如下:
(1)在任务聚类阶段,本发明引入K-DBSCAN算法对任务聚类,考虑到K-means聚合时聚类中心受噪音点的影响较大和DBSCAN可以识别空间数据的离散点,将两种算法进行结合可以达到在某些方面优劣互补的效果,使得到的聚类结果更为准确,将此聚类方法应用到任务分配中,改善调度时间与终端任务的执行时间。
(2)在任务分配和服务器电源管理阶段,利用改进的粒子群搜索任务集和服务器节点集的组合,避免了种群过早的收敛,取得了更优的分配结果,使任务的总完成时间最短;在任务分配的同时,根据任务到达的信息,提出服务器的动态电源管理方法,综合提高云环境下服务器的总能耗。
附图说明
图1是为本发明的模型建立原理图;
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、详细地描述。所描述的实施例仅仅是本发明的一部分实施例。
本发明解决上述技术问题的技术方案是:
本发明公开了一种云数据中心的节能任务分配方法,如图1所示,包括以下步骤:
S1,在云计算中,用户提出任务请求,获取任务数据集,把n个任务分配到m个服务器节点上运行(m<n),任务集用T={t1,t2,...,tn}表示,根据任务数据集的数据量获取指定数量的服务器数据集,S=(S1,S2,...Sm)代表多个不同的服务器。任务数据以四元组(tcpu,tm,ttime,tl)表示,其中,tcpu,tm,ttime,tl依次代表任务所需的CPU资源、存储资源(内存资源)、任务期望完成时间、任务量长度。
这里实例采用10个任务,其数据分别为:
Task |
CPU |
存储 |
时间 |
任务长度 |
Task1 |
7.00 |
2.30 |
3 |
6856 |
Task2 |
20.20 |
1.80 |
5 |
2499 |
Task3 |
21.30 |
10.10 |
9 |
624 |
Task4 |
8.09 |
8.10 |
2 |
8939 |
Task5 |
9.23 |
1.60 |
6 |
10145 |
Task6 |
11.25 |
1.70 |
4 |
6953 |
Task7 |
20.15 |
15.90 |
2 |
9528 |
Task8 |
19.23 |
1.70 |
9 |
1671 |
Task9 |
5.20 |
2.30 |
1 |
1417 |
Task10 |
3.01 |
4.50 |
4 |
8497 |
S2,根据任务信息利用K-DBSCAN算法对任务聚类。
在本实例中,所述步骤S2中K-DBSCAN算法及其应用包括:
(1)确定所要聚类的数目K,并随机选择K个任务对象作为初始聚类中心Cj,j=1,2,3,…k;
(2)计算各个样本到聚类中心得的距离D(Xi,Cj),i=1,2,3,…,n,j=1,2,3…,k,再根据距离将任务归到最相似的中心,若满足D(Xi,Cj)=min{D(Xi,Cj),j=1,2,3,…n},则Xi∈Yj。
(4)反复迭代,直到目标函数开始收敛,输出最优的聚类中心。
(5)引入两个参数扫描半径参数Epsi和最少数目MinPts,求每个初始聚类中心的划分距离Pd。
(6)根据K个初始聚类中心的Pd对任务集进行划分;
(7)计算每个任务子集的参数半径参数Epsi,对集其进行升序排序。
(8)依次调用Epsi作为参数对任务集进行聚类,每次调用对已经聚类的任务标记,直到所有的Epsi使用完毕,输出K个任务集。
任务xi和xj之间的相异度通过距离d(xi,xj)来表示,距离越小,任务xi和xj越相似;距离越大,任务xi和xj越不相似。使用欧式距离表示如下:
簇中心指一个簇中所有对象组成的几何中心点,簇的平均值在该算法中也称为簇中心,簇中心的公式如下:
n是簇j的样本数目,Cj是簇j的中心。
K-DBSCAN聚类算法使用聚类准则函数来评价聚类性能的好坏。聚类准则函数表示为:
Xi是数据集D中的每个数据对象,Cj是k个初始聚类中心。
聚类准则函数收敛,则聚类结束。当给定阈值ε足够小,
成立时,则聚类函数收敛。
聚类准确性r:
m为能被正确分配的任务对象,n为任务对象的总个数。
这里聚类K值选作3,聚类结果为:
|
任务 |
任务集1 |
Task1、Task4、Task5 |
任务集2 |
Task2、Task7、Task8、Task10 |
任务集3 |
Task3、Task6、Task9 |
S3,基于改进粒子群优化算法的任务分配策略,将任务分配到服务器,降低其分配时间最少,最终降低能耗。
在本实例中,所述步骤S3中粒子群算法及其任务分配策略包括:
(1)根据S2结果初始化参数,设置最大最小的惯性权重值等参数,设置迭代次数为最大迭代次数;
(2)根据粒子信息设置粒子编码方式,随机初始化粒子的位置与速度;对粒子的速度初始化公式为vi=xi。
粒子群算法中每一个粒子都代表一个任务调度问题的潜在解。粒子位置矢量定义为一个n×m矩阵X,每一列代表一个任务分配情况,每一行代表一个服务器器执行情况。
粒子位置编码:
约束条件为:
xij表示任务子集ti与节点nj的分配关系,一个任务子集只能在一个服务器节点运行,则当xij=1表示任务子集ti在节点nj上运行,否则xij=0,每行每列均只能有一个xij=1,即表示一个任务子集只能对应一个节点,同时一个节点也只能对应一个任务集。
(3)计算每个粒子的适应度。
适应度函数是评价粒子好坏的标准,粒子以适应度函数值大小不断迭代更新,直到满足停止条件。使用m×n阶矩阵ETC来表示子任务在云资源上的运行时间,其中ETC(i,j)表示子任务集i在服务器节点j上运行的时间,子任务i不在节点j上运行时,ETC(i,j)=0。根据解码结果,可以得出服务器节点j完成所有子任务的时间T(j):
服务器节点完成时间为FT:
FT=max(T(j)),j=1,2,3…m
适应度函数为:
Fitness=FT
(4)迭代次数t=1,执行调度。
(5)将粒子xi将其适应度值与按照经验,与其经历过的最好位置Pbest的适应度值进行比较,若最优,则将xi记录为该粒子经历过的最好位置Pbest。
(6)将粒子xi将其适应度值与按照经验,与其经历过的最好位置Gbest的适应度值进行比较,若最优,则将xi记录为该粒子经历过的最好位置Gbest。
(7)按照下述公式更新粒子的速度和位置,进行迭代更新。
Vi(t+1)=ω×Vi(t)+c1×rand()×[Pi-Xi(t)]+c2×rand()×[Pj-Xi(t)]
Xi(t+1)=Xi(t)+Vi(t+1)
(8)按照下述公式更新粒子的惯性权重。
(9)若当前迭代次数小于最大迭代次数,跳转回(3)继续执行;未达到则输出Gbest,算法运行结束。
任务集与处理器之间的匹配关系可以用分配矩阵U表示,U是n×m的二值矩阵。如果任务组vi分配到服务器pj上,那么矩阵的中的元素uij为1,否则为0。
执行粒子群算法,初始化粒子群种群各参数种群规模30,控制参数S1=0.2,S2=0.6,惯性因子Ws、We分别为0.95和0.4,学习因子C1=2,C2=2,最大迭代次数为100次。
本实例中服务器数量设置为3,平均执行能力分别为254、365、512,任务组分配结果为:
服务器 |
任务集 |
任务 |
Server1 |
任务集3 |
Task3、Task6、Task9 |
Server2 |
任务集1 |
Task1、Task4、Task5 |
Server3 |
任务集2 |
Task2、Task7、Task8、Task10 |
S4,根据任务到达情况,在延迟时间内对服务器进行电源管理操作,降低数据中心服务器能耗。并根据使用情况提出能耗计算模型。
在本实施例中,所述步骤S4中服务器电源管理中能耗包括:
(1)为了能满足SLA请求,需要打开适当的节能节点以连续运行新的任务。确定系统中所需节点主要取决于工作负载和用户SLA请求。监控器负责使用在线测量随着时间的变化来测量各种系统和应用和应用程序指标。一旦监视了即将到来的工作的工作量,通过用户请求的截止时间,计算出需要满足SLA所需的服务器节点数量。一旦找到所需服务器节点数量大于当前可用的节点数量,则添加节点以打开按能量效率降序排列的节点。
(2)当一段任务运行结束时,采用在持续时间内延迟关闭节点来避免在新作业进入时节点被关闭。当服务器处于空闲状态而不是立即关闭时,它会添加一个计时器,用于在定义的持续时间内对等待状态进行计数。如果任务在此期间到达节点,则服务器将返回繁忙状态(设置成本为零)。如果在持续时间内没有任务,该节点将关闭。
针对任务的能耗可以表示服务器能耗和任务分配能耗之和。EP表示服务器能耗,EC表示任务的分配能耗,因此总能耗可以用E表示如下:
E=EP+EC
Rp表示服务器能耗的速率,服务器能耗EP可表示速率与时间的乘积,即:
为计算分配能耗EC,任务集Vi和任务集Vj上通信边Eij所带来的分配能耗Elij表示:
Elij=k·Rc·C(Eij)
其中,k是常量参数。上述式子则可以表示为任务执行时的通信能耗是任务执行中所有服务器节点能耗的累加和。Lab表示服务器a和服务器b之间的关系,可以表示为:
根据任务与处理器之间的分配关系,因此,服务器总能耗EC可以表示为:
服务器运行总能耗:
和传统的分配方法,本发明有效较低了数据中心服务器的能耗。
以上这些实施例应理解为仅用于说明本发明而不用于限制本发明的保护范围。在阅读了本发明的记载的内容之后,技术人员可以对本发明作各种改动或修改,这些等效变化和修饰同样落入本发明权利要求所限定的范围。