赵 勉,李 烨
(上海理工大学 光电信息与计算机工程学院,上海 200093)
基于Q-Learning的虚拟机动态伸缩算法
赵勉,李烨
(上海理工大学 光电信息与计算机工程学院,上海200093)
摘要针对大规模云环境中业务量变化时平台服务质量和资源消耗的问题,提出一种基于Q-Learning的虚拟机扩容/缩容决策算法。将该问题转换为马尔科夫决策模型,为了在业务平台服务质量和资源消耗之间取得较好的平衡,智能体根据平台当前状态计算出最佳策略,执行决策并转到下一状态。仿真结果表明,该算法可根据业务量的变化实时作出伸缩决策,并提供最合适的虚拟机资源以满足业务需求,且能提高平台的稳定性。
关键词云计算;虚拟机;动态伸缩;Q-Learning;资源利用率
Q-Learning Based Auto-scaling Algorithm for Virtual Machines
ZHAO Mian,LI Ye
(School of Optical-Electrical and Computer Engineering,University of Shanghai for Science and Technology,Shanghai 200093,China)
AbstractTo solve the problem of service quality and resources cost when the service volume changed in large cloud environment,this paper proposes a scaling method for virtual machines based on the Q-Learning algorithm.First,the problem is modeled as a Markov decision process.In order to achieve a better balance between platform service quality and resources consuming,the agent outputs the best decision according to the current state of the platform.The platform executes the decision and transfers to the corresponding state.The simulation results show that the method can make scaling decisions in real time according to the change of service volume so as to provide appropriate resources of virtual machines matching the requirements of service.The method also can enhance the stability of the platform.
Keywordscloud computing;virtual machine;auto-scaling;Q-Learning;resource utilization
一个良好的云计算平台应该具有高可扩展性、高可用性、高可靠性、能按需分配资源和负载均衡等特性。可伸缩性是分布式及并行计算中的重要指标之一,描述了应用系统通过改变可用硬件资源和调度方式来动态调整自身整体性能的能力[1]。在大规模虚拟环境系统中,利用云计算可伸缩性的特点,可根据业务的资源需求动态伸缩平台资源,降低运营成本,提高资源利用率。
可伸缩性是当前云计算的研究热点[2-3]。CloudScale[4]应用快速傅里叶变换识别资源并预测周期性的资源需求,以实现云平台资源的动态伸缩。在文献[5]中,利用自回归滑动平均模型预测虚拟机负载以减少资源消耗。文献[6~7]提出了混合多种算法的模型来预测虚拟机数量需求,能根据预测误差自动选择最优算法。这些根据预测实现的虚拟机伸缩方法对历史负载信息的依赖较大,系统运行初期预测不够准确。文献[8]提出用门限值算法实现虚拟机的动态伸缩,虽然该算法目前应用较多,但由于门限值算法每次增加或减少的虚拟机个数固定,会出现平台资源不够或资源浪费情况。因此,需要一种能够根据业务资源变化适当增加或减少虚拟机的算法,以使平台既能满足业务需求,又能有较高的资源利用率。
本文提出一种基于Q-Learning的虚拟机动态伸缩算法。该算法不仅考虑了系统的业务需求和资源利用率,同时考虑了平台的稳定性。
1算法描述
1.1Q-Learning理论
Q-Learning是一种无模型、无监督的在线强化学习算法。当智能体每选择一个动作后,环境会给以正反馈或负反馈以表示当前动作正确与否。一般用Q-Learning解决的问题均可转换成马尔科夫决策过程模型,即由环境状态集合S={s1,s2,…,st,…,sn}、动作集合A={a1,a2,…,at,…,an}和学习者的决策策略π:S→A等组成[9]。学习者能感知到当前环境的状态st,从动作集合中选取动作at,而环境根据智能体输出的动作at计算出一个回报值rt评判当前选择动作的好坏。若回报值为正,则当前动作使系统状态更优;若回报值为负,则选择该动作时系统状态性能下降。当动作集合有不止一个元素时,回报值为正的越大越好。智能体通过不断的学习优化一个可迭代计算的Q函数以提高学习能力,学习的最终目标是找到每个状态下的最佳策略以最大化累计回报,即
(1)
1.2虚拟机数量伸缩算法建模
虚拟机数量伸缩问题可建模成马尔科夫决策过程M=〈S,A,T,R〉,模型如图1所示。
图1 业务平台的虚拟机伸缩模型
业务平台的虚拟机伸缩问题对应马尔科夫决策模型中的状态集合S、动作集合A、转移概率T和回报函数R分别如下:(1)状态集合S由n个状态构成,每个状态可根据平台的业务量、资源消耗和资源利用率得到,在t时刻系平台的状态记为st;(2)动作集合A由n个动作组成,每个动作代表增加或减少虚拟机的个数,其值可为正值、零或负值;(3)表示在某一状态si下选择动作ai后跳转到下一状态的概率,本算法状态中为确定性转移;(4)回报函数R。其定义是决策策略好坏的关键,一个好的回报函数能够让结果更接近目标值。
回报函数可定义为
(2)
式中
(3)
(4)
1.3虚拟机数量伸缩算法流程
Q-Learning算法主要通过回报函数选取最优动作使系统获得的累计回报值最大,基于Q-Learning算法的虚拟机伸缩算法流程如下:(1)初始化。初始化Q表为零矩阵,获取α、γ值,根据系统资源消耗、资源利用率初始化第一个系统状态;(2)动作的选择和执行;从动作集合中选择某一动作,当前状态执行该动作后进入下一状态;(3)获取回报。系统选择某一动作后根据式(2)计算回报值;(4)根据式(1)计算选择该动作的累计回报值;(5)重复步骤(2)~步骤(4)直至计算完所有动作的累计回报值;(6)参数更新。更新Q表,选择最大累计回报值对应的动作作为决策结果,系统状态执行该动作并进入下一状态。
2算法结果验证与分析
2.1仿真场景设计
如图2所示,在200min之前,业务量呈现平稳状态;在200~290min之间,业务量逐渐上升;随后,系统业务量出现振荡;从620min开始业务量又趋平稳;而在700min后的一段时间业务量出现很大抖动,之后业务量逐渐下降。仿真场景包括了实际业务可能出现的各种典型情形。
图2 业务量变化图
2.2仿真准备
设定每台虚拟机容量为4 500 MB,动作集合A={-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6},系统可容纳最多12台虚拟机,资源利用率上限设为0.8。首先需确定学习速率α和折现因子γ,平台资源消耗量越近业务量则资源利用率更高,若资源消耗量小于业务量则表示违约,伸缩次数越少则系统越稳定。不同α和γ取值对应不同的资源消耗量、不同的伸缩次数。令γ=0.5,不同α值的仿真结果如图3所示。从图3(a)~图3(e)可见,资源消耗量都大于业务量,说明系统伸缩后的资源能满足业务需求,即均没有违约次数;在平台业务量变化时只有α=0.1和α=0.3时资源消耗量及时变化,但从图3(a)和图3(b)中可看出,α=0.1的伸缩次数比α=0.3的伸缩次数多,伸缩次数越多就会导致平台不稳定,故可取α=0.3。
图3 不同α值对应的资源消耗量
此时取不同的γ,对应的仿真结果如图4所示。从图中可看出,资源消耗量均大于业务量,说明均没有违约次数;γ越大,伸缩次数越多,系统振荡越多,也就越不稳定。因此,可取γ=0.1。
图4 不同γ值对应的资源消耗量图
2.3算法对比研究
与广泛应用的门限值算法比较。门限值算法中设置了高门限和低门限,当平台资源利用率高于高门限值时,平台增加虚拟机;当平台资源利用率低于低门限值时,平台减少虚拟机;其中平台每次增加或减少的虚拟机个数固定。若高门限值设置为平台资源利用率上限,则在业务量突然增加很多且持续一段时间时,因平台每次增加的资源有限,一段时间之后平台资源才能增加到目标值,故平台反应较慢且违约次数较多,同样当业务量突然减少时,平台也不能及时减少足够多的虚拟机这样会造成资源浪费。综合以上原因,为使平台有较高的资源利用率且违约次数较低,门限值算法的上下门限取值分别为0.75和0.64。仿真结果如图5~图7所示。
如图5所示,随着仿真周期的增加,两种方法的伸缩次数都逐渐增加,在第11个周期结束时,门限值算法和Q-Learning算法计算的伸缩次数分别为991和834,Q-Learning算法略优,系统更稳定。此时如图6所示,门限值算法的违约次数为187,而Q-Learning算法没有违约,这说明业务平台用Q-Learning算法实现的资源伸缩能够满足业务需求。从图7比较,Q-Learning算法计算的系统资源利用率从0.715 1逐渐上升在第6个周期后趋于平稳值0.715 5,而门限值算法资源利用率从0.698 5逐渐上升在第9个周期后趋于平稳值0.699 2,可看出Q-Learning算法收敛较快且资源利用率较高。
图5 伸缩次数对比图
图6 违约次数对比图
图7 资源利用率对比图
3结束语
提出了一种基于Q-Learning的虚拟机数量伸缩算法,该算法旨在业务量变化时提高系统服务质量并提高资源利用率。仿真结果表明,与应用广泛的门限值算法相比,该算法伸缩次数较少、违约次数为零、资源利用率较高,即不仅能以消耗较少资源满足业务需求,还能使系统更为稳定,在系统性能和资源消耗之间获得了很好的平衡效果。
参考文献
[1]刘冬.云计算环境下可伸缩实时在线交互应用关键技术研究[D].广州:华南理工大学,2014.
[2]李乔,郑啸.云计算研究现状综述[J].计算机科学,2011,38(4):32-37.
[3]叶可江,吴朝晖,姜晓红,等.虚拟化云计算平台的能耗管理[J].计算机学报,2012,35(6):1262-1285.
[4]Caron E,Desprez F,Muresan A.Forecasting for Cloud computing on-demand resources based on pattern matching[J].HAL-INRIA,2010(3):456-463.
[5]Gong Z,Gu X,Wilkes J.PRESS:PRedictive elastic resource scaling for cloud systems[C].Haikou:2010 International Conference on Network and Service Management (CNSM),IEEE,2010.
[6]Lagar-Cavilla H A,Whitney J A,Scannell A M,et al.Snow Flock:rapid virtual machine cloning for cloud computing[C].Beijing:Proceedings of the 4th ACM European Conference on Computer Systems.ACM,2009.
[7]Zhu J,Jiang Z,Xiao Z.Twinkle:A fast resource provisioning mechanism for internet services[C].Guangzhou:INFOCOM Proceedings IEEE,2011.
[8]Bhise V K,Mali A S.EC2 instance provisioning for cost optimization[C].Shenzhen:International Conference on Advances in Computing,Communications and Informatics(ICACCI),IEEE,2013.
[9]李俊涛,周其力.基于改进分组遗传算法的虚机初始化放置算法[J].电子科技,2015,28(6):17-20.
中图分类号TP391
文献标识码A
文章编号1007-7820(2016)03-035-04
doi:10.16180/j.cnki.issn1007-7820.2016.03.009
作者简介:赵勉(1989—),女,硕士研究生。研究方向:通信技术。
收稿日期:2015- 07- 13