一种基于强化学习的数据中心服务器功耗管理与优化方法与流程

文档序号:16855151发布日期:2019-02-12 23:11阅读:385来源:国知局
一种基于强化学习的数据中心服务器功耗管理与优化方法与流程

本发明涉及数据中心的系统资源管理与分配的自动化方法,尤其是数据中心服务器上功耗可感知的多虚拟机分配方法。



背景技术:

随着云计算、大数据、机器学习等技术的发展,为了满足大量用户对数据存储、处理与智能分析的需求,数据中心的规模变得越来越大,同时也导致其能耗成本居高不下。能耗问题已经成为制约数据中心可扩展性、可靠性与服务质量的关键问题。近年来,数据中心的功耗管理与优化已经成为工业界和学术界广泛关注的问题。在保证数据中心正常业务及安全可靠运行的同时,最大限度地降低电能等运营成本,提升各类云服务的性价比与市场竞争力,对云服务提供商显得极其重要。

为提供弹性的计算、存储与数据分析服务,目前的数据中心一般采用虚拟化的部署方案,即在物理服务器上运行虚拟机监控器程序(virtualmachinemonitor,vmm),由虚拟机监控器创建和管理客户操作系统(guestos),即虚拟机(virtualmachine,vm),将服务器硬件资源在多个虚拟机之间共享,达到提高资源利用率和灵活管理的目的。由于数据中心任务负载的动态性(如负载类型、负载强度、负载的时空分布等动态变化),数据中心各服务器的使用率也随之动态变化。数据中心任务动态到达与服务器节点动态变化的特点,使得其是一个典型的具有马尔可夫性的随机动态系统,即系统的未来状态是随机的,并且其状态转移概率具有马尔可夫性。另外,由于不同服务器的硬件配置及其性能的异构性,导致其上运行不同类型、不同强度的负载时其功耗也具有较大的变化。因此,传统的经验型的、半自动半手动的数据中心功耗管理方法,已无法适应弹性云计算环境下数据中心的动态可扩展、自适应的系统架构与严苛的服务质量与可靠性要求,也无法针对负载变化动态优化数据中心的负载分布和功耗分布,从而降低整个数据中心的能耗。

数据中心在运行过程中产生了大量的运行日志,包括服务器硬件设备状态信息、资源使用信息、任务运行时信息、各类部件的功耗信息等,这些日志数据反映了数据中心实时的运行状态及其资源分配情况,通过对这些数据的挖掘和分析,可以剖析数据中心的运行模式,包括任务特征(任务到达模式、任务持续时长、任务等待时间、任务完成时间等)和服务器功耗及资源分配模式,用以指导数据中心的功耗管理与优化。



技术实现要素:

本发明针对现有技术的不足,提出了一种基于强化学习的数据中心服务器功耗管理与优化方法。本发明降低数据中心功耗的主要方式为马尔科夫决策过程下基于强化学习的数据中心虚拟机调度。本发明首先对负载特征进行预测,识别出服务器节点所处的状态,使用建立的数据中心虚拟机预测模型判断当前节点是否可以置于睡眠状态、增加或降低节点上的虚拟机负载以提高数据中心整体能效比,即服务器每单位瓦特耗电量下完成的任务量。同时,使用强化学习方法来学习当前服务器节点是否需要把其上的虚拟机迁移出去以及迁移到哪些对应的服务器节点上,其中的强化学习是一种具有与环境进行交互学习并不断优化其策略以达到系统最优的优化控制方法。

该发明具体包括两部分:对负载特征进行预测的贝叶斯分类方法和基于强化学习的虚拟机调度方法。

(1)对负载特征进行预测的贝叶斯分类方法

通过预测当前数据中心服务器节点上下一次任务到达的时间间隔,可以根据任务间隔时间来对任务进行优化的分配和调度,以节省数据中心功耗。本发明的负载特征贝叶斯分类方法可以克服传统的基于线性组合的任务间隔预测方法误差过大及稳定性差的缺点,通过把间隔时间分成“长,短”的二分类问题,提高分类准确率,且易于工程化部署。

(2)基于强化学习的虚拟机调度方法

本发明要解决在数据中心到达负载及服务器节点功耗状态不断变化过程中的连续的虚拟机任务调度与功耗优化决策过程,即通过优化虚拟机调度达到数据中心功耗最小化。

数据中心是一个典型的具有马尔可夫性的随机动态系统,在数据中心运行过程中,在给定现在状态以及过去所有状态的情况下,其未来状态的条件概率分布仅依赖于当前的状态。即在给定现在状态时,它与过去状态(即该过程的历史路径)是条件独立的。本发明用一个五元数(s,a,p(.,.),r(.,.),γ)来描述一个典型的数据中心,其中:

·s是一组有限的数据中心状态集,即数据中心负载分布及节点任务执行状态,包括资源利用率与功耗等;

·a是一组有限的数据中心动作集,即可以对数据中心采取的虚拟机调度或迁移;

·pa(s,s′)=pr(st+1=s′|st=s,at=a)表示在时间t数据中心在功耗状态s采取动作a可以在时间t+1转换到功耗状态s′的概率

·ra(s,s′)表示通过动作a数据中心功耗状态从s转换到s′所带来的及时收益;

·γ∈[0,1]是折扣因子,表示未来收益和当前收益之前的差别,即各个时间的收益所占的比重不同。

本发明提出的数据中心功耗管理方法仅在数据中心切换至另一种状态时才会去选择一个新的行为a,策略不={(s,a)|s∈s,a∈a}代表数据中心马尔科夫决策的一组状态-行为对,此处用π(s)=a表示当数据中心处于状态s时采取的行为a。整个数据中心功耗优化的目标是找到一组最佳的策略使得上述所有的反馈函数之和最大,这个反馈函数可以是数据中心运行管理方设定的目标函数,在本发明中将其设为整个数据中心的整体能效比,即每单位瓦特功耗所完成的任务数量。由于当前数据中心服务器在不同的资源使用率的情况下其能效比是不一样的,且其能效比峰值一般出现在非100%资源利用率点,且不同的服务器及不同服务器上运行不同类型的任务的能效比峰值所处的位置也不一样。因此,为了实现整个数据中心的能耗优化,本发明通过自定义的计算负载可以实时计算得出当前服务器的能效比峰值位置。

本发明使用强化学习方法来解决数据中心的功耗优化管理问题,通过周期地或连续地观察数据中心这一随机系统的负载到达、负载分布与功耗使用信息,序贯地做出决策。即根据每个时刻观察到的状态,从可用的行动集合中选用一个行动做出决策。决策者根据新观察到的状态,再作新的决策,依此反复地进行。

本发明提出的基于强化学习的数据中心服务器功耗管理与优化方法的具体步骤是:

步骤1:确定数据中心的强化学习模型参数,即初始化数据中心的状态集、动作集、状态转移概率、收益与折扣因子;

步骤2:确定数据中心马尔科夫决策的一组状态-行为对并初始化每个状态-行为对的值q(s,a),即状态s下执行行为a所能带来的收益的大小;

步骤3:通过贝叶斯分类器对数据中心负载特征进行识别,对服务器节点上下一次任务到达时间间隔进行预测,确定其间隔分类结果为“长”、“短”或“未知”;

步骤4:根据贪心算法择对应的行为a;

步骤5:学习代理收集数据中心系统的反馈信息,包括数据中心的功耗、任务分布及能效比;

步骤6:基于强化学习结果进行数据中心虚拟机调度,更新数据中心到新状态s′,并更新状态行为对的值q(s′,a),即状态s′下执行行为a所能带来的收益的大小;

步骤7:不断循环步骤1到步骤6,直到功耗达到最优。

本发明提出的基于强化学习的数据中心服务器功耗管理与优化方法可以无需任何先验知识,直接在线优化数据中心的负载分配策略,从而不断降低数据中心的整体功耗。

附图说明

图1为任务负载、任务队列、服务器节点与负载预测以及能耗之间的关系图;

图2为本发明提出的基于强化学习的数据中心功耗管理与优化模型;

图3为数据中心上节点的运行状态变化图;

图4为整个调度方法的系统架构图。

具体实施方式

以下结合附图对本发明作进一步说明,请参阅图1。如图1所示,sr是达到数据中心的任务负载的合集,sq是数据中心已有的任务队列,sp为服务器节点。本发明根据数据中心任务负载请求的历史数据来预测下一时刻请求的到达间隔,把间隔时间分成“长”、“短”、“未知”三类,计算已知条件下未来任务负载可能分布的概率,从中选择概率最大的类别作为预测结果,预测当前服务器节点上的下一个任务的到达间隔时间,以此来判断是否可以把当前服务器节点置于睡眠状态。“未知”分类结果仅表明在某次预测中其间隔为“长”和“短”的概率相差较小的情况下的保守性估计,即不对其进行长短的结果预测。

在本发明中,使用系统日志中已有任务的服务间隔时间作为输入特征向量x=(x1,x2,...,xn),xi=1代表对应的间隔时间是大于已设定的阈值时间,否则xi=0。本发明的分类器的输出结果是下一个任务的间隔时间是否会大于设定的阈值时间。在真实的数据中心部署环境下,也可以用超过三种状态的输出,在程序代理实现中做相应的配置即可。

图2展示了本发明提出的基于强化学习的数据中心功耗管理与优化模型,主要是由代理,有限状态空间s和行为空间a以及反馈函数r组成。把数据中心上代理和环境的交互看作一个静态的决策过程,通过把连续时间离散化为一组非连续序列{t0,t1,t2,...,tk,...},在时刻tκ,数据中心转换到状态sk∈s,且代理会捕获到这一信息。

在本发明中的状态s被定义为服务器节点状态,包括cpu利用率,内存利用率,服务器当前能效比值以及节点上运行的任务类型。把cpu利用率分成10档,{c1,c2,...,c10}分别对应cpu利用率为10%,20%,到100%。同样的,内存利用率也分成10档,即{m1,m2,...,m10},能效比也分成10档,即{r1,r2,...,r10},节点上运行的任务类型为计算型和内存型。行为空间a代表当数据中心总体能效比小于设定能效比阈值时所采取的行为,本发明中主要有三种行为,即{把该节点置于休眠状态,增加该节点上的虚拟机数量,减少该节点上的虚拟机数量}集合。如果所有的服务器节点利用率都处于高于峰值能效比的利用率点位置,则表明整个数据中心的开机服务器过少,就需要开机新的服务器节点以增加数据中心整体能效比。

图3显示了数据中心上节点的运行状态变化图,总共可分为三种状态,活跃代表服务器正在运行数据中心任务,当数据中心没有任务时服务器处于空载状态。休眠状态是本发明根据系统任务执行历史预测出服务器在未来较长一段时间内没有任务的到来,则将其置为休眠状态。

设不同状态下数据中心应该采取的行为为q(s,a),其代表在状态s时采取行为a会给数据中心系统带来的收益值,对所有时刻i,其公式变换如下:q(si,ai)=q(si,ai)+α*(ri+1+γ*maxa∈a(s)q(si+1,a)-q(si,ai))

其中q(si,ai)代表在时刻i的q值大小,当数据中心执行行为ai时,系统的状态由si转化到si+1,α是学习率,ri+1是在si+1状态的反馈值。本发明根据数据中心系统反馈的r值和选择的行为对的值来不断更新q(si,ai)的值,通过不断更新q值不断提高系统的反馈值也即数据中心整体能效比值。

本发明使用贪心法进行状态选择,且发生状态选择的情况仅仅在服务器节点的能效比低于设定阈值时才发生。本发明有1-ε的概率会选择到q值最大的状态行为对,ε的概率随机选择一个行为,其中ε的值可以动态调节,以避免整个优化系统一直被困在某个局部最优解。

由于数据中心中服务器系统、网络系统以及用户请求的异构与高度复杂性,本发明将数据中心系统的总体能效比的大小作为强化学习的反馈值。即反馈值被定义为

r(i)=ci/ei

其中ci被定义为数据中心当前时刻的成功执行的任务数,ei代表当前时刻系统的总体功耗,通过服务器主板板载传感器和操作系统内核掉的用,可以实时获取这些数据,因此单个服务器节点及整个数据中心的强化学习反馈值r是可以实时计算获得的。

根据前述模型,本发明提出了一种基于强化学习的数据中心虚拟机调度方法,命名为rldc方法。

图4给出了整个rldc调度方法的系统架构图,主要包括代理,vm分配器,虚拟机管理器(vmm)和虚拟机vm。在系统开始运行时,代理首先收集各个虚拟机的状态,然后通过代理上的rldc模型计算得到一个分配策略,再把这个策略传递到每个vmm上,最后由vmm调度其控制的虚拟机。序号1代表虚拟机信息的流动方向,序号2和3代表控制信息的流动。

rldc可以动态调整多个活跃节点上的工作负载以优化数据中心的功耗和整体能效比。rldc根据强化学习结果决定是否需要把当前服务器节点置于休眠状态并把其上的虚拟机迁移到其他节点上,并确定当前节点上的虚拟机迁移目的地节点。为了做出合理的决策,学习代理是rldc的重要组成部分。其具体算法如算法1所示,算法1得到的待迁移虚拟机列表即是rldc的代理学习到的需要迁移至目标节点上的任务负载。

算法1首先给所有的状态行为对初始化一个初值,当数据中心能效比不满足阈值要求时,系统从策略中选出对应的行为a。被选中行为如果是将节点置于休眠状态的话,就需要将其上面的虚拟机置于movedvm(待转迁移虚拟机列表)上。由于当前主流服务器能效比曲线的凸函数特点,如果当前节点上虚拟机负载过大,也需要将其上的部分虚拟机置于movedvm上,并确定接收这些虚拟机的目标节点。如果服务器节点因虚拟机负载过低而导致系统能效比较低,则这些节点即是虚拟机迁移的目标节点。如果数据中心负载过高,即movedvm列表上的虚拟机没有足够多的目的节点进行迁移,rldc则将数据中心中处于休眠状态的节点激活或者开机添加新的节点。在调度和迁移行为执行结束之后,rldc会自动收集这些行为带来的反馈影响值,进而更新q(si,ai)值,以得到更优的反馈结果,逐步迭代达到降低数据中心功耗即提高能效比的目的。

本发明提出的基于强化学习的数据中心服务器功耗管理与优化方法的具体实施步骤是:

步骤1:确定数据中心的强化学习模型参数,即初始化数据中心的状态集、动作集、状态转移概率、收益与折扣因子;

步骤2:确定数据中心马尔科夫决策的一组状态-行为对并初始化每个状态-行为对的值q(s,a),即状态s下执行行为a所能带来的收益的大小;

步骤3:通过贝叶斯分类器对数据中心负载特征进行识别,对服务器节点上下一次任务到达时间间隔进行预测,确定其间隔分类结果为“长”、“短”或“未知”;

步骤4:根据贪心算法择对应的行为a;

步骤5:学习代理收集数据中心系统的反馈信息,包括数据中心的功耗、任务分布及能效比;

步骤6:基于强化学习结果进行数据中心虚拟机调度,更新数据中心到新状态s′,并更新状态行为对的值q(s′,a),即状态s′下执行行为a所能带来的收益的大小;

步骤7:判断系统是否达到设定的准确度要求或者迭代次数超过了限制,如果满足了其中一个终止条件,则终止程序,输出结果。否则继续循环步骤(1)至步骤(6)。

下面分别对上述实施步骤进行详细说明。

(1)步骤1

确定数据中心的强化学习模型参数,即五元数(s,a,p(.,.),r(.,.),γ)的数据值及其数据域。包括:

数据中心状态集s,即数据中心负载分布映射关系及节点任务执行状态,包括硬件资源利用率百分比与服务器功耗;

数据中心动作集a,包括对数据中心虚拟机的调度策略和迁移,即源虚拟机列表、目的物理服务器、虚拟机迁移百分比;

状态转移概率p,即数据中心在不同的功耗状态下的转移概率,记p=pa(s,s′)=pr(st+1=s′|st=s,at=a),根据数据中心历史负载特征数据和功耗数据,计算在时间t数据中心在功耗状态s采取动作a可以在时间t+1转换到功耗状态s′的概率;

数据中心收益r,记r=ra(s,s′),计算通过动作a将数据中心功耗状态从s转换到s′所带来的及时收益数值,记为功耗降低百分比;

设定折扣因子γ∈[0,1],设定未来收益和当前收益之前的差别权重。

(2)步骤2

确定数据中心马尔科夫决策的一组状态-行为对并初始化每个状态-行为对的值q(s,a),即状态s下执行行为a所能带来的收益的大小。

(3)步骤3

提取数据中心上的负载特征,包括节点的内存,cpu,硬盘大小及剩余的容量,节点上运行任务的个数等,然后设立一个时间间隔t,把任务到达间隔低于t的当做“短”任务,高于t的当做“长”任务,构建一个二分类机器学习问题,选用贝叶斯分类来预测任务的下一个到达时间间隔。

(4)步骤4

在本步骤中,我们要选择一个行为使得我们的最终目标值的最大化,转换成一个优化问题,在本发明中的目标函数最大值是一个np难题,所以我们使用贪心算法选取当前状态s对应的最大的q(s,a)值的行为a。根据系统选择的状态执行不同的操作,如果是迁移虚拟机,则需要从把当前虚拟机迁移到别的节点或者从别的节点迁移虚拟机到本节点上。

(5)步骤5

由于强化学习是一个与周围环境交互的算法,所以在步骤(4)执行完毕之后要搜集之后的系统状态,计算一段时间内系统的整体能效比,之后根据这个反馈值更新系统的参数。

(6)步骤6

根据之前步骤的在状态s采取的行为a以及其对应的反馈值,更新q(s,a)q(si,ai)=q(si,ai)+α*(ri+1+γ*maxa∈a(s)q(si+1,a)-q(si,ai)),这时系统的状态从s转换到s′。

(7)步骤7

判断系统是否达到了我们需要的准确度要求或者迭代次数超过了限制,如果满足了其中一个终止条件,则终止程序,输出结果。否则继续循环步骤(1)至步骤(6)。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1