一种面向容器集群的能耗优化资源调度系统及其方法与流程

文档序号:17585988发布日期:2019-05-03 21:19阅读:188来源:国知局
本发明涉及到能耗资源管理领域,具体涉及一种面向容器集群的能耗优化资源调度系统及其方法。
背景技术
::能耗问题一直以来是数据中心的一个突出问题,尤其是随着云计算时代的到来,更多的计算资源和存储资源集中在云端,给能耗的高效管理带来更大的挑战。来自美国能源部的数据表明,数据中心的能耗占全美所有能耗的1.5%,并且对电能的需求仍在以每年12%的速度增长,到2011年,数据中心会消耗1000亿千瓦时的电能,每年花费约74亿美元。数据中心的高能耗问题不仅造成电能的浪费、系统运行的不稳定,同时也对环境造成不良影响。美国联邦机构已经指出高能耗问题将对空气质量、国家安全、气候变化、电网可靠性等方面造成严重影响。因此,云数据中心的节能刻不容缓,能耗优化管理已经成为当前云数据中心亟待解决的重要问题。由于传统的云计算数据中心是以虚拟机为核心,iaas以虚拟机为提供计算资源的基本单元,paas以虚拟机为部署应用的基础设施,因此传统的能耗模型和基于能耗优化的调度算法主要是针对虚拟机的,并且虽同为虚拟化技术,但是传统虚拟机与容器有较大差异,一些应用于虚拟机的能耗建模和优化技术无法直接应用于容器使用的场景。不同于对虚拟机能耗模型与虚拟机调度算法的广泛研究,目前只有少量的关于容器能耗模型和容器调度方向上的研究。就能耗建模方面来说,由于容器不需要对硬件进行虚拟化,也不需要安装独立的操作系统而是复用宿主机操作系统内核,因此容器的能耗模型与虚拟机有着很大的区别,部分适用于虚拟机能耗建模的方法不使用于容器。在目前大多数研究中,研究对象大多普遍为虚拟机,缺乏对容器能耗建模问题的解决方案,同时在容器能耗建模时除了需要像虚拟机能耗建模一样考虑到服务器的异构性又需要对容器本身的负载特性进行鉴别与区分。再从能耗优化调度算法方面来说,随着容器技术的发展,近年来已经有许多在容器调度上的研究。vakilinia讨论了数据中心内基于能耗的容器管理模式,但是并没有对容器的能耗模型进行公式化的描述。mohamedfatenzhani等人提出了一种动态的基于资源异构的容器调度策略,通过k-means算法对输入任务按资源需求进行聚类,动态优化执行不同种类任务的容器数量,以此来降低数据中心能耗,但聚类的过程是线下的并只是采用服务器历史数据,模型无法做到随时间演进。chanwitkaewkasi等人提出了基于蚁群算法(aco)的容器调度技术来提高资源的负载均衡性和容器化应用的性能。与chanwitkaewkasi类似的是,国内卢胜林等人针对容器调度也提出了一种权值调度策略,根据cpu使用率、内存使用率、平均网络负载和节点上已为容器分配出去但未使用的内存资源占总内存资源大小的比例,通过加权平均的方式,计算每个节点的权重w(ni),权重越大说明节点负载越高,从而阻止容器调度到该节点上,但以上两者均没有考虑能耗带来的影响,提升负载均衡和应用性能可能会使容器离散地分布在数据中心所有的服务器上,从而造成维持服务器运行产生的能耗增加可能会远大于节点负载降低带来的能耗收益。在工业界,目前也有许多用于管理容器的容器编排系统(cos,containerorchestrationsystems),比如apache的mesos,google的kubernetes以及docker的swarmkit。但是它们仅使用了简单的容器调度策略来维护容器应用的可用性和扩展性(hpa,horizontalpodautoscaler),而随着数据中心内容器数量的增加,调度的场景也越来越复杂,因此这些系统的调度短板也愈发明显。随着容器技术的成熟,新一代云数据中心的建设开始逐步以容器为核心,容器即服务(containerasaservice,caas)将把第一代云计算的iaas层和paas层合二为一,成为新一代的云计算架构。因此建立好一个容器能耗模型并据此给出一个基于能耗优化的容器调度算法是目前云计算领域亟待解决的重要问题。技术实现要素:为克服现有技术的步骤,本发明提供一种面向容器集群的能耗优化资源调度系统及其方法,改进基于caas架构的云数据中心的能耗管理系统及其方法,节省能源和降低云数据中心的运营成本,并为云数据中心用户提供经济的资源服务。为了达到上述目的,本发明采用以下技术方案:本发明提供一种面向容器集群的能耗优化资源调度系统,包括服务器资源监控器、容器性能测试池、容器能耗模型管理器、容器能耗缓存模块、容器调度决策器、动态调整模块和多个服务器,所述服务器给容器提供运行环境,所述服务器资源监控器用于采集容器的环境运行特征向量,所述容器性能测试池用于提供容器能耗训练数据集,所述容器能耗模型管理器用于接收容器性能测试池中的容器能耗训练数据集,构建实时估算容器能耗模型和检查当前容器能耗实时估算模型的状态,所述容器能耗缓存模块用于存储请求容器的能耗估算值,所述容器调度决策器用于根据请求容器的能耗估算值生成容器调度决策表,所述动态调整模块用于调整服务器数量和状态。本发明还提供一种面向容器集群的能耗优化资源调度方法,包括下述步骤:s1:服务器资源监控器周期性采集容器的运行环境特征向量;s2:容器能耗模型管理器检查当前的容器能耗实时估算模型状态,提取请求容器的自身特征向量;s3:合并步骤s1中的运行环境特征向量和步骤s2中的容器自身特征向量后,通过容器能耗实时估算模型估算出请求容器的能耗估算值,并存储到容器能耗缓存模块;s4:根据步骤s3中容器能耗缓存模块存储的容器能耗估算值,容器调度决策器以总能耗最小为目标进行容器调度计算,获得最优的容器调度决策表,并发送调度决策表到服务器;s5:遍历决策表,如果请求处理完则执行步骤s6;如果请求未处理完,动态调整模块则选择容器进行调度,依据调度决策表,激活被调度的服务器,生成并运行容器,或者将容器迁移到特定的服务器,或者将没有容器运行的服务器设置为休眠模式;s6:重复执行步骤s1-s5,直到系统运行结束。作为优选的技术方案,步骤s2中所述容器能耗实时估算模型状态包括未初始化状态,在未初始化状态下,所述容器能耗实时估算模型执行初始化模型的预处理,具体步骤如下:构建一个容器性能测试池,并预先向池中添加不同负载特征的容器;提取容器自身特征和容器运行环境特征,并结合获取容器运行时的实际能耗值,构建初始化的容器能耗训练数据集;采用初始化的容器能耗训练数据集训练容器能耗实时估算模型。作为优选的技术方案,步骤s2中所述容器能耗实时估算模型状态包括过期状态,在过期状态下,所述容器能耗实时估算模型执行更新模型的预处理,具体步骤如下:从实际生产环境中周期性地复制容器到容器性能测试池,迭代更新容器能耗训练数据集;根据更新后的容器能耗训练数据集,训练容器能耗实时估算模型。作为优选的技术方案,所述预处理的步骤在主流程之外,采用并行的工作模式执行,与主流程之间通过容器能耗实时估算模型的状态进行同步。作为优选的技术方案,所述容器能耗实时估算模型的建模步骤具体如下:初始化训练集,预先向容器性能测试池添加不同负载模式的容器;提取容器自身特征向量c=(c1,...,cm);提取容器性能测试池中容器所在的运行环境特征向量r=(r1,...,rk);构建容器能耗训练数据集的样本空间:合并容器自身特征向量c=(c1,...,cm)和运行环境特征向量r=(r1,...,rk)后形成单个容器能耗样本特征向量x=(r,c),样本数量设为n,形成的样本空间为x=(x1,x2,...,xn)t∈rn×p,其中xi∈rp表示维度长为p=k+m的单个容器能耗样本,样本的标签列数据为容器的实际能耗参数y=(y1,y2,...,yn)t∈rn;从实际生产环境中周期性地复制容器到容器性能测试池中,迭代更新容器能耗训练数据集;容器能耗模型管理器接收容器性能测试池中的容器能耗训练数据集,构建容器能耗实时估算模型。作为优选的技术方案,所述提取容器自身特征向量具体步骤为:提取容器镜像的元数据信息和运行参数,归一化处理后形成容器自身特征向量。作为优选的技术方案,所述容器能耗实时估算模型采用局部加权线性回归算法训练。作为优选的技术方案,所述容器能耗实时估算模型的训练步骤具体如下:估算单个容器能耗样本xi的输出值f(xi),如公式(1)所示:其中wm,w0均表示为模型参数,xim表示样本xi的特征m,w为模型参数的矩阵表示,wt表示模型参数矩阵w的转置;提取单个容器能耗估算值f(xi)和单个容器能耗实际值yi的均方差为损失函数j(w),如公式(2)所示:其中x为样本空间矩阵表示,y为训练集容器能耗数据的矩阵表示;计算目标函数j(w)的最小值,得到模型参数的解析解,其中xt表示样本空间x的转置,如公式(3)所示:采用局部加权的方式提升容器能耗实时估算模型的拟合度,得到模型参数如公式(4)所示:其中w是一个矩阵,用于给每个数据点赋予权重,使用高斯核对权重赋值,如公式(5)所示:其中x(i)与x为样本点,k为设定的参数,w(i,i)构成了一个对角矩阵w。作为优选的技术方案,步骤s4中的所述容器调度决策器以总能耗最小为目标进行容器调度计算的具体步骤如下:根据容器能耗实时估算模型获得在t时刻到达系统的容器请求在不同的服务器的能耗估算值其中下标i表示服务器编号,上标表示分配给服务器的容器请求为设置容器调度决策器,将在t时刻的容器调度决策表记为集合计算获得总体能耗最优的容器调度决策表χbest,约束条件为:其中将在t时刻新容器请求集合记为rci表示容器所需服务器资源i的数量,表示在t时刻的服务资源i已使用的量,表示在t时刻的服务器资源i的上限,表示在t时刻分配给服务器i容器请求的副本数量。本发明与现有技术相比,具有如下优点和有益效果:(1)与一般云数据中心能耗调度中将虚拟机作为调度研究目标不同,本发明将容器作为调度研究目标,提出了在caas的云计算架构下面向容器集群的能耗优化资源调度系统及其方法,节省了以容器虚拟化为基础的云计算数据中心的能耗。(2)本发明在研究容器能耗实时估算模型时充分考虑了容器负载特征,以及服务器节点、容器运行时环境的异构性,通过构建容器性能测试池来获取训练模型需要的训练数据集,并充分利用容器轻量、容器生成、迁移成本低、快速启动等特性,在运行过程中复制生产环境中的容器来扩充容器能耗训练数据集,来使容器能耗训练数据集更接近真实环境,从而能够在线优化容器能耗实时估算模型。(3)本发明提出面向容器集群的能耗优化资源调度系统及其方法,不仅从容器自身能耗角度优化了集群总能耗,还充分发挥异构服务器的不同物理资源特性,利用资源的互补性来优化容器的分配,可以组合多个资源利用率较低的容器到同一个性能较强的服务器节点上,将一些没有容器运行的服务器状态转变为休眠模式,从而更大程度上降低了数据中心的能耗。附图说明图1为本发明的面向容器集群的能耗优化资源调度方法的系统架构图;图2为本发明的训练容器能耗实时估算模型的流程图;图3为本发明的面向容器集群的能耗优化资源调度方法的流程图。具体实施方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。如图1所示,本实施例构建了一种面向容器集群的能耗优化资源调度系统(containerschedulingbrokeringsystemforenergyoptimization,cseo),通过建立容器能耗实时估算模型,先估算出输入系统的容器请求在所有可能被调度到的运行环境中的能耗,再找出总体能耗最优的调度方案,然后由该系统根据调度方案下发请求到具体的服务器节点来执行容器的生成/删除/运行/停止/迁移等操作,对于没有容器运行的服务器则将其状态转变为休眠态。该系统包括以下模块:(1)容器性能测试池(trainingbenchcontainerset,tbcs)负责提供容器能耗实时估算模型的容器能耗训练数据集。为了解决模型训练的冷启动问题,在初始化时,会预先向池中添加不同负载特征的容器,让它们在异构的容器运行环境中运行,并通过物理能耗测量工具如yocto-watt获取容器能耗的真实值。容器性能测试池会将这些数据作为训练集发送给容器能耗模型管理器,然后训练出初始阶段的容器能耗实时估算模型。为了保证模型准确性,在整个系统运行期间,会从生产服务器集群中复制多组容器到测试区域来扩充训练集,执行在线的模型优化;(2)容器能耗模型管理器(containerenergymodelmanager,cemm)负责训练和管理容器能耗实时估算模型,用于接收容器性能测试池中的容器能耗训练数据集,构建实时估算容器能耗模型和检查当前容器能耗实时估算模型的状态。用户请求会先调用该管理器,传入容器和运行环境的特征向量,估算出该容器在不同运行环境中的能耗值。在本实施例中,容器的运行环境为服务器节点;(3)容器能耗缓存模块(powerconsumptionpercontainertablemanager,ppc)负责缓存由cemm预测出的每一个请求容器ci在服务器节点(运行环境)sj上运行产生的能耗估算值(4)动态调整模块(dynamicrightsizingtriggeringmodule,drs)用于调整服务器数量和状态,负责调整处于运行状态(active)的服务器数量,并将没有容器运行的服务器节点转变为休眠模式;(5)服务器资源监控器(serverresourcemonitor,srm)用于采集容器的环境运行特征向量,会周期性收集每个服务器节点的cpu利用率、内存、硬盘io及网络带宽使用情况,以及该节点上容器运行时(containerruntime)如docker、rkt信息、go语言环境、gc工作时间与内存占用情况、容器镜像存储驱动类型(graphdriver)等,作为容器运行环境的特征参数;(6)容器调度决策器(containerscheduler,cser)用于根据请求容器的能耗估算值生成容器调度决策表,会根据ppc模块中存储的容器能耗估算值按照运行容器所需服务器总能耗最小的目标进行容器调度计算,获得能耗最优的容器调度结果。其中容器调度的计算方式为:比较请求容器放置(调度)到服务器节点上的每种调度方式服务器总能耗的预测值大小,选择服务器总能耗最小的一种调度方式作为容器调度的决策结果;(7)服务器(server)给容器提供运行环境,多个服务器组成服务器集群,放置于服务器机架上。在本实施例中,还提供一种面向容器集群的能耗优化资源调度方法,该方法以局部加权线性回归(lwlr)的容器能耗实时估算模型为基础。在本实施例中,基于局部加权回归(lwlr)的容器能耗实时估算模型建模步骤如下所示:m0.在初始化时,构建一个容器性能测试池,即tbcs(trainingbenchcontainerset,tbcs)。通过预先向池中添加不同负载特征的容器,来解决模型冷启动问题;m1.由于容器的运行模式是由该容器的镜像和运行参数同时决定的,因此提取容器镜像的元数据信息(metadata),结合容器的运行参数,执行归一化处理,形成容器自身特征向量c=(c1,...,cm);m2.考虑到服务器硬件异构、容器运行时(容器引擎、库/go语言版本等)异构和服务器当前负载信息对容器能耗的影响,提出容器运行环境的概念,即该环境包含了在某一服务器上影响容器运行的软硬件设施及其状态信息。提取tbcs中容器所在的运行环境的特征向量为r=(r1,...,rk);m3.合并m1和m2中的特征向量成为单个容器能耗样本x=(r,c)。假设样本数量为n,因此整个样本空间为x=(x1,x2,...,xn)t∈rn×p,其中xi∈rp表示维度长为p=k+m的单个容器能耗样本。将容器的实际能耗参数作为样本标签y=(y1,y2,...,yn)t∈rn,从而形成初始化的训练数据集;m4.容器能耗模型管理器(containerenergymodelmanager,cemm)模块会接收到容器性能测试池tbcs中的容器能耗训练数据集,构建实时估算容器能耗模型;m5.周期性从实际生产环境中复制容器到tbcs,迭代更新容器能耗训练数据集,然后再转入步骤m4。本实施例在实施过程中需要先训练出容器能耗实时估算模型,模型训练的步骤如图2所示。首先为了解决冷启动问题,会通过预先向容器性能测试池添加不同负载模式的容器的方式来初始化训练数据集;镜像作为容器运行的基础和运行参数一同决定了容器的运行模式,是影响容器运行时能耗的静态因素,在本实施例中可以通过提取该容器镜像的元数据信息(metadata)和运行参数作为数据集中容器的特征向量,表1为容器特征向量参数提取参考表,实际可提取得参数不仅限于此表。表1容器特征向量参数提取参考除了容器本身,服务器实时负载信息、服务器硬件参数、容器运行时信息等容器运行环境特征都会成为影响容器运行能耗动态因素,因此在本实施例中通过提取这些动态因素并与上文所述的静态因素结合,形成了容器在特定运行环境下的特征向量,然后根据实际测得容器能耗值构建出训练数据集;通过构造回归方程对数据进行拟合的方式,训练得到模型参数,并为每个模型设置一个有效时间或者误差范围;当模型过期或者估算误差过大时,就从生产环境复制部分实际运行的容器到容器性能测试池中,扩展训练数据集,并用新的数据集来更新模型。在本实施例中,模型具体的训练方法与过程如下:对于一个样本xi,它的输出值(估算的能耗)为公式1所示:其中wm,w0均表示为模型参数,xim表示样本xi的特征m,w为模型参数的矩阵表示,wt表示模型参数矩阵w的转置,在表示多元一次多项式乘积之和(方程含有多个一次幂的元,它们与各自的系数相乘)的时候,可以将公式写成矩阵与向量相乘的形式,为了满足矩阵相乘的数学条件,需要将矩阵进行转置;提取单个容器能耗估算值f(xi)和单个容器能耗实际值yi的均方差为损失函数j(w),如公式2所示:其中x为样本空间矩阵表示,y为训练集容器能耗数据的矩阵表示;为了使模型误差最小化,即目标函数j(w)取最小值,可以得到模型参数的解析解,其中xt表示样本空间x的转置,如公式3所示:为了解决传统回归模型估算时模型的欠拟合问题,采用局部加权的方式(lwlr),提升模型的拟合度,最终模型参数如公式4所示:其中w是一个矩阵,用来给每个数据点赋予权重,此处使用高斯核来对权重赋值,如公式5所示:其中x(i)与x为样本点,k为可设定的参数,决定了对附近的点赋予多大的权重,w(i,i)构成了一个对角矩阵w。在本实施例中,当获得一个处于激活状态的容器能耗实时估算模型时,对于输入到系统的请求,将通过如图3所示的流程来进行容器调度,具体步骤如下:s1:服务器资源监视器会周期性地采集服务器实时负载信息、服务器硬件参数和容器运行时信息,形成容器运行环境的特征向量;s2:容器请求到来时,会先检查容器能耗实时估算模型状态并进行相应的预处理,然后提取请求容器的特征向量;s3:结合步骤s1中容器运行环境的特征向量和步骤s2中请求容器的自身特征向量,通过容器能耗估算模型估算出请求容器在不同的环境下(服务器节点)运行时所产生的能耗值,并将结果存储到缓存模块;s4:根据步骤s3中容器能耗缓存模块存储的容器能耗估算值,容器调度决策器以总能耗最小为目标进行容器调度计算,获得最优的容器调度决策表,并发送调度决策表到服务器;s5:遍历决策表,如果请求处理完则转到步骤s6。如果请求未处理完,动态调整模块则选择一个容器进行调度,依据决策结果,激活被调度的服务器(若服务器已激活则忽略)后生成并运行容器,或者将某个容器迁移到特定的服务器,没有容器运行的服务器将进入休眠模式;s6:重复执行以上步骤s1-s5,直到系统运行结束。在本实施例中,步骤s2中容器能耗实时估算模型的状态共有未初始化态、激活态和过期态三种。除了处于激活态的模型,对于其它两种状态的模型,步骤s2会执行不同的预处理过程。在本实施例中,当模型处于未初始化状态时,预处理过程的具体步骤如下:s2p1:构建一个容器性能测试池,并预先向池中添加不同负载特征的容器,来解决模型冷启动问题;s2p2:提取容器自身特征、容器运行环境特征等并获取容器运行时的实际能耗值,构建初始化的容器能耗训练数据集;s2p3:基于局部加权线性回归(lwlr)方法,使用s2p2中的容器能耗训练数据集训练容器能耗实时估算模型;s2p4:标记模型已激活,预处理过程结束。在本实施例中,当模型处于过期状态时,预处理过程的具体步骤如下:s2q1:周期性从实际生产环境中复制容器到容器性能测试池,迭代更新训练数据集;s2q2:根据s2q1中新的数据集,重新训练容器能耗实时估算模型;s2q3:标记模型已激活,预处理过程结束。在本实施例中,为了提升整个系统的运行效率,解决因为预处理过程而造成主流程阻塞的问题,上述s2p1-s2p4和s2q1-s2q3均在主流程之外以并行工作流模式执行,与主流程之间只通过模型状态进行同步。在本实施例中,步骤s2中容器能耗实时估算模型的训练数据集样本空间构建过程为:容器的自身特征向量为容器镜像的元数据信息(metadata)和容器运行参数,表示为向量c=(c1,...,cm)。容器运行环境的特征向量为服务器当前负载信息、服务器硬件参数和容器运行时(容器引擎、库/go语言版本等)信息,表示为向量r=(r1,...,rk)。因此可以得出容器能耗训练数据集的样本空间如下:样本的特征向量为向量c和r合并后的向量,表示为x=(r,c)。假设样本数量为n,那么整个样本空间可记为x=(x1,x2,...,xn)t∈rn×p,其中xi∈rp表示维度长为p=k+m的单个容器能耗样本;样本的标签列数据为容器的实际能耗参数y=(y1,y2,...,yn)t∈rn。在本实施例中,步骤s4中的调度决策器以总体能耗最优为目标进行容器调度计算的具体步骤为:假设依据上述容器能耗实时估算模型计算出容器j在服务器(运行环境)i上运行时的能耗估算值为在t时刻新容器请求集合为在t时刻的调度决策为其中代表在t时刻分配给运行环境i新容器请求的副本数量;表示分配给该运行环境的容器请求为rc=(rc1,...,rck)代表容器请求所需的资源向量;代表在t时刻运行环境使用的资源向量;表示运行环境上资源i的限额。由于在本实施例中调度的优化目标是总体能耗值最小化,因此可以获得如下目标函数:约束关系为:求解以上目标方程即可获得最优的调度结果χbest。根据最优的调度结果,下发执行命令到具体的运行环境上,当某个服务器节点上容器数量为0,则表明该服务器节点需要处于休眠状态,执行休眠操作,反之则应该处于启动状态。上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1