徐胜超,熊茂华
(广州华商学院数据科学学院,广东 广州 511300)
目前云计算研究领域重视云计算环境中的虚拟资源的优化配置[1-4]。需利用动态的寻优方法获取最佳的资源配置优化效果,提升资源配置优化调度效率[5-7]。云计算发展过程中,容器技术对云计算平台发展影响巨大。利用容器虚拟化技术所建立的容器云平台具有启动速度快、运行性能高以及容易迁移的优势[8-11]。容器云环境中包含众多虚拟资源,虚拟资源配置具有极高的实践意义。
目前针对虚拟机以及虚拟资源的研究众多,文献[12]提出了一种基于最佳能耗优先物理机选择算法的虚拟资源配置策略,首先提出容器云虚拟资源的配置和迁移方案,发现物理机选择策略对数据中心能耗有重要影响,其次通过研究主机利用率与容器利用率、主机利用率与虚拟机利用率、主机利用率与数据中心能耗之间的数学关系,建立容器云数据中心能耗的数学模型,定义出优化目标函数,最后通过对物理机的能耗函数使用线性插值进行模拟,依据邻近事物相类似的特性,提出改进的最佳能耗优先物理机选择算法。文献[13]提出了一种基于多种群遗传算法的优化部署策略,对最优个体进行高斯学习,避免陷入局部最优,获取极高的配置优化效果。但是上述方法存在配置容量较低、响应时间过长以及资源配置优化过程中耗费过多资源的问题。
而遗传算法是人工智能技术中应用极为广泛的技术,将遗传算法应用于容器云资源配置优化中可获取极高的优化效果。针对以上研究存在的不足,本文提出一种基于遗传算法的容器云资源配置优化,利用遗传算法所具有的快速搜寻最佳路径的优势,解决云环境下的虚拟资源配置优化问题。通过实验验证本文方法具有较高的资源配置优化有效性,应用于容器云资源配置优化中,具有很好的实用性。
针对容器云平台中的虚拟资源配置实施优化,将容器技术与虚拟化技术结合,所构建的容器云平台架构如图1所示。
图1 容器云平台的层次结构
容器云平台中包含共享资源层、设备层以及集群服务层等层。资源配置模块位于集群服务层,将所研究的资源配置优化方法应用于资源配置模块中,实现容器云环境虚拟资源配置的有效优化。
通过容器云环境虚拟资源配置维护建立容器与虚拟机以及虚拟机与物理主机间配置情况[14]。设容器云平台数据中心中包含容器、虚拟机以及物理主机数量分别为S、N、M。
4)用ηi={ηi,1,ηi,2,…,ηi,N}与λi={λi,1,λi,2,…,λi,S}分别表示物理主机的虚拟机配置以及虚拟机的容器配置,当vmj与cj部署于gi与vmi上时,则ηi,j=1,λi,j=1;否则ηi,j=0,λi,j=0。ηi与λi分别为N元向量以及S元向量。容器云数据中心配置状态分别用矩阵A=(η1T,η2T,…,ηMT)T与矩阵B=(λ1T,λ2T,…,λNT)T表示,矩阵大小分别为M×N与N×S。
5)容器云环境虚拟资源数据中心资源配置应符合以下约束条件:
①虚拟机配置于物理主机gi上时,物理主机所提供资源需高于虚拟机的硬盘、内存等全部资源。
②容器配置于虚拟机vmi上时,虚拟机所提供资源需高于容器的硬盘、内存以及带宽之和[16]。
③容器配置于虚拟机vmi上时,虚拟机CPU资源需高于全部容器CPU工作负载之和。
⑥不可多台物理主机配置一台虚拟机。
(1)
⑦不可多台虚拟机配置一台容器。
(2)
一般情况下容器云平台中主要能源消耗的为物理主机。用γi(t)、πi(t)与μi(t)表示时间为t时,虚拟机vmi、物理主机gi以及容器ci的CPU利用率。
①用λj表示容器配置于虚拟机vmi中的状态,时间为t时,vmi的CPU利用率表达式如下:
(3)
②前面提到ηi为虚拟机配置于物理主机vmi中的状态,时间为t时,物理主机gi的CPU利用率表达式如下:
(4)
③时间为t时,物理主机能耗与CPU利用率所呈现的关系式如下:
Pi(t)=Pidle+(Pmax-Pidle)×πi(t)
(5)
其中,Pidle和Pmax分别表示物理主机gi在空闲和满负载的时候的能量消耗,根据物理主机的硬件条件,Pidle和Pmax是固定的常数。
通过公式(5)可知,该关系式呈现单调递增趋势。
④物理主机运行时间由t1变为t2时,其能耗表达式如下:
(6)
⑤全部物理主机所消耗能耗即数据中心所消耗能耗[18],其表达式如公式(7)所示。其中M为物理主机的个数。
(7)
利用遗传算法求解上述容器云平台数据中心整体能耗最低的目标函数,遗传算法针对容器云可实现双层资源分配,利用具有针对性的操作以及染色体设计实现虚拟资源配置有效优化。遗传算法的容器云平台数据中心整体能耗最低的目标函数求解过程如下。
1)染色体表达。
利用2个差异的染色体建立个体,分别用于分配容器云平台中虚拟机以及容器,可以参考文献[19-20]。通过算法输入和输出2部分设计染色体,利用染色体解码过程实现容器云资源的良好分配。容器云中的双染色体完成资源分配如图2所示。
图2 容器云中的双染色体完成资源分配
利用正整数向量表示全部染色体,利用染色体实现容器分配时,容器云平台中的容器数量采用染色体长度表示,染色体数值为输入容器的索引编号。
染色体分配虚拟机时,利用输入口体现全部虚拟机中的独立虚拟机类型。容器与虚拟机的分配向量长度应相同。容器与虚拟机应实现一对一映射。利用遗传算法解码所输入个体实现最终分配,选取下次适用算法实现个体分配,该算法是启发式装箱算法中的重要算法。将容器与虚拟机映射时,需依据固定次序将容器配置至虚拟机中。已完成分配的容器无法分配至其他虚拟机中,需及时关闭虚拟机,关闭的虚拟机表示已分配完成[21],无法再次装载以及检测。完成全部容器分配后,实现遗传算法解码。采用以上规则同样配置装载于物理主机的虚拟机。通过遗传算法的双染色体表示方法将全部解空间覆盖,获取最优的容器云虚拟资源分配结果。
2)初始化。
通过对不同种群个体索引编号,形成分配容器的染色体序列。选取虚拟机类型形成初始化分配虚拟机的遗传算法染色体。
3)交叉操作。
对染色体进行交叉操作,利用遗传算法交叉操作提升容器云环境虚拟资源利用率,选取order1交叉操作避免遗传算法运行过程中下一代染色体存在预早熟情况。选取单点交叉操作分配容器云环境虚拟资源过程中的染色体[22]。单体交叉操作算法需选取连续序列于父代中,将其余值依据固定顺序存储于子代中。
4)变异操作。
完成交叉操作后,传输至变异操作模型进行变异处理,遗传算法利用变异操作搜索过程获取局部最优解,利用变异操作获取目前个体的邻居情况。不同层次分配染色体,搜索局部最优解时选取调整虚拟机类型以及切换变异操作2部分实现新变异操作。
从分配容器的染色体中随机选取接入点,利用切换变异调整染色体入口值[23]。通过切换变异调整不同容器分配情况。利用循环操作虚拟机分配染色体调整虚拟机类型,调整虚拟机类型时,需依据固定概率利用变异操作调整入口值。
5)设置适应度函数。
计算所有染色体的适应度函数,设置容器云环境虚拟资源配置能量消耗作为遗传算法适应度函数,经过多次迭代计算,找出近似全局最优染色体,获取容器云平台数据中心整体能耗最低的目标函数的优化结果,即目标函数最优解,则遗传算法能量消耗适应度函数表达式如下:
(8)
公式(8)中,tstart与tend分别表示执行任务集的开始时间以及结束时间。依据公式(8)所建立目标函数可知,容器云平台通过解决容器以及虚拟机配置过程中的物理主机选择问题实现能耗最低优化过程。
为验证本文提出的基于遗传算法的容器云资源配置优化方法,选取AuverGrid资源分配数据集作为实验数据集。设置主频为3500 MHz的CPU于物理主机中,利用共500台物理主机建立容器云数据中心。设置遗传算法交叉率为0.8,单染色体与双染色体变异率分别为0.8与0.1,进化代数量设置为800,种群数量为100。
实验所设置容器云平台中虚拟机分类结果如表1所示。
表1 容器云平台虚拟机分类
统计采用本文方法优化容器云资源配置,不同交叉率情况下,三类虚拟机分类情况的容器云平台于24小时的总能量消耗结果,统计结果如图3所示。
图3 不同虚拟机类型下总能量消耗结果
从图3实验结果可以看出,本文方法在不同虚拟机分类时的平均能量消耗均较低。交叉率为0.8时,采用本文方法优化容器云资源配置的平均能量消耗为最低。资源分配方式的差异并不影响容器云能量消耗,主要原因是本文方法计算过程中保持最大的虚拟机需求,不同资源分配时能量消耗波动较小。
统计采用本文方法优化容器云资源配置,不同容器数量时,容器云平台于24小时内的能量消耗结果,统计结果如图4所示。
图4 不同容器数量时总能量消耗结果
从图4实验结果可以看出,伴随容器数量的增加,采用本文方法优化容器云资源配置,总能量消耗有所增加。说明容器数量的增加对总能量消耗影响较大。本文方法在容器数量增加时,保持稳定的增加幅度,验证本文方法具有极强的容器云资源配置优化有效性。
统计不同任务数量时,虚拟机类型变化时的虚拟机利用数量,统计结果如图5所示。
从图5实验结果可以看出,随着虚拟机类型数量的增加,容器云平台中虚拟机利用数量有所增加;任务数量增加时,虚拟机利用数量有所增加。本文方法在不同任务数量时,虚拟机利用数量可保证低于80个,说明本文方法可利用较少的虚拟机利用数量获取最佳的虚拟资源配置优化效果。本文方法所采用遗传算法可搜寻互补的虚拟机类型,提升物理资源利用率,实现良好的优化效果,获取能量消耗最低化。
图5 虚拟机利用数量统计结果
设定虚拟资源节点为50,随机选取5个虚拟资源节点,统计各虚拟资源节点的内存、CPU以及带宽的资源节点分配比率,统计结果如图6所示。
图6 分配比率对比结果
从图6实验结果可以看出,本文方法的虚拟资源节点分配较为均衡。采用本文方法可实现负载的有效均衡,再次验证本文方法所具有的资源配置优化有效性。采用本文方法实现虚拟资源配置优化,不同虚拟资源节点的内存、CPU以及带宽的资源节点分配比率均具有较小的波动性,趋于平衡,验证本文方法具有较高的资源配置优化有效性。本文方法可平衡不同节点资源利用情况,提升容器云平台虚拟机的服务质量以及服务器的资源利用率。
为了进一步验证本文方法的有效性,对本文方法、文献[12]方法和文献[13]方法的容器云环境内的虚拟资源配置容量进行对比分析,对比结果如图7所示。
图7 虚拟资源配置容量对比结果
根据图7可知,本文方法的容器云环境内的虚拟资源配置容量最高可达12 T,而文献[12]方法和文献[13]方法的容器云环境内的虚拟资源配置容量只有7 T和6 T,本文方法的容器云环境内的虚拟资源配置容量较高,能够存储大量的虚拟资源。
容器是一种轻量级的新型虚拟化技术,具有启动速度快、占用资源少、可伸缩强的优点,因而针对基于容器的云平台研究颇受关注。本文针对容器云资源优化问题,采用遗传算法求解所建立目标函数,实现了容器云环境中虚拟资源优化。遗传算法是重要的人工智能技术,下一步的工作是利用其他的新型智能算法完成容器云资源调度优化。