一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于容器应用实时使用情况的容器资源伸缩方法与流程

2022-06-30 01:48:13 来源:中国专利 TAG:


1.本发明涉及云计算领域,主要是一种基于容器应用实时使用情况的容器资源伸缩方法。


背景技术:

2.近年来,企业网络系统集群逐渐增大,硬件资源稳步提升的同时也导致软件运维部署困难加重,系统资源利用率低,机器使用不均衡等问题频发。容器技术可对程序运行环境进行隔离和打包,方便了程序在开发、上线、测试和维护的整个过程,并且容器之间可以共享主机的操作系统,与虚拟机相比占用的资源更少。但容器的部署与资源调度一直是业界研究的难题,在保持服务性能的同时减少容器资源的浪费,合理预测容器所需内存资源,根据预测有机分配容器资源成为了一个亟待解决的问题。
3.针对这一问题,目前已有不少的解决方案,如发明cn110647392a提供了一种基于容器集群的智能弹性伸缩方法,首先通过设定弹性伸缩阈值,确定容器运行时的最大cpu使用率、最大内存使用率、最大磁盘io、最大网络吞吐量、最长请求响应时间以及目标时间段最大请求率,接下来在容器全部启动后,监测容器上述指标,并对比阈值,当阈值超过时,直接在容器级别进行删除和增加。上述方案可以有效的调度资源,但阈值设定没有明确的依据较为主观,此外在容器级别进行增删改查会对现有业务造成影响,尤其是遇到在线业务弹性、大规模计算训练、深度学习gpu或共享gpu的训练与推理等场景中无法应用。


技术实现要素:

4.本发明的目的在于克服现有技术存在的不足,而提供一种基于容器应用实时使用情况的容器资源伸缩方法,通过内置探针,实时监控容器内应用资源使用情况。
5.本发明的目的是通过如下技术方案来完成的。一种基于容器应用实时使用情况的容器资源伸缩方法,具体步骤如下:
6.(1)、创建容器集群,布置采集探针实时监测容器内各个应用的资源使用情况;
7.(2)、判断容器集群是否启动完成,设置统一的状态监控点;统一的状态监控点为采集探针的部署位置,通常为管理服务器、数据服务器等设备,当采集探针采集到容器集群启动完成后开始对容器的资源使用情况进行监控。采集探针用于采集容器内的详细资源情况,即下文所述的最大内存使用率,最大cpu使用率,为最大网络吞吐率,为最大硬盘使用率。
8.(3)、当容器集群正常运行后,每间隔固定时长,取这段固定时长内的各个应用的资源使用情况,并使用二次移动平均法预测容器内接下来的各个应用的资源使用情况,进行动态的资源伸缩;
9.(4)、根据各个应用的状态,按照应用优先级计算应用得分,使用分代方法进行资源缩减调度。
10.更进一步的,在步骤(1)中,对容器内各个应用的最大内存使用率、最大cpu使用
率、最大网络吞吐率、最大硬盘使用率进行采集,记录的集合为:
[0011][0012]
其中
[0013]
其中apsti代表应用i的状态,代表应用i在当前状态j分钟前时刻的性能数据,max mem为最大内存使用率,max cpu为最大cpu使用率,max netflow为最大网络吞吐率,max diskuse为最大硬盘使用率。
[0014]
更进一步的,在步骤(3)中,
[0015]
(3.1)、用p表示本次弹性伸缩资源指标,q表示当前的容器集群可用的全部资源,通过监控各个应用的资源使用情况:
[0016][0017]
其中,n代表容器内应用的总数量;
[0018]
(3.2)、用p表示应用运行过程中的预测性能指标,以过去j时刻内的滑动窗口为时间序列,对窗口内检测到的容器应用实际性能指标使用二次移动平均法进行计算;
[0019]
为应用i在当前状态j分钟前时刻的性能数据,那么j时刻的容器内应用集合的一次平均值为:
[0020][0021]
t时刻的一次平均值序列为:
[0022]
t时刻的二次移动平均值为:
[0023]
j t时刻预测值为:
[0024]
其中,
[0025]
(3.3)、当容器资源需要增加时,即在剩余资源满足需求时,即直接根据新增资源;当剩余资源无法满足增加需求时,即优先进行资源缩减。
[0026]
更进一步的,
[0027]
(1)、当容器资源需要减少时,根据前j个时间点内应用的状态进行减少,并按照应用优先级进行资源缩减调度;通过应用重要性优先级和最近使用时间两个方面进行加权计算,对各个指标进行分别计算,按照资源需求的优先级,依次调度应用,减少资源分配,其中应用优先级按照容器建立后的应用启动优先级进行排序,并根据用户最早使用应用进行减少;
[0028]
应用得分计算方式如下:
[0029]
scorei={4-max mem-maxcpu-max netflow-maxdiskuse}*(1-aplv)*(1-aptl)
[0030]
式(7)
[0031]
其中scorei代表应用i的得分,aplv代表当前应用的优先级,按照linux系统pr值
进行计算,数值归一化为0-1;当pr值相同时,对系统自启动应用进行加权0.2,用户自启动应用加权0.1,aptl代表应用在时间段范围内运行时长比例,即当前应用最近运行时长除以timej时刻时长,范围为0-1;
[0032]
(2)、按照需要扩展的资源为单个应用可释放资源为ei,按照上述得分scorei从大到小的顺序逐个释放,直至满足资源需求。
[0033]
更进一步的,采用分代回收算法进行内存、硬盘、网络方面的资源缩减,即把资源块进行分类,按照进程使用后闲置时长分为“新生代”和“老年代”,存活周期短的资源块,划分为“新生代”,直接使用“复制算法”进行回收,存活周期长的内存块,划分为“老年代”,使用“标记-整理算法”,在发生了内存回收时进行记录,并及时反馈给服务器,作为性能指标使用。
[0034]
本发明的有益效果为:本发明通过在容器集群内部预设探针,完成容器各应用资源使用情况的获取,并根据容器资源的预测情况,对容器资源进行协调调度,从而解决集群整体资源利用率偏低的问题。
附图说明
[0035]
图1为本发明的流程示意图。
具体实施方式
[0036]
下面将结合附图和实施例对本发明做详细的介绍:
[0037]
如图1所示,一种基于容器应用实时使用情况的容器资源伸缩方法,具体步骤如下:
[0038]
(1)、创建容器集群,布置采集探针实时监测容器内各个应用的资源使用情况;对容器内各个应用的最大内存使用率、最大cpu使用率、最大网络吞吐率、最大硬盘使用率数据分钟级细粒度进行采集,记录的集合为:
[0039][0040]
其中
[0041]
其中apsti代表应用i的状态,它由最近一段时间应用的状态集合组成,代表应用i在当前状态j分钟前时刻的性能数据(应用状态),应用状态又由多个指标组成。默认情况下j取0~59,max mem为最大内存使用率,max cpu为最大cpu使用率,max netflow为最大网络吞吐率,max diskuse为最大硬盘使用率;
[0042]
(2)、判断容器集群是否启动完成,并设置统一的状态监控点;统一的状态监控点为采集探针的部署位置,通常为管理服务器、数据服务器等设备,当采集探针采集到容器集群启动完成后开始对容器的资源使用情况进行监控。采集探针用于采集容器内的详细资源情况,即下文所述的最大内存使用率,最大cpu使用率,为最大网络吞吐率,为最大硬盘使用率。
[0043]
(3)、当容器集群正常运行后,每间隔固定时长,取这段固定时长内的各个应用的资源使用情况,并使用二次移动平均法预测容器内接下来的各个应用的资源使用情况,进行动态的资源伸缩;
[0044]
(3.1)、用p表示本次弹性伸缩资源指标,q表示当前的容器集群可用的全部资源,通过监控各个应用的资源使用情况:
[0045][0046]
其中,n代表系统内应用的总数量;
[0047]
(3.2)、用表示应用运行过程中的预测性能指标,由于数据分析类应用在运算过程中有较强的阶段性,且距离本次预测时间点越近的数据作用越明显。针对应用运行过程中的趋势性,以过去j时刻内的滑动窗口为时间序列,对窗口内检测到的容器应用实际性能指标使用二次移动平均法进行计算;
[0048]
为应用i在当前状态j分钟前时刻的性能数据,那么j时刻的容器内应用集合的一次平均值为:
[0049][0050]
t时刻的一次平均值序列为:
[0051]
t时刻的二次移动平均值为:
[0052]
j t时刻预测值为:
[0053]
其中,
[0054]
(3.3)、当容器资源需要增加时,即在剩余资源满足需求时,即直接根据新增资源,当剩余资源无法满足增加需求时,即优先进行资源缩减。
[0055]
(4)、当容器资源需要减少时,根据系统前j个时间点内应用的状态进行减少,应用的优先级进行资源缩减调度;系统通过应用重要性优先级和最近使用时间两个方面进行加权计算,对各个指标进行分别计算,按照资源需求的优先级,依次调度应用,减少资源分配,其中应用优先级按照容器建立后的应用启动优先级进行排序,并根据用户最早使用应用进行减少;
[0056]
应用得分计算方式如下:
[0057]
scorei={4-max mem-maxcpu-max netflow-maxdiskuse}*(1-aplv)*(1-aptl)
[0058]
式(7)
[0059]
其中scorei代表应用i的得分,aplv代表当前应用的优先级,按照linux系统pr值进行计算,数值归一化为0-1;当pr值相同时,对系统自启动应用进行加权0.2,用户自启动应用加权0.1,aptl代表应用在时间段范围内运行时长比例,即当前应用最近运行时长除以timej时刻时长,范围为0-1;
[0060]
按照需要扩展的资源为单个应用可释放资源为ei,按照上述得分scorei从大到小的顺序逐个释放,直至满足资源需求。
[0061]
具体的,在资源中采用分代回收算法进行内存、硬盘、网络方面的收缩,即把资源
块进行分类,按照进程使用后闲置时长分为“新生代”和“老年代”,存活周期短的资源块,划分为“新生代”,直接使用“复制算法”进行回收,存活周期长的内存块,划分为“老年代”,使用“标记-整理算法”,在发生了内存回收时进行记录,并及时反馈给服务器,作为性能指标使用。
[0062]
综上,本发明提出一种基于容器应用实时使用情况的容器资源伸缩方法,通过内置探针实时采集容器内各应用的资源使用情况,更精细化的对容器下一阶段的资源使用情况进行预测,同时在资源伸缩时使用优先级算法,使得资源调整更有侧重。对资源弹性伸缩而言,“伸”就是多分配资源,是容易实现的。但是“缩”不同,即使一个运行中的应用只占用了1%的资源,但是如果回收剩下的99%的资源中的一小部分也会影响应用的运行。也就是说,在“缩”的过程中,不可避免的会影响一些应用,停掉一些应用。本发明对各个应用的优先级进行计算,当释放资源的时候,计算出来先停哪些应用的对整个系统影响最小。本发明可解决容器集群的资源调度分配问题,节约系统资源。
[0063]
可以理解的是,对本领域技术人员来说,对本发明的技术方案及发明构思加以等同替换或改变都应属于本发明所附的权利要求的保护范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献