基于利用率的容器云弹性资源调度算法*

2022-11-09 02:34徐胜超
计算机与数字工程 2022年9期
关键词:使用率内存利用率

徐胜超 陈 刚

(广州华商学院数据科学学院 广州 511300)

1 引言

随着云计算技术的进一步发展[1~3],网络服务器的众多信息均存储在容器云内,使得资源管理问题逐渐突出。容器云内资源的平均资源利用率较低,同时大部分服务器处于闲置状态[4~5],但却耗用着较大功率,导致现存网络资源调度能耗成本高而且效率低下[6]。因此国内外相关学者加强容器云资源调度问题研究。

文献[7]研究了基于编码染色体的遗传算法来管理动态资源调度。该调度算法通过计算在未来所需的虚拟机数量及其预测的CPU和内存需求来调度任务。基于工作负载预测结果,提出了一种云计算环境下成本优化的资源调度策略,旨在最小化从中心云租用虚拟机的总成本,最后采用遗传算法求解资源调度策略,但是该方法在实际应用中存在成本高、调度效率低等问题。文献[8]研究了基于容器云队列在线任务的资源调度方法,首先在云计算服务排队模型的基础上,通过分析任务队列长度的变化,构建了资源功耗的最小化目标函数,最后获得在线的任务和容器资源的优化调度策略,但是该方法实施资源计算时过于复杂,导致资源调度时间长。文献[9]研究了容器云多维资源利用率均衡调度方法,其在Open Shift容器云平台上提出了基于多维资源空闲率权重的评价函数和调度方法。该方法综合考虑物理节点CPU、内存、磁盘、网络带宽空闲率和已部署的容器应用个数等因素,利用模糊层次分析法自动建模求解容器应用多维资源权重参数,该方法能够使集群多维资源利用率更加均衡,从而提升资源的利用率和集群性能,但是该方法忽略资源调度的实质目标导致资源调度效果不佳。

综上所叙,本文充分考虑资源的利用率情况,研究容器云弹性资源调度算法,通过弹性地调度容器云中资源,提升资源利用率,最大程度满足用户个性化需求。

2 容器云弹性资源调度算法

2.1 容器云调度模型

Pod是容器云资源调度的最基本单位。引入Pod概念可以解决多个容器之间的通信问题,也提高了容器间数据共享能力,Pod还可以让集群快速地判断获取容器的运行状态[10]。

根据上述分析,分析容器云弹性资源调度原理与过程,如图1所示。

图1 容器云弹性资源调度过程

容器云当前默认的调度过程分为预选调度过程和优选调度过程。API服务器在接收客户端转送的Pod对象创建请求后,然后就通过调度器从集群中选择一个合适的最优节点初始化并运行Pod。而在调度过程中有三个阶段:节点预选阶段、节点优选阶段、节点选定阶段,最后筛选出最佳的节点。

综合上述分析,构建资源调度模型,如式(1)~式(2)所示:

式中:集群节点内存使用率用Qm表示;在设置容器i后节点综合负载用Q*i表示;CPU使用率用Qc表示;综合负载使用情况用Qi表示;网络带宽使用率用Qn表示;因各应用资源的负载状态不同[11],通过引入参数λ、α、β调整Qi。

容器云弹性资源调度的子任务在虚拟资源中进行计算时是并行独立完成的,因此子任务在各虚拟资源中执行时间的最大值为弹性资源调度的执行时间花费,弹性资源调度任务在各虚拟资源的执行成本花费k1与传输成本花费k2的和即为任务调度总成本花费k,即任务调度总成本花费k=k1+k2。

分析上述公式可知,容器云弹性资源默认调度算法相对简单,仅考虑CPU和内存,忽视了其他资源过度消耗,使数据中心产生巨大的资源浪费。例如,一个节点上的硬盘负荷接近满载但是的内存使用率很低,而像现有解决算法只解决了CPU和内存能耗,但依旧很有可能将Pod调度到该节点,导致该节点上大多数应用由于节点硬盘资源的不足而难以运行,同时剩余的内存资源亦无法被使用而浪费,从而降低集群的资源使用效率,造成能量过度消耗。

2.2 弹性资源调度算法

本节构建调度模型采用基于资源权重的最大利用率算法实现容器云弹性资源调度。

假设在T时间内,系统任务必须完成,且同一任务不可被替代[12~14]。其中,用t表示最小时隙,另外等待队列集是空。各时隙对应与之数量相同的虚拟机资源配置类型[15]。假设有n个时隙,在物理主机Hj内任务m的数量用Hjm表示,则此时资源利用率φ最大,同时符合0≤n≤T,具体如式(3)~式(4)所示:

式中,容器i的利用率用φi表示;容器云弹性资源权重用ω(i)表示;物理主机最大可行的配置用Hj=(H1,H2,H3,…,HM)表示;在物理主机Hj内任务m的最大数量用H(j)max表示;资源需求用ami表示。

经分析可知,资源需求与虚拟机内任务m数量乘积最大,因ami值固定,为保证H(j)max最大,需要确保m数量最大。t时刻资源利用率配置Hˉr(t)需满足如下条件,如式(5)所示:

式中:最大虚拟机分配集用Ωr表示,权重用w(i)表示,虚拟机任务数量用Hm表示,最大可行配置用Dri表示。

因不同间隙队列Wm(t)长度存在差异,其不同时刻时隙变化如下:

式中:t时刻集群节点内存使用率用Qm(t)表示,t时刻集群节点调度负载率用Zm(t)表示。

为了保证容器云弹性资源调度稳定性,当队列中资源利用率大于阈值时,需要依据上述方法降低工作负载。根据上述过程设计云弹性资源调度算法流程如下。

按照重要程度得出i类资源平均利用率wei将其作为输入,将虚拟机配置作为输出。

步骤1:明确m类资源权重值。

步骤2:按照负载均衡原则选择物理主机。

步骤3:面对集合内各物理主机实施如下流程:

若物理主机内某任务队列集群节点内存使用率Qm>阈值;返回任务队列最大配置;跳转至结束。

步骤4:对容器i后节点host综合负载实施初始化赋值。

步骤5:判断虚拟机配置。

步骤6:如果当前的集群节点内存使用率Qm大于容器i后节点host综合负载,则将当前的集群节点内存使用率Qm视为综合负载。

步骤7:将最佳的集群节点内存使用率Qm对应的虚拟机配置视为最佳配置。

步骤8:保存当前最佳配置,结束算法运行。

3 实验分析

为验证本文算法的性能,通过CloudSim平台实施实验,按照应用程序配置云数据中心,物理机与虚拟机数量分别为200台、500台。

3.1 实验设置

3.1.1 实验环境设置

实验环境为真实的物理环境,7台dell R720作为计算节点,采用共享存储机制,服务器上安装OpenStack开源云。实验系统镜像中集成自主开发的运行参数监控软件。

初始状态下,随机申请150台虚拟机(VM1~VM150)。其中物理机1分配17台,物理机2分配16台,物理机3分配18台,物理机4分配10台,物理机5分配14台,物理机6分配16台和物理机7分配14台。在实验中,网络都采用百兆网络带宽分配。

3.1.2 实验过程设置

在模拟整合过程中,数据中心将创建200台物理主机。物理主机分别对应于CloudSim平台中某一天每个虚拟机CPU资源利用率记录,数据中心会创建相应个数的虚拟机,这些虚拟机分成不同大小的多个种类。通过上述过程,以综合负载、资源利用率、Pod抢占调度和任务调度总成本四个评价指标设计实验。

3.1.3 实验参数设置

云数据中心负载波动较大均衡度低,集群节点内存为2GB,其中高负载物理机为39台,最佳负载为10台,可迁移物理机达到31台。

3.2 综合负载测试

以CPU、内存、网络宽带占用率三个指标作为衡量指标。采用本文算法进行资源调度后三个指标占用率情况,如图2所示。

图2 资源调度后的各指标占用率

图2中的资源占用率情况通过式(1)得到,即设置容器i后节点host综合负载。分析图2可知,采用本文算法资源调度后达到最佳负载物理机数量是60台,负载较轻物理机数量是10台,停止物理机10台。经计算本文算法调度后的负载不均衡度约为0.05,由此说明本文算法可平衡数据中心的负载情况,提高资源利用率。

3.3 资源利用率测试

如果存在服务器中某一资源的利用率超过90%则表明该资源占用较高负载,会导致资源负载不均衡。当资源利用率大于负载时,表明调度后的资源负载不均衡。设置该实验的负载为16。

节点1~节点6在应用本文算法调度前,存在节点2和节点5的网络负载的资源权重超过90%情况,同时这两个节点的负载大于16,存在资源占用率过大现象。

采用本文算法对节点1~节点6的资源进行调度,资源调度后不同节点的资源利用率结果见图3,节点的负载、平均资源利用率见表1。

图3 资源调度后节点的资源利用率

表1 节点的负载、平均资源利用率

图3中,资源利用率情况数据结果通过式(4)计算得到,表1中的负载为通过式(2)计算得到的综合负载使用情况,平均资源利用率为图3中不同负载的平均值。分析图3和表1中数据可知,本文算法资源调度后不存在节点资源利用过高现象,且各节点的资源利用率均小于负载,实验结果表明,采用本文算法实施调节调度后,可有效避免单一资源利用过高导致的负载不均衡现象。

3.4 Pod抢占调度对比

通过对比对高优先级Pod实行抢占调度后集群的各项资源使用率变化情况,评价调度算法的优劣,资源使用率通过如式(1)所示的容器i后节点host综合负载获取。若实行抢占调度后,节点的综合负载较高且波动较小,说明节点的资源使用更充分、更稳定,资源使用率通过式(1)分析得到,测试实验结果见图4。

图4 本文算法节点的资源使用率

通过图4结果表明,在实施了抢占调度算法后,本文算法的资源使用数据更加平稳,资源使用率也更加高。反观默认的抢占算法,由于该算法只考虑优先级,不考虑其他的因素,所以依旧存在使用资源不稳定的低级Pod。其主要原因是,本文在任务调度前,充分考虑资源的利用情况,针对用户需求调度容器云弹性资源,提升了资源调度性能。

3.5 任务调度总成本测试

实验设置三种任务,任务1中总任务数量为1000个,任务2中总任务数量为10000个,任务3中总任务数量为100000个,得出本文算法在不同任务下进行调度的总成本k,即本文算法完成三项任务时的执行成本花费k1与传输成本花费k2的和,如图5所示。

图5 本文算法任务调度总成本k

分析图5可知,随着任务总数量的增多,本文算法的任务调度总成本也呈上升趋势,但单位成本控制在120元以下,说明本文算法在任务调度总成本方面合理,没有过度浪费资源,可有效节省资源调度成本。

4 结语

本文研究基于利用率的容器云弹性资源调度算法,将最大资源利用率作为目标,合理配置物理主机,以提高容器云中资源利用率。实验结果表明本文算法的内存占用率、CPU占用率、网络宽带占用率均低于10%,综合负载较好,当节点出现资源利用率不均衡情况时,采用本文算法对其实施调节调度后,可提高资源均衡度,可较好实现资源均衡调度的目标,满足客户要求,适用性较强。

猜你喜欢
使用率内存利用率
外部高速缓存与非易失内存结合的混合内存体系结构特性评测
2019年全国煤炭开采和洗选业产能利用率为70.6%
“春夏秋冬”的内存
2018年中国网络直播用户规模为3.97亿
化肥利用率稳步增长
浅议如何提高涉烟信息的利用率
板材利用率提高之研究
基于服务学习方法提高青少年安全带使用率
胃肠外科围手术期合理使用抗菌药物的探讨
基于内存的地理信息访问技术