基于BP神经网络的气象云资源调度系统

2018-08-07 10:47杨立苑胡佳军李显风周雪莹邹海燕
计算机与现代化 2018年7期
关键词:内存气象调度

杨立苑,胡佳军,李显风,周雪莹,邹海燕

(江西省气象信息中心,江西 南昌 330096)

0 引 言

近年来,随着云计算技术的快速发展,云计算已经成为各行各业信息化发展的基石[1]。为了满足气象信息化发展的需要,对本省物理设施资源和气象业务应用进行集约化管理,降低机房能耗成本,各省气象部门开始建设省级气象云平台[2-4]。但是由于物理设施数量和气象业务应用数量的快速增长,依靠人工的方式进行云资源的调度分配已经无法满足目前的云资源管理需求。人工方式管理云资源,一方面无法快速及时对云资源进行调度分配,另一方面会造成云资源中的物理设施资源使用效率不高和资源浪费的问题。

为了对云资源进行自动化调度,提高云资源的使用效率,节约机房能耗成本,本文设计一种基于BP神经网络的气象云资源调度系统。

江西省气象云主要分为物理机层、虚拟机层和应用层,气象云资源调度系统需要根据虚拟机负载情况进行气象云资源的调度。如果只是基于当前时间点的负载情况进行气象云资源调度,那么当前时间点的剧烈负载抖动可能会造成被调度虚拟机在不同服务器之间来回迁移,产生浪费能耗的情况。另一方面,收集负载情况到云资源调度完毕需要一定的时间,这造成调度后云资源状态相对于实际情况会出现一定程度的滞后。所以需要对未来时间点的负载情况进行一定的预测来解决上述问题。

气象云应用层主要运行的是气象服务应用,例如数值预报计算类应用[5-6]、气象预报计算类应用[7-8]、气象公众服务类应用[9-11]。运行气象服务应用的虚拟机的负载变化通常都具有一定的周期性,例如数值预报计算类应用每天定时获取欧洲细网格产品资料[12],然后进行数值计算,这造成在运行该类应用的虚拟机负载会定时变化;一些运行气象公众服务类应用的虚拟机在白天负载比较高,而到了深夜负载比较低。气象云中虚拟机的这种周期性负载特征给气象云资源调度提出了一定的挑战。

本文设计的气象云资源调度系统,基于当前虚拟机负载进行分析,预测下一时间点的虚拟机负载,然后进行气象云资源的调度,进而达到提高云资源使用效率和节约机房能耗成本的目的。

1 相关工作

任凯等人[13]针对包含Hypervisor和Container的混合云资源进行调度管理,提出了一种两级资源管理方法,第一级调度将单一物理资源抽象成多重虚拟化资源,第二级调度通过平衡用户需求和物力资源放置,提高物理资源使用率。在第一级调度中使用加权Dominant Resource Fairness算法进行云资源调度,这种调度方法没有预测下一时间点的云资源情况,不能很好地应对负载抖动的情况。

Li等人[14]考虑到现有方法在云资源调度过程中虚拟机与物理机映射关系的不稳定性,将多目标遗传算法(MOGA)应用到调度系统中。该文通过对当前虚拟机和物理机的CPU负载和内存负载情况进行约束,在该约束条件下使用遗传算法对虚拟机进行调度,最后达到提高虚拟机与物理机之间放置映射稳定性,减少虚拟机不必要迁移次数的目的。

袁正午等人[15]在粒子群算法(PSO)基础之上,分析粒子群算法的容易陷入局部最优解的不足,通过改进粒子群算法并将其应用到云资源调度环境下,达到了提高云资源利用效率的目的。

杨冬菊等人[16]设计了一种基于ARIMA模型的虚拟资源动态调度方法。该方法使用ARIMA预测模型对虚拟化资源使用情况进行预测,解决了基于当前监控数据进行资源调整带来的资源调整滞后性。但是包括ARIMA模型在内的这类时间序列预测模型只能对局部最近负载数据进行分析,并不能很好地学习过去很长一段时间内的周期性负载数据。

向勇潮[17]基于CPU调频技术设计了一种虚拟机调度算法SCFS。该算法在虚拟机管理阶段,通过自回归预测对迁移过程中的虚拟机CPU频率进行调节,达到迁移过程节能的目的。但是由于气象云中的数值预报类应用计算对CPU资源需求非常敏感,所以该方法不适合气象云资源的调整。

2 系统的体系结构

基于BP神经网络的气象云资源调度系统体系结构如图1所示。气象云主要分为3层:物理机层、虚拟机层和气象应用层。物理机层主要包括物理机在内的物理硬件。虚拟机层主要包括运行在物理机上的各类虚拟机。气象云Hypervisor会抽象物理机的硬件资源,向虚拟机层提供虚拟化资源云资源。虚拟机可以通过气象云Hypervisor提供的资源管理接口进行生命周期管理、调度、配置等操作。气象应用会运行在虚拟机中进行对外服务。

气象云资源调度系统主要分为4个部分:资源负载监测器(Agent)、资源负载收集器、虚拟化资源负载预测器和云资源调度决策器。

资源负载监测器是基于开源监控项目Ganglia[18]实现的,主要由资源负载监测的Agent组成,采用层次架构模式,这种层次架构模式给系统带来的负载小,具备良好的扩展性。Agent主要部署在物理机和虚拟机里,虚拟机中的Agent主要监测虚拟机中的资源负载情况,定时采集虚拟机资源负载情况后发送给当前宿主物理机的Agent上,然后通过物理机上的Agent转发给气象云资源调度系统中的资源负载收集器。物理机中的Agent主要监测物理机的资源负载情况,定时采集物理机资源负载情况后发送给气象云资源调度系统中的资源负载收集器。

资源负载收集器在收集到由物理机Agent发来的资源负载数据后,将资源负载数据存储到本地数据库中,并且将收集的负载数据进行资源负载日统计、资源负载月统计、资源负载年统计等计算。

图1 气象云资源调度系统体系结构图

虚拟化资源负载预测器在获取到虚拟化资源的实际负载后,会基于历史的实际负载对下一个时间点的资源负载进行预测。这里的预测方法是基于BP神经网络来实现的,该预测方法对过去15个时间点的CPU、内存、硬盘IO使用情况进行分析,然后计算预测下一个时间点的CPU使用率、内存使用率、硬盘IO使用情况。这里时间点和时间点之间的间隔是可以调节的。最后虚拟化资源负载预测器将虚拟化资源负载预测值发送给云资源调度决策器。

云资源调度决策器在收到虚拟化资源负载的预测值后去获取最新的物理资源负载实际值,然后使用启发式算法生成调度决策,最后通过气象云Hypervisor中的libvirt接口进行实际的资源调度。

3 云负载预测模型

3.1 预测模型基本结构

图2 预测模型基本结构

3.2 预测模型初始化与训练算法

在预测模型开始训练之前,需要将BP神经网络中i节点和j节点之间的权重Wij在[-1,1]区间进行随机初始化,j节点的偏置Pj在[0,1]区间进行随机初始化。初始化完毕之后,BP神经网络预测模型便开始进行训练,每输入一组数据便进行一次迭代,每次迭代都可以调整节点之间的权重值和节点自身的偏置值。每次迭代训练过程主要由前向传输过程和逆向反馈过程组成。假设i节点的输出值是Outi,j节点的输出值是Outj,节点i的误差值是errj,η是该模型的学习速率,节点i的真实值是Ti,预测模型训练算法如算法1所示。

算法1预测模型训练算法

输入:CMD={C,M,D},η。

输出:训练完毕的BPNN。

不满足退出条件则进入循环:

遍历CMD中的每一个元组:

遍历隐藏层或输出层节点,对节点j计算:

Outj=1/(1+eMidj)

遍历输出层节点,对节点j计算:

errj=Outj×(1-Outj)×(Tj-Outj)

遍历隐藏层节点,对节点j计算:

遍历神经网络中的每个权重值:

Wij=Wij+η×errj×Outi

遍历神经网络中的每个偏置值:

Pj=Pj+η×errj

在模型中,学习速率η会影响整个模型最后的训练效果。如果学习速率偏大,优点是收敛速度快,缺点是容易得出局部最优解;如果学习速率偏小,虽然收敛速度慢,但是能尽量接近全局最优解。

4 云资源调度策略

4.1 虚拟机排队策略

在对虚拟机进行迁移调度决策之前,系统需要对虚拟机的资源使用情况进行排队。但由于本文迁移调度虚拟机时考虑了CPU使用率、内存使用率和硬盘IO速率这3个维度,使得虚拟机很难利用3个维度进行排队。所以本文设计一种统筹结合CPU使用率、内存使用率和硬盘IO速率对虚拟机使用资源情况进行打分的方法,虚拟机i在时间点t的打分计算方法如公式(1)、公式(2)所示。

Si=α×G(Ct+1)+β×G(Mt+1)+γ×G(Dt+1)

(1)

(2)

其中, Si是虚拟机i的得分,α、β、γ分别是CPU资源、内存资源、磁盘IO资源对分数影响的权重,G(x)是高斯函数。在本文中,α、β、γ的取值可以根据虚拟机上运行的气象业务应用对资源的敏感程度进行调节。例如,如果虚拟机上运行的气象业务应用是计算资源敏感型的,对计算资源的服务等级要求比较高,那么α可以相对地调高,如果虚拟机上运行的气象业务应用是数据库,那么该虚拟机对磁盘IO读写速率服务等级要求比较高,这时γ可以相对地调高。在本文中使用高斯函数将资源使用率转化成该项资源的得分,这是因为需要对资源使用率越高的虚拟机进行越强的正激励,而高斯函数的函数曲线特征正好符合本文打分计算方法的需求。

在对每一台虚拟机进行打分之后,系统按照每台虚拟机的得分使用快速排序算法进行非增排序,虚拟机快速排序算法如算法2所示。

算法2虚拟机快速排序算法

输入:S=[S1,S2,S3,…,Sn]。

输出:排序后的S。

QuickSort(S[],start,end):

如果开始游标小于结束游标:

num=Partition(S,start,end)

QuickSort(S,start,num)

QuickSort(S,num+1,end)

Partition(S[],start,end):

p1=start-1

p2=end+1

循环:

循环满足S[start]>S[p2]:p2=p2-1

循环满足S[start]

如果p1小于p2:

S[p1]和S[p2]进行交换

否则:

返回p2

4.2 资源分配调度策略

云资源的优化分配调度问题可以抽象为NP-hard问题中的装箱问题,本质上是在满足约束条件的基础上,将有限数量的虚拟机分配给有限数量的物理机上,达到某种优化目标。假设物理机i的CPU资源为CPi,内存资源为MPi,硬盘IO能满足的最大速率为DPi,在物理机i上的虚拟机j预测所需CPU资源为CVij,所需内存资源为MVij,所需硬盘IO速率为DVij,那么本文中资源分配调度的约束关系如公式(3)~公式(5)所示。

(3)

(4)

(5)

本文中云资源优化调度的目的是尽可能地减少运行虚拟机的物理机数量,关闭没有运行虚拟机的物理机,达到节约能源的目的。

装箱问题无法在多项式时间内精确求解,只能通过启发式算法或者群体智能算法快速取得满意解。本文在虚拟机非增排序的基础上使用启发式算法中的首次适应算法进行云资源调度。假设已经经过排队策略排序的虚拟机需求资源集合为VM=[vm1,vm2,…,vmn],物理机可提供资源集合为PM=[pm1,pm2,…,pmm],云资源分配调度策略算法如算法3所示。

算法3云资源分配调度策略算法

输入:VM=[vm1,vm2,…,vmn],PM=[pm1,pm2,…,pmm]。

输出:虚拟机到物理机的映射集合。

初始化 映射集合,PM;

对于集合VM中的每一个vm:

遍历集合PM中的pm:

如果vm放置在pm满足约束条件:

添加vm映射pm到映射集合中

更新pm可提供的资源

中断物理资源循环

返回所有虚拟机到物理机的映射集合

5 实验测试

5.1 实验环境

本文使用5台物理机作为气象云环境的硬件基础。5台物理机配置都是32核CPU,256 GB内存。5台物理机之间互相通过万兆路由器连通,每台物理机上都部署CentOS6操作系统。在所有物理机上部署气象云Hypervisor,然后在其上运行测试虚拟机。在开始实验之前,一共制作了3种虚拟机模板,每种虚拟机开启后运行的应用类型不同,分别是CPU密集型、内存密集型和IO密集型应用。这些应用设置为开机启动,方便批量部署虚拟机。

5.2 云负载预测误差分析

为了分析BP神经网络模型对云负载预测的准确性,收集了江西省一个月运行气象数值预报云业务的虚拟机资源负载数据,资源负载数据的每个收集时间点的间隔是1 min。本文使用Matlab进行BP神经网络模型的仿真模拟,学习速率取经验值0.5,其余BP神经网络模型的参数都已经在第3章中进行了描述。本文使用经典的滑动平均算法和BP神经网络进行对比,该算法计算预测资源过去15个时间点的使用平均值作为下一个时间点的预测值。使用相对标准偏差来衡量预测的准确程度,相对标准误差的计算如公式(6)所示。表1是对CPU资源负载、内存资源负载和磁盘IO资源负载的预测相对标准偏差。

(6)

表1 各类资源负载预测相对标准误差 单位:%

从表1中可以看出BP神经网络CPU资源、内存资源、磁盘IO资源负载预测相对标准误差都在可容忍的范围之内。BP神经网络预测内存的相对标准误差很小,只有5.16%,其次是CPU相对标准误差为13.27%,而磁盘IO的相对标准误差稍微大些,为19.52%。滑动平均预测CPU、内存、磁盘IO的相对误差分别是25.66%、8.87%、39.10%。通过分析,这是因为内存的使用量在应用启动后会保持在一个比较稳定的区间内,波动不大,比较容易预测,所以准确率最高,这也造成了BP神经网络预测的结果和滑动平均预测的结果相差不大。CPU负载通常按时间呈现一定的升降规律,局部波动也比较小,所以预测的准确性很高。而磁盘IO速率的局部随机性较大,这给预测增加了一定难度,预测的效果相对于CPU负载和内存负载稍微差了一些,但准确性在80%以上。在预测CPU和磁盘IO这2类具有波动性的资源方面,神经网络的准确性明显要高于滑动平均的准确性。

5.3 调度系统功能验证

为了验证云资源调度系统的功能,本文在5台物理机上使用已经准备好的虚拟机模板制作定量虚拟机,然后将这些虚拟机随机分配到5台物理机上,并且保证每台物理机上至少有一台虚拟机。调度系统功能验证实验一共分5次进行,5次批量生成的虚拟机个数分别为150个、100个、80个、50个、20个。每次实验都需要让虚拟机在物理机上先运行24 h,然后再进行云资源调度功能验证操作。操作完成后统计空置的物理机数量。实验结果如图3所示。

图3 调度系统功能验证实验结果

从图3中可以看出:1)云资源进行调度后能够空置出物理机来,调度系统的功能是有效的;2)随着虚拟机个数的减少,调度前的物理机资源浪费越来越严重,调度系统的效果越来越明显。

6 结束语

在云计算环境下,资源调度系统在提高资源使用效率和节约能耗方面发挥着重要的作用。考虑到气象云的调度需求和资源负载的特征,本文设计的气象云资源调度系统基于BP神经网络对资源负载进行预测,使用首次适应算法对非增排序的虚拟机进行云资源调度。通过在江西省气象云平台下的实验表明,本文设计的调度系统满足了实际业务的需求。

猜你喜欢
内存气象调度
气象树
《内蒙古气象》征稿简则
《调度集中系统(CTC)/列车调度指挥系统(TDCS)维护手册》正式出版
电力调度自动化中UPS电源的应用探讨
基于强化学习的时间触发通信调度方法
一种基于负载均衡的Kubernetes调度改进算法
笔记本内存已经在涨价了,但幅度不大,升级扩容无须等待
“春夏秋冬”的内存
大国气象
美丽的气象奇观