徐胜超,杨 波
(广州华商学院 数据科学学院,广东 广州 511300)
如何让云计算变得更加节能高效,是当今政府和企业都在关注的重点问题[1-2]。容器技术[3]是近年来云计算行业发展中重要的一部分,容器虚拟化技术及其平台更是凭借自身部署快、性能高、启动迅速等优势,被广泛应用于各大云服务项目中。但是容器云资源长期运行时,会增加不必要的能耗消耗,为提升容器的使用性能,降低容器云资源能耗,提出高效的容器云资源低功耗部署方法[4],就变得尤为迫切。
文献[5]提出基于多维资源空闲率权重的容器云多维资源利用率均衡调度方法,该方法综合考虑物理节点CPU、内存、磁盘、网络带宽空闲率和已部署的容器应用个数等因素,利用模糊层次分析法自动建模求解容器应用多维资源权重参数。文献[6]提出基于遗传算法的容器云资源配置优化方法,该方法将容器云平台数据中心整体能耗最低作为目标函数,设置物理主机与虚拟机对应、虚拟机与容器对应等约束条件,利用遗传算法通过染色体表达、初始化、交叉操作、变异操作以及设置适应度函数5个步骤求解目标函数,获取最优容器云环境资源配置结果。文献[7]提出容器云环境虚拟资源配置策略的优化方法,首先,提出容器云虚拟资源的配置和迁移方案,发现物理机选择策略对数据中心能耗有重要影响;其次,通过研究主机利用率与容器利用率,主机利用率与虚拟机利用率,主机利用率与数据中心能耗之间的数学关系,建立容器云数据中心能耗的数学模型,定义出优化目标函数;最后,通过对物理机的能耗函数使用线性插值进行模拟,依据邻近事物相类似的特性,提出改进的最佳能耗优先物理机选择算法。上述三种方法在提高容器云资源利用效率方面都有很好的改善,但是应用到云资源部署的过程中还是存在能耗较高的问题,影响了容器资源部署效果。
人工鱼群算法是通过模仿鱼类行为方式,从而提出来的一种基于动物自治体的优化方法,它能够很好地解决非线性函数优化等问题。人工鱼群算法的收敛速度较快,可以用来解决有实时性要求的问题,针对一些精度要求不高的情况,可以用来快速得到一个可行解。由于容器在云资源低能耗部署过程中,需要通过用户需求调整容器低能耗部署方案,是动态优化问题,对于模型的求解效率要求较高。因此,该文通过人工鱼群算法快速确定云资源能耗极值变化时间,寻找出满意的解域,制定最佳的云资源低能耗部署方案。
容器[8-9]是提供程序运行的独立空间,Docker容器平台负责容器的生命周期管理以及相关资源信息的管理。Docker容器技术[10]的出现,为容器平台的诞生打下了坚实的基础。
容器云平台开展资源低功耗部署时,平台基本单位为容器,封装软件为平台运行环境。容器云平台主要侧重于容器的编排以及资源的部署、共享,具体的资源组织结构如图1所示。
图1 容器云平台资源组织结构
容器云平台[11-12]包括应用、开发、资源共享、设备、集群服务等层级。资源配置模块与项目开发模块位于集群服务层中,该文将研究的云资源低能耗部署方法应用于该资源配置模块中,实现云资源的低能耗部署配置。
设在有m个物理主机和n个容器的云平台中,云资源部署的能量消耗主要来自固定和迁移两部分,经实验发现,云资源能耗与物理主机的资源利用率有较大关联,因此t时刻物理主机的能耗见公式(1):
Ehost(t)=E(Ucpu(t))+E(Umem(t))+E(Udisk(t))+E(Ubw(t))
(1)
其中,E(Ucpu(t))表示物理主机CPU的能耗,E(Umem(t))表示物理主机的内存能耗,E(Udisk(t))表示物理主机的磁盘能耗,E(Ubw(t))表示物理主机的网络带宽能耗。这样第i个物理主机在[ta,tb]时间段的总体能量消耗Ei可以按照公式(2)来计算:
(2)
考虑到容器云资源调度过程中的能耗除了硬件资源利用率实时变化产生的能耗外,还包括容器迁移能耗。基于系统各部位的资源利用率以及能耗公式得出容器迁移开销,其计算见公式(3):
(3)
其中,j代表容器,vj(t)代表t时刻的第j个容器处理器利用率,t1代表容器开始迁移的时间,tkj代表容器完成全部迁移所需的时间,Vj代表容器迁移开销。
由于容器迁移开销是影响容器云资源调度能耗的重要影响因素,因此容器云资源能耗分析过程中重点计算容器迁移开销。整个容器云平台的能量消耗见公式(4):
(4)
由于云计算环境中的任务呈现多样性,导致任务在处理时不仅有实时的在线处理任务,还有若干异步任务。所以云数据中心运行时,容器、虚拟机[13-14]以及物理机都会随着任务的进行增加负载情况。其中,由于物理机任务完成时间较早,所以当物理机完成任务,而容器未完成任务时,会出现短暂的资源浪费。
在容器云环境中,虚拟机迁移是保障物理服务器负载均衡的关键。迁移过程中,通常分为触发迁移时间、迁移目标服务器以及迁移位置3个阶段。迁移触发时间主要依据数据中心的资源部署策略来实现。迁移过程如下:
(1)统计物理主机资源利用率,通过统计将物理主机[15]中过载的利用率信息保存在相关列表中。
(2)基于列表信息,对其展开降序排列,选取对应的容器迁移目标。
(3)依据排列的顺序从列表中选取对应物理主机,并将其作为迁移过程中的源物理主机,依据顺序完成迁移后,保证源物理主机利用率不超载,若超载则迁移不成功,需要依据上述流程继续寻找迁移目标。
(4)统计物理主机中资源利用率潜在信息,并将其存储在相应列表中。
(5)选取一台不在列表当中的物理主机作为容器迁移目标,将部署于源物理主机上的容器全部迁移至目标物理主机中,完成容器的迁移。
依据上述容器云虚拟资源的迁移流程可知,容器在云资源部署以及迁移过程中,容器云都需要面对物理主机的选取问题,物理主机是整个数据中心[16]的最大能源消耗部件,所以,找出物理主机与容器、虚拟机之间的能耗计算关系,是完成容器云资源低能耗部署的关键。
容器运行时,可以通过Hypervisor采集容器的虚拟资源运行状态参数,但是由于采样参数过多,会对物理机的运算带来额外能耗负担,所以该文在建立数据中心能耗模型时,通过灰色关联分析方法[17],完成容器运行状态参数的提取。设定容器虚拟能耗为P,容器运行参数比较序列设定为(p1,p2,…,pn),通过关联系数计算方法,完成参数比较序列的采样,过程如下式所示:
(5)
式中,容器比较序列与P之间的灰色关联值标记β(P,pi)形式,容器序列的两级最小值分别用P(l)、pi(l)表述,常数标记i、n形式。设定βi≥0.6为参数选取阈值,完成容器运行状态的选取[18-19]。
设定人工鱼群个体状态值为Qi,食物浓度标记Pi,鱼群视野范围标记σ,最大移动步长标记u,通过人工鱼群的行为分析,总结鱼群觅食行为,获取容器云资源能耗部署模型全局最佳值,完成最佳部署方案的制定。流程如下:
步骤1:初始化人工鱼群参数,建立人工鱼群,并通过容器云资源部署模型对鱼群实施编码处理,预测任务执行时间。
步骤2:开展鱼群个体觅食、聚群追尾等行为,估计当前状态下,任务搜索所需时间。
步骤3:基于评价函数完成鱼群行为评价,剔除个别个体,更新鱼群行为。过程中,若迭代次数大于设定的阈值,则需要选取相应种群个体完成跳跃行为。
步骤4:若鱼群多次跳跃后公告板差值不变,鱼群结束搜索,将搜索结果中的最佳全局值,算法结束。
鱼群编码[20-21]就是将容器云资源低能耗部署问题的解空间与算法搜索空间互相映射的过程。根据容器云虚拟资源的迁移过程,使用人工鱼群算法对容器云资源的低能耗部署模型进行求解。设定容器数量为x,物理主机数量为y,二进制的编码搜索空间设定2x×y,多值编码搜索空间为yx,从而完成鱼群编码b=(c1,c2,…,cx)。
建立评价函数:
人工鱼群搜索过程中,需要建立相应的评价函数确定鱼群个体的优劣,容器云资源能耗部署模型具备相关约束条件,所以若鱼群寻找的最佳值不能满足约束条件,需要建立相关的目标函数,辅助鱼群完成全局最佳值的搜索,建立的容器云资源低能耗部署模型的目标函数如下式所示:
f(x)=
(6)
式中,建立的容器云资源低能耗部署模型目标函数标记f(x)形式,惩罚系数标记δ形式,目标向量用η表述,容器云资源低能耗部署模型相关参数标记D、E、F、G形式。
基于上述建立的容器云资源低能耗部署模型目标函数,结合容器资源部署时的负载均衡问题,建立评价函数,过程如下式所示:
g(x)=1/f(x)
(7)
式中,建立的鱼群个体评价函数用g(x)表述。
人工鱼群中的个体数量越多,收敛速度越快,搜索精度越高。依据弱肉强食原则,在人工鱼群算法运行时,剔除搜索性能较差的个体,这样不仅能够满足算法初期对收敛速度的要求,还能够降低算法的复杂程度。搜索性能较差的个体离部署模型的最优解较远,对鱼群的影响较为负面,剔除该人工鱼有利于算法的收敛。
跳跃行为有利于提升人工鱼群算法的全局搜索能力。鱼群出现跳跃行为,说明云资源集群中节点差异较小,鱼群容易进入局部最优。跳跃行为能够强行改变鱼群的参数,使鱼群跳出局部区域,保障鱼群的全局搜索能力。
通过上述人工鱼群算法[22-23],调整容器云资源低能耗部署策略,建立容器云资源低能耗最佳部署方案,就实现了容器云资源的低能耗部署。
为了验证上述容器云资源低能耗部署方法的整体有效性,需要对此方法展开测试。实验环境配置如表1所示。
表1 实验环境配置
3.2.1 参数设置
设置实验初始条件如表2所示。
表2 实验初始参数设置
3.2.2 比较对象
实验选取云资源部署平均最大等待时间、最大响应时间、容器最大平均任务队列长度以及容器云资源能量损耗4个指标对容器资源部署方法进行测试。分别采用基于人工鱼群算法的容器云资源低能耗部署方法(方法1)、文献[5]方法(方法2)、文献[6]方法(方法3)、文献[7]方法(方法4)检测4种方法的资源部署效果。
(1)云资源部署平均最大等待时间测试。
云资源部署平均最大等待时间是容器云资源低能耗部署时的最长平均延迟时间,数值越高部署效果越差。采用方法1、方法2、方法3以及方法4开展容器资源低能耗部署时,测试上述4种方法的平均最大等待时间,测试结果如图2所示。
图2 不同方法的平均最大等待时间测试结果
分析图2实验数据可知,方法2、3、4测试出的平均最大等待时间在第10次时均超过40 ms,最高为60 ms,而方法1平均最大等待时间仅33 ms;随着检测次数的增加,4种方法测试出的平均最大等待时间都呈现出不同程度的上升趋势。但同次数测试结果对比,方法1测试出的容器云资源部署平均最大等待时间是4种方法中最低的,检测次数为50时平均最大等待时间不超过70 ms,由此可见应用方法1可缩短平均最大等待时间。这主要是因为方法1在容器云资源低能耗部署前对容器云资源配置开展了详细的分析,并且通过人工鱼群算法,调整容器云资源低能耗部署策略,建立容器云资源低能耗最佳部署方案,所以该方法在云资源低能耗部署时的平均最大等待时间短。
(2)最大响应时间测试。
最大响应时间是容器云资源部署过程中的最长延迟时间。采用方法1、方法2、方法3以及方法4开展容器资源低能耗部署时,测试上述4种方法的最大响应时间,测试结果如图3所示。
图3 不同方法的最大响应时间测试结果
测试过程中,部署最大响应时间越长,说明部署过程的部署效果越差,反之则越好。分析图3可知,方法1、2、3、4在检测次数为10次时,最大响应时间相差不大,均低于30 ms,方法1最大响应时间最短;随着检测次数的增加,4种方法测试出的最大响应时间都出现了不同程度的上升,方法3上升效果最明显。方法1的最大响应时间均未超过45 ms,其他方法最大响应时间最长超过100 ms;对比同次数测试结果,方法1测试出的容器云资源低能耗部署响应时间是4种方法中最低的,说明方法1在开展容器资源低能耗部署时的部署效果最优。是因为该文通过制定的模型约束条件建立容器云资源的低能耗部署模型,再使用人工鱼群算法对模型求解,搜索出部署模型的全局最佳值,制定最佳部署方案,从而提升了部署效率。
(3)容器最大平均任务队列长度测试。
容器最大平均任务队列长度能直观地体现容器资源部署时的容器负载情况。采用方法1、方法2、方法3以及方法4开展容器资源低能耗部署时,测试上述4种方法的容器最大平均任务队列长度,查看4种方法的容器负载情况。测试结果如图4所示。
最大平均队列长度是容器运行时间内,容器部署任务队列的平均长度最大值,实验过程中,任务队列长度越长,说明部署方法的排队时间越长,容器负载就越大,反之则越小。分析图4可知,方法1在初始部署任务时,与方法2、3、4对比队列长度最短。随部署时间增大,4种方法的任务队列长度均有所增长;但比较4种方法,方法1在相同的部署时间内测试出的任务队列长度是4种方法中最短的,说明方法1在云资源部署时的容器负载小。是因为该文基于建立的容器云资源低能耗部署模型的目标函数,结合容器资源部署时的负载均衡问题,建立评价函数,并利用全局搜索能力较强的人工鱼群算法对模型求解,搜索出部署模型的全局最佳值,从而降低了云资源部署时的容器负载。
(4)容器云资源平均能量损耗测试。
采用方法1、方法2、方法3以及方法4,对24小时内的容器云资源平均能量损耗进行测试,测试结果如表3所示。
表3 不同部署方法的容器云资源平均能量损耗测试结果
根据表3中的数据可知,经过多次实验,方法1的容器云资源平均能量损耗在25 672 kJ以内;方法2、3、4的容器云资源平均能量损耗均高于30 000 kJ,高于方法1,方法1的容器云资源平均能量损耗最低,说明利用该文提出的基于人工鱼群算法的容器云资源低能耗部署方法进行容器云资源低能耗部署的效果最好。
综上所述,方法1在开展容器资源部署方法测试过程中,测试出的部署效果高于其他方法,证明方法1在资源部署时,具备有效性。
随着国家节能减排的要求增多,使容器云资源低能耗部署方法变得尤为重要。针对传统资源部署方法中存在的问题,提出基于人工鱼群算法的容器云资源低能耗部署方法。该方法通过容器云资源配置分析结果,建立云资源的低能耗部署模型;然后使用人工鱼群算法获取模型最佳值,建立最佳部署策略,完成容器云资源的低能耗部署。由于该方法在选取容器运行参数时存在误差,今后会针对该项缺陷,继续对该部署方法实施优化处理。