一种基于周期性特征的数据中心在线负载资源预测方法*
2020-03-26曾绍康梁岩德
梁 毅,曾绍康,梁岩德,丁 毅
(北京工业大学信息学部,北京 100124)
1 引言
随着大数据产业的发展,数据中心得到了较为广泛的关注和较大的投入建设。负载是数据中心应用的运行实例,也是数据中心资源使用的主体。以Web服务、流式计算为代表的在线负载是其中一类长时运行、延迟敏感的负载。由于在线负载受到用户行为驱动,负载强度具有较大的波动性,在运行过程中其资源需求动态变化。在线负载资源需求预测一直以来都是数据中心资源管理领域的研究热点。快速、准确的在线负载资源需求预测是数据中心合理分配资源、保障负载执行效率的关键。
数据中心在线负载资源预测方法已得到广泛关注和研究。总结而言,既有方法可分为3类:基于简单统计分析方法、基于时间序列分析方法和基于机器学习方法。
简单统计分析方法是指通过对资源使用数据采用统计分组、相关分析等方法分析在线负载资源使用情况,对当前在线负载资源需求进行预测[1,2]。然而,单纯采用简单统计分析的方式无法更准确地挖掘在线负载资源使用的特征和变化趋势。
针对简单统计分析方法的不足,时间序列分析方法被引入数据中心资源预测。既有工作主要采用AR(Auto Regressive model)分析法[3 - 5]、自相关和互相关方法[6,7]以及ARIMA(Auto Regressive Integrated Moving Average)方法[8 - 13]对数据中心单负载及混部负载场景下应用的CPU、内存、磁盘及网络资源需求进行预测。然而,上述时间序列分析方法多适用于短期预测,难以对在线负载的长时运行的资源需求进行准确预测。
随着机器学习的发展,相关算法被广泛应用到了在线负载资源预测中。既有工作主要采用多元线性回归方法[14 - 16]、聚类方法[17,18]、支持向量回归方法[19 - 21]及马尔科夫模型[22 - 25]进行应用资源使用预测。文献[26]针对在线负载,测试了线性回归、神经网络和支持向量回归等算法在CPU需求预测上的性能,发现在各算法中支持向量回归算法的预测结果更准确且表现最优。然而,机器学习算法的预测准确度依赖于大规模样本数据的训练,而大规模数据的训练会导致较大的时间开销,无法满足在线负载实时性的场景。
然而,上述研究成果尚存在2点不足:(1)既有基于简单统计分析和时间序列分析的预测方法多着眼于短期预测,难以获得较为准确的长期预测值;(2)既有基于机器学习的预测方法准确度依赖于大规模样本数据,且具有较大的时间开销,难以适应在线负载快速响应、延迟敏感的需求。
针对上述问题,本文将在线负载资源使用的周期性特征引入资源预测中,提出基于周期性特征的在线负载资源预测方法PRP(Periodical characteristic based Resource Prediction)。PRP通过资源使用变化周期识别和资源使用样本子序列分类,将在线负载的长期资源预测转化为短期预测,通过加权综合不同类资源使用子序列获得快速、准确的在线负载资源预测。本文的主要贡献可归纳为3个部分:
(1)提出了基于自相关函数的在线负载资源使用周期识别方法。应用自相关函数对在线负载资源序列的周期进行识别和量化,利用其周期性特征将长期资源预测转化为周期间资源使用的比对统计。
(2)提出基于K-Means聚类的资源使用子序列分类方法。针对资源使用量以及变化趋势,采用K-Means聚类算法对按照周期划分的子序列集进行分类;最终依据分类,采用线性加权方法计算资源需求预测值。
(3)对本文提出的在线负载资源预测方法PRP进行了性能评测。实验结果表明,与既有基于ARIMA算法、支持向量回归算法和马尔可夫模型的在线负载资源预测方法相比,PRP方法可使预测平均相对误差最大降低28.3%,12.3%和27.4%。同时,随着预测时间步长的增加,PRP方法在预测准确度和时间开销上的优势逐步增加。
2 在线负载周期性特征分析
本节将分析在线负载资源使用的周期性特征。
2.1 任务知识
请求到达波动性是在线负载的典型特征。随着在线负载用户群体的扩增、服务访问或数据采集行为习惯的趋同,负载请求波动的周期性特征具有一定的普遍性。图1中展示了3个不同的在线负载场景下请求强度的变化统计。
Figure 1 Examples of online workload user request/data arrival intensity图1 在线负载用户访问量/数据到达强度
从图1中可以分析出,在线负载请求强度呈明显的周期性变化,在周期内数据呈相似的变化趋势。以图1a NASA网站1个月的用户访问量为例,其用户访问以24 h为1个周期发生变化,大多数周期内的用户访问量在500~8 000次以相似的趋势波动。但是,也有少数周期内数据量变化有异常现象。其中,在第8和第9个周期内,用户访问量在0~4 000 波动,在第13个周期内,用户访问量最多达到了13 000以上。同样,图1b和图1c分别展示了曼彻斯特大学的学生1周内对YouTube网站的用户访问情况和国内某互联网公司的流式日志数据到达强度趋势,其中流式日志业务是在线负载中典型的流式计算负载。除此之外,伯克利大学主页访问、法国世界杯体育网站[27]访问等数据也均呈现为较典型的周期性特征。具体而言,上述在线负载的访问具有如下共性特征:(1)负载请求以小时、天或者周为周期,具有相同的变化趋势;(2)大多数周期间,数据的变化幅度相同或相似,存在少量周期间数据变化幅度有较大差异。
2.2 在线负载资源使用周期性特征分析
在线负载请求到达强度是影响其资源使用的核心因素,本文提出假设:周期性的用户访问/数据到达强度会引发在线负载的周期性资源使用特征。为此,通过1组实验进行分析。
既有数据中心多采用容器技术部署在线负载,并进行资源隔离。因此,本文假设数据中心多在线负载间的资源使用干扰较小。基于容器技术,部署单在线负载,分析其资源使用特征。本文采用典型的Web类型负载——TPC-W,在数据中心单在线负载的场景下,设置用户访问量变化周期为1 h,周期内用户访问符合正弦分布,用户访问强度为40次/秒~120次/秒。
以上实验展示了在周期性的用户访问强度下,在线负载资源使用变化的情况。分析可知,在用户访问强度变化以1 h为周期的情况下,其资源使用量的变化周期也为1 h。另外,在相同的用户访问强度下,每个资源周期内的数值波动范围相同,周期间的变化趋势也有较强的相似性。在第3个周期(图2中横坐标170~230),我们将请求强度变化从40次/秒~120次/秒提高到40次/秒~160次/秒,在图2a中可以看到,在本周期内负载的内存使用量变化从1 700 MB~2 500 MB变为1 700 MB~2 700 MB,增长明显。同样,在第7个周期(图2中横坐标410~470),将线程变化从40次/秒~120次/秒降低到40次/秒~80次/秒,其内存和CPU使用量在第7个周期内也呈现明显的降低。
Figure 2 Variations in resource consuming of online services图2 在线负载运行的资源使用情况
综上,具有周期性请求/数据到达强度的在线负载,其资源使用量会随着请求/数据到达变化,且呈现相近的周期特征。
3 基于周期性特征的在线负载资源预测方法PRP
本文将在线负载资源使用的周期性特征引入资源预测中。如图3所示是在线负载资源预测方法PRP的框架。
Figure 3 Overview of PRP图3 在线负载资源预测方法PRP框架
PRP方法首先应用自相关函数法对在线负载资源使用量样本序列进行周期识别;其次将样本序列依据周期进行划分得到子序列集;再次计算所有子序列间的相似度,并根据相似度进行子序列划分;最终根据预测时刻点在各类子序列中对应时刻点的资源使用变化率计算资源需求预测值。
3.1 在线负载资源使用的周期识别
本文选用自相关函数方法对在线负载的内存和CPU资源使用量进行周期量化识别。自相关函数被广泛用于信号的潜在周期性检测中。对于1个有限长度的离散序列,当序列中2个变量存在关系时,随着其中1个变量数值的确定,另1个变量会有不同的取值,但是该变量的取值有一定的规律性。这种统计规律可以通过自相关函数来表示,如式(1)所示:
(1)
其中,N是有限长的离散序列y的长度,x表示元素下标,k表示自变量。
自相关函数有以下性质:
性质1周期函数的自相关函数依然存在周期性,并且其周期性与原函数周期频率相同。
性质2自相关函数具有偶函数特点,即R(k)=R(-k)。
性质3任意函数的自相关函数都会周期性地存在极大值和极小值,并且在相邻的极大值和极小值之间,自相关函数是单调的。
本文的目的是利用自相关函数的特性计算出内存和CPU使用量序列的周期值。
由于内存和CPU的预测方法以及周期相同,因此,下面均以资源使用序列统一指代内存和CPU序列,L={l1,l2,…,ln},其中li表示第i个时间点对应的资源使用量,n为资源使用量样本总数。具体的判别和度量流程如下所示:
方法1在线负载资源使用周期识别方法
(1)收集在线负载资源使用数据;
(2)以5 s为固定步长,截取样本数据,构建在线负载资源序列ML;
(3)根据式(1)计算出序列ML的自相关序列MR;
(4)求取MR中任意2个相邻的极大值,计算它们的时间距离t_maxi;
(5)将所有t_maxi求和,然后取平均值;
(6)所得到的平均值即为资源使用序列ML的周期。
3.2 在线负载资源使用样本子序列分类
在线负载资源使用样本子序列分类的目的是在序列周期识别的基础上,统计具有不同资源使用量及变化趋势的子序列类,最终为资源预测提供依据。
本文采用欧氏距离作为资源使用样本子序列间相似度度量,称为子序列距离,计算如式(2)所示:
(2)
其中,pi表示第i个序列,pj表示第j个序列,pik表示第i个序列中的第k个元素数据,同理,pjk表示第j个序列中的第k个元素数据。
显然,子序列距离越大,序列间相似度越小,反之则序列间相似度越大。同时,本文采用聚类方法对资源使用样本子序列进行分类。如第2节所述,在线负载资源使用的周期性特征呈现出多数周期间资源使用量值及变化幅度相同或相似,少数周期间则存在较大差异的特点。因此,本文将在线负载资源使用样本子序列分为常规序列和异常序列。其中,常规序列是指在线负载资源使用子序列中数据变化范围相似的大多数的子序列,异常序列是指在线负载资源使用子序列中数据变化发生异常的子序列。本文首先给出如下定义:
定义1全局子序列最大距离:所有资源使用样本子序列之间距离的最大值dmax:
dmax=max({d(xi,xj)|xi∈X,xj∈X})
(3)
其中,d(xi,xj)表示xi、xj之间的距离,X表示样本序列集合。
定义2全局子序列最小距离:所有资源使用样本子序列之间距离的最小值dmin:
dmin=min({d(xi,xj)|xi∈X,xj∈X})
(4)
其中,d(xi,xj)表示样本序列xi,xj之间的距离,X表示样本序列集合。
定义3子序列类距离阈值:所有资源使用样本子序列类中序列之间距离的最大值:
α=(dmax-dmin)×a+dmin
(5)