徐胜超,叶朝武
(广州华商学院 数据科学学院,广州 511300)
如何让云计算变得更加节能高效,是当今政府和企业都在关注的重点问题。容器云资源的管理和部署都是以容器为基础的,不需要涉及硬件,因此它的重量更轻,启动速度也更快。但是由于容器云资源较大,数据中心能耗较高,致使容器云资源利用率较低,因此,需要对容器云资源完成低能耗部署,有效降低数据中心的能耗,提高容器云资源利用率[1]。
当前文献[2]提出基于资源预留的容器云部署方法。文献[3]在云平台用户个性化资源需求与虚拟机动态迁移技术有效集成的基础上,设计了一种可根据用户实际资源需求动态调整的节能虚拟机部署方法,将虚拟机部署框架与基于双光标控制机制的虚拟机部署选择算法相结合,有效地控制云数据中心中必要的活动物理节点数量,并且减少虚拟机迁移同步的频率。文献[4]提出了一种基于剪枝算法和深度强化学习的资源管理和任务部署方法。文献[5]提出面向大数据复杂应用的虚拟集群动态部署模型方法,该方法在容器技术支持情况下建立了一个部署模型,依据资源的动态变动,利用该模型对虚拟群体实行调整和计算,其中包含节点类型的计算和节点规模的调整,并利用该模型完成对用户作业的部署,实现资源部署的目的,该方法建立的模型不够全面,存在请求接收率差的问题。
文献[6]提出基于多维资源空闲率权重的容器云多维资源利用率均衡调度方法。文献[7]提出基于遗传算法的容器云资源配置优化方法,该方法将容器云平台数据中心整体能耗最低作为目标函数,设置物理主机与虚拟机对应、虚拟机与容器对应等约束条件,利用遗传算法通过染色体表达、初始化、交叉操作、变异操作以及设置适应度函数5个步骤求解目标函数,获取最优容器云环境资源配置结果。通过对比分析认为,上述方法虽然均完成了容器云资源部署,但是容器云资源的利用率和负载均衡度仍然比较低。
本文将贪心算法应用到容器云资源低能耗部署方法的优化设计工作中,在约束条件下,构建容器云资源能耗模型,对云资源进行虚拟化处理,整合容器云资源后,对物理机负载状态检测,利用贪心算法均衡调度容器云资源负载,然后通过容器云资源编排重组,达到资源部署低能耗的目的。最后通过构造系统仿真平台,验证了贪心算法优化容器云资源低能耗部署策略的正确性和优秀性能。
容器是提供程序运行的独立空间,Docker容器平台负责容器的生命周期管理以及相关资源信息的管理。Docker容器技术的出现,为容器平台的诞生打下了坚实的基础[8]。容器云平台开展资源低功耗部署时,平台基本单位为容器,封装软件为平台运行环境。容器云平台主要侧重于容器的编排以及资源的部署、共享,具体的资源组织结构如图1所示。容器云平台包括应用、开发、资源共享、设备、集群服务等层级。资源配置模块与项目开发模块位于集群服务层中,本文将研究的云资源低能耗部署方法应用于该资源配置模块中,实现云资源的低能耗部署配置。
图1 容器云平台资源组织结构图
容器运行时,可以通过Hypervisor采集容器的虚拟资源运行状态参数,但是由于采样参数过多,会对物理机的运算带来额外能耗负担,所以本文在建立数据中心能耗模型时,通过灰色关联分析方法[9],完成容器运行状态参数的提取。设定容器虚拟能耗为P,容器运行参数比较序列设定(p1,p2,…,pn),通过关联系数计算方法,完成参数比较序列的采样,过程如下式所示:
(1)
式中,容器比较序列与P之间的灰色关联值标记β(P,pi)形式,容器序列的两级最小值分别用P(l)、pi(l)表述,常数标记i、n形式。设定βi≥0.6为参数选取阈值,完成容器运行状态的选取。
云资源部署效果的测试指标为云资源利用率和物理机负载均衡系数,则云资源利用率的数值结果为:
(2)
物理机负载均衡系数的数值结果为:
(3)
Ptotal=PPhysics+Pcloud+Ptransfer
(4)
式中,PPhysics、Pcloud和Ptransfer分别为物理机能耗、云服务器能耗和虚拟机迁移能耗,计算得出能耗量越低,说明对应部署方法的性能越优。值得说明的是,在容器云资源的部署与运行过程中,能量消耗可以分为静态能耗和动态能耗两个部分,其中静态能耗包括物理机能耗PPhysics与云服务器能耗Pcloud,而动态能耗则是容器迁移能耗Ptransfer(t)。
其中物理机能耗的计算公式如下:
PPhysics=Pidle+(Pmax-Pidle)*ηCPU
(5)
式中,参量Pidle和Pmax分别为物理机在空闲和满负载状态下的能量消耗值,该参数的具体取值由物理机的硬件条件决定,ηCPU表示的是物理机的CPU利用率,该值与物理机状态、虚拟机CPU利用率以及CPU资源部署量有关[10]。云服务器能耗Pcloud计算方法为公式(6):
Pcloud=r*Cmax+(1-r)*Cmin
(6)
式中,r表示云服务器的CPU利用率,Cmax表示云服务器忙时的最大能量消耗,Cmin云服务器闲置时产生能耗。将CPU利用率的计算结果代入到公式(5)中,便可得出物理机能耗的求解结果PPhysics。同理计算云服务器不同状态下的能耗总和Pcloud,即可得出服务器能耗的计算结果[11]。
根据容器云平台中资源的实时变化,虚拟机及其内部容器的实时位置会发生改变,因此在能耗计算之前首先需要判定虚拟机或容器是否发生迁移。考虑虚拟机和容器在迁移过程中内存镜像传递的次数,得出虚拟机迁移能耗,也就是动态能耗。虚拟机迁移能耗计算方法为公式(7):
Ptransfer=k*E+(1-k)E*u
(7)
式中,k表示虚拟机完全闲置时产生能耗所占百分比,E表示虚拟机忙时的最大能量消耗,u表示虚拟机的CPU利用率。
最终通过累加求和的方式,得出得出容器云资源部署与运行过程中的总能耗值[12]。在实际的容器云资源部署过程中,由于静态能耗不会因为虚拟机与容器的改变而产生影响,因此本文的算法主要保证迁移能耗最低即可。
Docker或者Cloudsim5.0这种容器云管理平台都自带这方面的功能,本文的贪心算法的部署过程都是以这些容器云平台为基础进行改进。物理机负载状态检测的目的是判断当前物理机是否需要将虚拟机以及容器迁移到其他物理机中,同时也需要判断该物理机是否能够支持外部容器资源进入[13]。将物理机的负载状态分为绝对过载Overload、绝对低载UnderLoad和正常Normal三种状态。
在实际的检测过程中,利用物理机的后台运行程序,可以直接得出当前负载值,而下一时刻负载预测值可以根据物理机历史负载数据变化规律以及容器云资源迁移任务得出[14]。经过判断,若当前物理机处于正常运行状态,则可以将其作为容器云资源调度的目标主机,但该设备的优先级较低,且无须从中调取容器云资源[15]。若物理机处于绝对低负载,则在容器云资源部署过程中,可以直接将未分配的资源调度到该物理机中,并赋予该设备较高的选择优先级。如果当前物理机处于绝对过载状态,则该设备无法作为资源迁移的目标主机,且必要时需要从中调取部分资源分配给其他物理机。
由于云计算环境中的任务呈现多样性,导致任务在处理时不仅有实时的在线处理任务,还有若干异步任务。所以云数据中心运行时,容器、虚拟机[16-17]以及物理机都会随着任务的进行增加负载情况。其中,由于物理机任务完成时间较早,所以当物理机完成任务,而容器未完成任务时,会出现短暂的资源浪费。
在容器云环境中,虚拟机迁移是保障物理服务器负载均衡的关键。迁移过程中,通常分为触发迁移时间、迁移目标服务器以及迁移位置3个阶段。迁移触发时间主要依据数据中心的资源部署策略来实现。迁移过程如下:
1)统计物理主机资源利用率,通过统计将物理主机中过载的利用率信息保存在相关列表中。
2)基于列表信息,对其展开降序排列,选取对应的容器迁移目标。
3)依据排列的顺序从列表中选取对应物理主机,并将其作为迁移过程中的源物理主机,依据顺序完成迁移后,保证源物理主机利用率不超载,若超载则迁移不成功,需要依据上述流程继续寻找迁移目标。
4)统计物理主机中资源利用率潜在信息,并将其存储在相应列表中。
5)选取一台不在列表当中的物理主机作为容器迁移目标,将部署于源物理主机上的容器全部迁移至目标物理主机中,完成容器的迁移。
依据上述容器云虚拟资源的迁移流程可知,容器在云资源部署以及迁移过程中,容器云都需要面对物理主机的选取问题,物理主机是整个数据中心的最大能源消耗部件,所以,找出物理主机与容器、虚拟机之间的能耗计算关系,是完成容器云资源低能耗部署的关键。
贪心算法是一种简单、快速的设计某些问题求最优解的技术,它的特点是不从全局的最佳状态出发,而仅以局部最优的形式来解决问题,从而节约了在寻求最佳方案的过程中所耗费的时间。在作出贪心的抉择时,采用反复的方法,每次作出一个抉择,问题的大小就会缩小,从而使每个步骤都能获得最优的结果。
在容器云中,在负载状态检测完毕后,要将部分过载主机中的虚拟机转移出来。它不仅可以保证容器云平台的高性能,还可以降低系统的能量消耗[18]。对所有的主机都采用过载检测法,以判断主机是否超载,如果超载,则采用虚拟机选择策略,选择虚拟机进行迁移,直至主机不过载为止。容器云资源的负载均衡调度原理如图2所示。
图2 容器云资源负载均衡调度原理
根据构建容器云资源能耗模型可以看出,容器云资源部署与运行的能耗与迁移时间以及CPU利用率有关,因此利用贪心算法选择需要部署的容器云资源,并按照图3表示流程,实现容器云资源的迁移与调度。
图3 利用贪心算法的容器云资源调度流程图
按照上述流程分别选择被迁移的虚拟机和目的迁移节点,在过载物理机环境中选择CPU资源的利用率最高的虚拟机作为待迁移虚拟机,选择距离该物理机最近的处于绝对低载状态的物理机作为目的迁移节点。将选择的虚拟机保存到列表OverLoadList,并根据CPU利用率利用贪心算法进行降序排列,按照顺序将被迁移物理机中的虚拟机迁移到目标物理机中,并保证目标物理机不过载,直到迁移源物理机不再过载[19-21]。
若目标物理机容纳所有的待迁移虚拟机,则需要选择其他绝对低载物理机作为新的目标物理机,按照上述方式进行目标迁移,直到OverLoadList列表中的过载虚拟机被处理完成。容器云资源迁移调度完成后,更新其位置信息,并在部署容器中运行相应的云任务[22]。
根据云计算平台的初始化部署策略,可以获得容器云资源的初始化部署方案,综合考虑用户的需要和资源利用的动态,采用能耗均衡加权部署方法实现资源初始化部署[23]。
以测试基于贪心算法的容器云资源低能耗部署方法的应用性能为目的,分别从容器云资源的部署效果和能量消耗两个方面进行性能测试,并通过与传统云资源部署方法的对比,体现出贪心算法在云资源部署工作中的应用优势。
本文在NS2.0(Network Simulator网络仿真器)仿真软件、Windows XP操作系统、Intel(R)Celeron(R)2.6 GHz处理器下进行实验测试。以 Docker swarm kit为核心,建立了一个容器云平台。在此基础上,采用服务器组成了节点集群。各服务器的可用度指数是相同的,都是0.95,所以容器集群中的每一个节点都是相同的。这表示对于相同的服务,在容器集群中的任何一个节点上,对于服务的总体可用性都有相同的影响。平台环境详情如表1所示。
表1 容器云平台实验环境
为降低测试时延及网络稳定性,采用Docker镜像的本机二进制档案安装方法,以设定相关的环境[24]。所有的服务要求都被打包成一个云任务,一个虚拟机可以在同一时间执行多个云任务。根据需要的物理资源,这些初始化的虚拟机依次分配到已打开的主机部件[25]。
实验采用的样本数据为AuverGrid资源分配数据集,该数据集记录了一个容器集群15天的运营状况,包括364 547项服务,每隔2分钟对容器资源使用数据进行记录与采集。实验设置容器云平台中虚拟机的数量为1 000个,不能虚拟机的类型与粒度的基本运行参数如表2所示,这样可以覆盖大部分任务的情况,不失一般性。
表2 容器云平台中虚拟机类型参数设置表
将上述虚拟机资源存储到容器云平台中。在不考虑物理机负载均衡的前提下,将准备的容器虚拟机资源随机分配到各个物理机中,记录各个物理机的资源量,以此作为容器云资源的初始部署数据。
根据实验目的,从云资源部署效果和能量损耗两个方面设置性能量化测试指标。为了体现出基于贪心算法的容器云资源低能耗部署方法的性能优势,实验中采用了文献[1]方法、文献[2]方法作为实验的对比方法,在性能测试过程中,3个部署方法处理的云资源以及部署任务数量均相同。
3.4.1 容器云资源部署结果
图4(a)和图4(b)表示的是文献[1]方法和基于贪心算法的容器云资源低能耗部署方法的容器云资源部署结果。
图4 容器云资源部署结果
根据图4(a)可知,文献[1]方法在物理机1和物理机2下的容器云资源低能耗部署后的云资源量相差较大。根据图4(b)可知,无论是物理机1还是物理机2,基于贪心算法的容器云资源低能耗部署方法进行的容器云资源低能耗部署后的云资源量均一致。
3.4.2 利用率和负载均衡度测试结果
通过理论分析部分的公式(2)我们可以得出文献[2]方法和基于贪心算法的容器云资源低能耗部署方法的资源利用率的部署结果。统计相关数据得出部署效果的测试对比结果,如图5所示。
图5 两种方法的容器云资源利用率对比结果
通过理论分析部分的公式(2)也可以得到负载均衡度的实验结果。从图6中可以直观的看出基于贪心算法的容器云资源低能耗部署方法的负载均衡度始终高于文献[2]方法的部署资源,且贪心算法的负载均衡度更接近1,由此证明贪心算法的资源部署方法的部署效果更佳。是因为本文采用负载平衡策略,在两个结点间找到一对满足交换条件的容器,从而减少结点的碎片率,并实现负载均衡。
图6 两种方法的容器云资源负载均衡对比结果
3.4.3 容器云资源能耗测试结果
为了进一步验证贪心算法的有效性,在一天24小时内文献[1]方法、文献[2]方法和本文方法的容器云资源能量损耗的测试数据如表3所示。
表3 文献[1-2]方法和贪心算法能量损耗测试数据表
由于3种资源部署方法使用的物理机与云平台型号与结构均相同,且物理机能耗PPhysics和云服务器能耗Pcloud属于静态能耗,因此数据相同且不会发生变化。我们这里主要计算的是动态能耗Ptransfer,根据公式(7)即可得出文献[1]方法、文献[2]方法和基于贪心算法的容器云资源低能耗部署方法的总体能耗值Ptotal。
从表3可以看出,统计了8次实验结果,贪心算法法的总能耗值Ptotal最高值为25 873 kJ,最低值只有20 221 kJ,比文献[1]和文献[2]的方法节省一半以上的能耗,本文方法的容器云资源部署能耗更低。
针对容器云资源存在部署能耗高和云资源利用率低、负载不均衡的问题,提出基于贪心算法的容器云资源低能耗部署方法。综合考虑了物理机的利用率和单位时间的消耗,在保证物理机的使用效率的基础上,选取低功耗的物理机作为虚拟机、容器的目标迁移物理机,从而有效地减少了以容器为基础的数据中心的总能量消耗,对于云平台的管理运行以及云资源的有效利用均具有较好的参考价值。但是本文在研究的过程中,没有考虑容器云资源低能耗部署时间,使云资源低能耗部署效率降低,为此,在接下来的研究中,需要对算法进行改进,提升容器云资源低能耗部署效率。