APP下载

一种适于Docker容器资源控制的分类预测方法∗

2019-12-27陈莉君

计算机与数字工程 2019年12期
关键词:类别容器权重

李 植 陈莉君

(西安邮电大学计算机学院 西安 710100)

1 引言

云平台作为第三方应用的服务提供商,为应用提供其运行时所需的环境,因此引入了虚拟化技术。随着虚拟化技术的迅速发展,容器作为一种操作系统层上的虚拟化技术,成为了虚拟化领域的热点[1~2]。

容器可被看作是一种“轻量级”的虚拟机,凭借其轻量性和高效性,云平台可利用容器为应用快速的提供隔离的运行环境以及资源。其中,Docker容器因其启动速度快,易于创建和销毁等特点而被业界广泛使用。随着Docker容器在云平台上的广泛应用,为了避免因为容器资源分配不合理,造成容器服务质量下降的现象,需要对容器资源进行合理的控制。

关于容器资源的控制,Kubernetes,swarm等容器管理平台都做了相关方面的研究。以Kuber⁃netes为例,Kubernetes中资源调度的单位为pod,它包含了一个或多个容器。针对pod,Kubernetes提出了多种资源调度算法,为其选取合适的运行节点[3]。同样,Swarm也是基于一种调度策略,来为容器提供相适应的运行节点[4]。而两者对容器资源的控制实际是通过cgrous机制来完成。

现阶段cgroups对容器资源的控制方法是,首先人工根据现有的容器资源使用数据预测应用的资源需求,然后对容器资源进行配额[5]。但该方法存在局限性,人工可分析的数据范围有限,参考的因素有偏差,且存在主观影响。所以预测结果存在偏差,可参考性不足,使得cgroups对容器资源的控制效果并不明显。

针对上述缺点,本文通过研究cgroups对Dock⁃er容器资源的控制方法,以及可控制的资源种类,提出了一种分类预测算法来提高cgroups控制容器资源的效率。

2 Docker资源控制方法

Docker是一款开源的应用容器引擎,该容器引擎是基于Linux container(LXC)技术的扩展,它提供了用于管理容器的libcontainer库,如图1所示[6]。其中,库中的cgroups机制用于Docker对容器资源的控制。

图1 libcontainer的组成

cgroups机制是用于控制一组进程能够使用资源多少的机制,其结构如图2所示。容器包含了一个或多个cgroups,相互关联的cgroups以树状组织成层级结构(hirearchy),不同的层级结构挂载着不同的子系统(subsystem)。其中,子系统代表cgroups机制可控制的资源种类[7]。

图2 cgroups机制结构

当前,使用cgroups对容器资源进行控制的方式比较简单,人工参考容器在短时间内的资源使用情况,预测其后期的使用情况,根据预计结果设置cgroups的资源控制文件,从而使得cgroups达到资源控制的目的。然而,人工可分析的数据范围有限,参考的因素有偏差,且存在主观影响。这些因素会对预测结果产生偏差,影响cgroups对容器资源的控制效果。

因此,需要有效且可靠的容器资源控制方法来支持cgroups对容器资源的控制,保证容器为应用提供的服务质量。

3 容器资源控制方法

为了避免因为容器资源分配不合理,造成容器服务质量下降的现象,需要对容器进行资源控制来保证容器的服务质量。

假设当前可为容器提供m种资源,并且每种资源的使用情况可被分为n种(比如:少量,一般,超量等),则容器对整体资源的使用情况可分为nm种。如果对nm种使用情况的整体数据集合进行分析,则会因为使用情况之间的差异,造成预测结果存在偏差,不适用于整体容器。为了提高预测结果的精确度,分别对每种使用情况进行分析,并将各种使用情况的分析结果作为预测凭据,cgroups利用该预测凭据可提高对容器资源的控制效率。为此,提出了基于cgroups的分类预测算法。

该算法首先对所采集的数据集合进行分类,数据集合中的数据来自任意时间点上容器资源的使用情况,是随机且复杂的。因此,数据集合可被看作是一个不规则形状的数据空间。为了得到数据空间最优的分类结果,采用谱聚类算法进行分类。谱聚类算法是一种基于图论的算法,该算法能够对任意形状的样本空间进行聚类且收敛于全局最优解[8~9]。

对数据集合进行分类后,对每种使用情况进行详细的分析,计算出nm种资源使用情况各自所对应的类别权重。利用类别权重可预测容器在后期的资源使用情况,从而使用cgroups进行资源控制。类别权重的求取,其实是一个子类与其他子类的划分,是一个二分类过程。因此,采用泛化能力良好,且解为全局最优解的支持向量机算法进行计算[10]。

因此,基于该分类预测算法的容器资源控制框架如图3所示。整体框架为该分类预测算法利用谱聚类对使用情况进行分类,并利用支持向量机计算类别权重。依据类别权重预测容器后期的资源使用情况,使用cgroups对容器资源进行控制。

4 分类预测算法

在容器资源控制框架中,针对容器资源使用情况的随机性和复杂性,提出了分类预测算法。该算法分为两步,第一步是利用谱聚类对容器资源使用情况进行分类,第二步是利用支持向量机计算每种类别的类别权重,计算过程如图4所示。

图3 容器资源控制框架图

图4 算法计算过程

图4中,数据集合V由容器资源的使用情况组成,V中每个数据点vi代表任意时间点容器资源的使用情况,可表示为

其中,xi代表一种资源的使用情况,n表示容器可使用n种资源。

如果将每种资源看作一个维度,则该数据集合可被看作一个多维度数据空间。数据集合V中的数据点vi之间存在差异性,则该多维度数据空间的形状是不规则。针对该不规则形状的多维度数据空间,利用谱聚类算法和支持向量机算法来进行分类与类别权重的计算。

4.1 谱聚类算法

谱聚类算法的主要思想是将数据点作为图中的顶点,且数据点之间用边相连。相似度较低的两点,边权重值较低;反之,边权重值较高。数据集合因此成为了一个无向加权图G=(V,E),V表示图G中所有顶点的集合,E表示图G中所有边的集合[8~9]。数据集合V的分类实质为图G的分类。

谱聚类算法通过对图G进行切图,使切图后的子图之间的边权重和尽可能地小,子图内的边权重和尽可能地大,从而达到聚类的目的。将图G划分为A,B两个子图的代价函数为

其中,A∪B=V,A∩B=∅。

而容器资源的使用情况具有多样性,因此采用谱聚类多路规范割集准则,来获得全局最优的划分结果,目的是将图G同时划分为k个子图。目标函数为

将上述目标函数连续放松,将其转换为对拉普拉斯矩阵L的谱分解问题。拉普拉斯矩阵L是通过相似矩阵W和对角矩阵D进行求取:

L=D-W

相似矩阵W由数据点之间的高斯距离求得,即:

其中,σ表示预先指定的参数,目的是对数据点之间的距离进行合适的放大或缩小。

对角矩阵 D=diag{d1,d2,…,dn}由相似矩阵W可得,其中di表示相似度矩阵W 第i行的行和,表示为

规范化拉普拉斯矩阵L,可得矩阵Lsym:

求取矩阵Lsym前m个最大特征值所对应的特征 向 量 k1,k2,…,km,构 造 特 征 向 量 矩 阵K=[k1,k2,…,km],将矩阵 K 的行向量转变为单位向量,得到矩阵Y,即:

利用k-means算法对矩阵Y进行聚类,可分得m类容器资源的使用情况类别,且该分类结果是全局最优的。

4.2 支持向量机

利用谱聚类算法对数据集合划分之后,获得子类数据集合,可表示为

其中,Vi'为划分后的子类样本。

随后,通过求取子类Vi'的类别权重,预测容器资源的使用情况。类别权重为每种资源的权重值所构成的向量,表示为

其中,ωi表示第i个子类的类别权重,表示子类中第j种资源的权重。

类别权重的求取,实际为划分单个子类与其他所有子类的过程,是二分类。为了在二分类的同时获得类别权重,故采用支持向量机进行计算。

支持向量机的主要思想是在数据集合中寻找一个超平面,使属于不同类别的数据点正好位于超平面的两侧,该超平面既能保证分类的精度,也能让子类之间的间隔最大[10],如图5所示。

图5 支持向量机原理示意

支持向量机的目的是,根据有限样本信息在模型中的学习,保证后期对未知样本数据具有良好的泛化能力,既能求取全局最优解,又能保证目标检测分类器具有可靠的分类结果。另外,支持向量机避免了推演、归纳等复杂的计算过程,使得计算快速简便。

寻找最优超平面的问题是一个复杂的过程,所以支持向量机利用拉格朗日优化方法将其转化为二叉规划问题。在数据集合V中,假设超平面为

其中,x表示数据集合V中的数据点,ωT表示权重,b表示影响因子。

根据平面几何知识,数据集合中任一点x与超平面上的投影点x0之间的关系为

由上述两公式,可得两点之间的距离为

为了使分类效果更明显,距离γ需要增大,则||ω||需要减小。所以,可得目标函数为

其中,yi为xi的类别标签。对上式引入拉格朗日乘子α并定义拉格朗日函数L:

使得问题变为二叉规划问题,最终求得目标函数为

随后,利用迭代求解的方法,从αi中任意提取两个乘子,并固定其他乘子进行计算,最终达到求解原问题的目标。同时,获得ω与b的结果,即类别权重与影响因子。

综上,便是分类预测算法的整体计算过程。

5 实验

5.1 实验内容

通过在单核虚拟机中采集容器资源使用情况,使用分类预测算法进行训练,求取类别权重。随后采集测试集数据,验证该算法的可用性。

实验在单核虚拟机中进行,操作系统为cen⁃tos,容器为Docker。运行2个容器应用,以及1个容器压力测试工具,并采集3种容器在运行过程CPU和内存的使用情况数据。如图6、图7所示。

图6 CPU资源使用率

图7 内存资源使用率

图6中,容器1对CPU资源使用率较高,基本处于40%~70%之间;容器2对CPU资源的使用率较低,基本处于10%~30%之间;容器3对CPU资源使用率一般,基本处于20%~40%。

图7中,容器1对内存资源的使用率基本处于10~40(MB)之间;容器2对内存资源的使用率基本处于30~40(MB)之间;容器3对内存资源的使用率基本处于20~30(MB)。

由两幅图,可看出当容器1处于波峰时,会导致其他容器处于波谷。所以,通过控制容器的CPU资源使用率和内存资源使用率,使其靠近使用频率最频繁的情况下,限制类似于波峰的资源使用情况,空闲出资源为其它容器所使用。

5.2 实验结果

通过谱聚类算法对数据集合进行分类,实验规定了2种资源,以及每种资源的使用情况分为2类,则对该数据集合进行4分类,结果如图8所示。

图8 谱聚类分类结果

利用支持向量机计算每种类别类别权重,结果如表1所示。

表1 类别权重表

表1中,W1、W2表示两种资源,b表示影响因子。由表1可看出类别权重分为了4种情况,分别对应4种类别。最后,利用测试集验证该分类预测算法,结果如表2所示,精度可到96%,适用性良好。

表2 实验结果数据表

6 结语

本文针对容器资源控制,提出了分类预测算法,对容器资源的使用情况进行分类,获取每种类别的类别权重,从而用于对容器资源使用情况的预测。依据类别权重可提高cgroups的控制效果。实验结果表明,该分类预测算法的可用性较高。但该实验中,采集的资源种类较少,运行环境较为单一,因此后期需对实验环境,以及数据的采集进行扩展。同时,需对算法进行优化,使其满足各种场景需求。

猜你喜欢

类别容器权重
权重望寡:如何化解低地位领导的补偿性辱虐管理行为?*
权重常思“浮名轻”
一起去图书馆吧
难以置信的事情
简析基于概率预测的网络数学模型建构
为党督政勤履职 代民行权重担当
权重涨个股跌 持有白马蓝筹
液体对容器底及容器对桌面的压力和压强
取米
选相纸 打照片