2. 北京邮电大学 网络与交换技术国家重点实验室, 北京 100876
提出了一种使用支持向量机(SVM)模型预测作业终止状态的方法.以Google数据集为研究对象,首先分析作业终止状态的影响因素,提出使用作业的静态特征和动态特征作为终止状态分类的特征向量,选择SVM模型主动预测终止状态;然后从特征向量和分类模型2个层面对准确率、假负率、精确度指标进行验证.特征向量实验结果表明,基于静态和动态特征的SVM预测模型比单独使用静态特征和动态特征,分别提高0.94%、-0.01%、1.35%和9.08%、-1.36%、10.91%.分类模型的比较结果显示,SVM分类预测方法比传统的神经网络模型、朴素贝叶斯模型、逻辑回归模型的预测效果好.
2. State Key Laboratory of Networking and Switching Technology, Beijing University of Posts and Telecommunications, Beijing 100876, China
A job failure predicting method based on support vector machine (SVM) model was presented. Google cluster traces were studied. The relevant factors of jobs failure were analyzed and the combination of the static and dynamic characteristic was chosen as the feature vectors. The SVM algorithm was chosen to predict termination status of the jobs. Experiments were conducted to compare different kinds of feature vectors and classification models with Google traces dataset in terms of the accuracy rate, false negative rate and precision rate. It is shown that the combination of static and dynamic features are 0.94%, -0.01% and 1.35% higher than the static features, and 9.08%, -1.36% and 8.91% higher than the dynamic features. Experiments also demonstrate that the SVM model is superior to the traditional neural network extreme machine learning, naive Bayes and logistic regression model in these indexes.
大型异构分布式云集群的作业执行过程中,由于软硬件故障、作业调度资源不足、作业过度使用资源等原因导致作业无法正常完成,从而造成作业执行时间延长、资源浪费的问题,采用失败作业预测可提前终止将会失败状态的作业,确保良好的时间性能,提高资源利用率.
作业失败状态的预测是失败预测领域的一项研究. 失败预测技术受到人们的广泛关注,早期采用贝叶斯预测算法来预测软件可靠性[1],采用朴素贝叶斯(NB,naive Bayes)分类器[2]等预测硬件故障. 随着云计算技术的发展,人们关注于大型异构云平台中作业的失败预测,并采用递归神经网络[3]、线性分析(LDA,linear discriminant analysis)、二次判别分析(QDA,quadratic discriminant analysis)、逻辑回归(LR,logistic regression)等统计学习方法[4]预测作业终止状态. 但该类方法存在使用样本量大,计算复杂的缺点. 同时,由于云平台中存在作业类型、大小、用户约束不同等特点,作业的属性不具有明显的线性可分性. 针对这些问题,提出使用作业的静态特征和动态特征作为预测作业终止状态的特征向量,并引入适应小样本的支持向量机(SVM,support vector machine)模型进行预测. 该方法在Google数据集中进行验证,结果表明其具有更好的分类效果.
1 数据的分析及预处理 1.1 Google集群数据Google cluster trace 是公开的2011年5月Google 数据中心的负载日志[5],显示12 500多个计算节点29 d作业的运行记录数据,大约有672 074个作业,2 600万个任务. 每个作业至少划分为一个任务,每个任务有相应的调度约束、资源限制、详细的资源使用情况等描述.
作业/任务的生命周期期间不同状态表示如图 1所示. 当用户提交作业/任务后,根据其优先级在等待队列中排队等待被调度. 作业/任务的终止状态可以为驱逐、被杀、失败或完成. 当作业/任务的终止状态为非成功完成时,作业/任务重新提交并执行.
![]() |
图 1 作业/任务的生命周期 |
一个作业/任务可能有多个终止状态. 作业重新提交后会重新分配一个ID号,任务重复提交后其ID号不变.
1.2 特征分析对Google集群第1周数据进行分析,统计成功完成作业与非成功完成作业的比率,分析作业失败的相关因素.
1.2.1 作业的终止状态统计分析对作业各终止状态进行统计,一周数据中作业的驱逐率为0.006%,失败率为1.19%,被杀率为38.76%,成功率为60.05%. 驱逐率和失败率很低,被杀率高,约40%的作业非正常终止. 这表示在大型异构并行计算的集群中,资源的浪费率及作业的完成时间因此而增加. 所以对作业进行主动预测,能有效地缩短作业完成时间,提高资源利用率.
1.2.2 作业终止状态的影响因素分析1) 作业的调度约束
作业的调度类约束反映用户提交作业对延迟的敏感度,调度类约束值越高表示用户提交作业对延迟敏感度要求越高. 调度类约束值为0~3,如图 2(a)所示,调度类和作业终止状态的关系,调度类约束过高可能导致作业非正常完成.
2) 作业的优先级约束
Google数据集中,作业没有优先级,作业的优先级是由该作业所划分的所有任务优先级求平均值和标准差来表现. 如表 1所示,将作业优先级划分为4个等级. 图 2(b)描述了不同优先级作业成功与被杀的个数情况,优先级为“自由访问”的作业个数最多成功与被杀个数大致相同,优先级为“生产”的作业个数最少,优先级为中高等的成批作业和“生产”作业时作业的成功个数明显高于被杀个数,在所有优先级等级中作业的驱逐个数和失败个数都很少.
![]() |
表 1 优先级等级描述 |
3) 作业划分的任务个数约束
在云集群中用户提交作业后,系统将作业划分为一个或多个任务在系统中进行执行. 对作业划分的任务个数进行研究,如图 2(c)所示,当划分任务数小于10时,作业的成功率比较高,随着作业划分任务个数的增加,作业的成功率降低,被杀率增加,当划分任务个数大于100时作业成功比率小于10%.
![]() |
图 2 约束条件对作业终止状态的影响 |
4) 任务的重复提交次数
在任务的生命周期中,当任务状态为驱逐、失败、被杀或用户更新时任务会重新提交执行,一定的重复提交次数能够减少作业的失败率,并提高资源的使用率,然而任务重复提交次数过高会浪费资源.对作业划分的任务的重复提交次数进行分析,如图 3所示,随着作业划分的任务重复提交数增加作业的成功率降低被杀率增加,当提交次数大于10时作业的成功率几乎为0、失败率逐渐增加. 从图 3(b)中可以看出,作业划分的任务重复提交数标准差为[10,100)时,作业的失败率增加.
![]() |
图 3 作业重复提交次数的统计值对终止状态的影响 |
5) 作业划分任务的资源请求
作业提交后划分的每个任务会有相应的资源请求,将作业的所有任务资源请求的平均值和标准差来表示作业的资源请求,研究了作业划分任务不同的资源请求平均值对作业各终止状态的影响,如图 4所示. 随着CPU请求的增加,作业的失败率逐渐增加,作业的成功比率始终最高;随着内存(RAM,random access memory)请求增加,作业的成功率先减后增,作业的失败率与成功率相反,先增后减;随着硬盘空间请求的增加,作业的成功率逐渐减低,作业的被杀率逐渐增加.
![]() |
图 4 资源请求对作业各终止状态的影响 |
预测实验前,首先对数据进行清洗. 清洗数据包括在跟踪记录前就已开始运行的数据、在跟踪记录结束后还未结束的数据、未调度就已结束的数据、有缺失信息的数据. 数据清洗前共12 961个作业,数据清洗后共8 498个作业,共清洗掉34.4%的作业.
2 作业失败状态的预测方法定义终止状态成功的作业为成功作业,终止状态驱逐、失败或被杀的作业为失败作业. 将预测结果为失败的作业提前终止.
引入机器学习领域的分类模型对作业进行分类.将SVM分类模型与常用的神经网络中极限学习机(ELM,extreme learning machine)模型[6]、NB模型和逻辑回归(LR,logistic regression)模型进行作业分类比较. 由于将成功作业错分为失败作业的比率,即错分率对用户影响较大,所以在提高作业终止状态分类的准确率和精确率的同时,也注意降低错分率.
2.1 特征向量1) 作业的静态特征
云集群中作业层面的属性由该作业的所有任务属性来表示.统计分析发现,作业划分任务个数过多时,作业的失败率增高;作业调度类约束过高时,作业的失败率增加;但仅用作业CPU、RAM和DISK资源请求的平均值无法线性区分失败作业和成功作业,成功作业的资源请求的CPU、RAM和DISK标准差比失败作业的低.
2) 作业的动态特征
作业的动态特征是指其任务的重复提交次数和各种资源的使用率. 任务资源使用情况是指任务的CPU平均使用率、RAM使用率、硬件的I/O平均使用率和DISK平均使用率. 由统计分析可知,作业重复提交次数越多作业失败率越高,失败作业的资源使用率大于成功作业的资源使用率,代表性结果如图 5所示.
![]() |
图 5 不同优先级的作业资源使用分布图 |
使用作业的10个静态特征和27个动态特征进行主动预测,其中动态特征主要作用是确保主动预测模型的稳定性. 作业的属性特征如表 2所示.
![]() |
表 2 作业属性的静态特征和动态特征 |
SVM是一种用来做模式识别和回归估计的机器学习模型[7],它在特征空间上构造一个间隔最大化超平面对数据进行分类,同时具有小样本、全局优化、泛化能力强等优点[8]. SVM模型因其良好的非线性区分能力,已广泛应用到故障检测领域.
SVM算法原理:作业属性特征作为输入的数据集T={(xi,yi)},其中xi∈χ=Rn,yi∈y={+1,-1},i=1,2,…,N,xi为第i个特征向量,yi为xi的类标记.
求间隔最大化超平面等价于求下面的二次优化问题:
$\begin{align} & \underset{\omega ,b,\xi }{\mathop{min}}\,~\frac{1}{2}\|w{{\|}^{2}}+C\underset{i=1}{\overset{N}{\mathop{\sum }}}\,{{\xi }_{i}} \\ & s.t.~{{y}_{i}}(w{{x}_{i}}+b)\ge 1-{{\xi }_{i}},i=1,2,\ldots ,N \\ & {{\xi }_{i}}\ge 0,i=1,2,\ldots ,N \\ \end{align}$ | (1) |
其中:w为分类平面的法向量,x为输入向量,b为常量,C为惩罚参数,ξ为误差.
从输入空间映射到特征空间的函数称为核函数,使用Matlab的LIBSVM工具箱,选择径向基核函数为
$K\left( x,y \right)=exp~(-\gamma \|x-y{{\|}^{2}})$ | (2) |
实验时需指定参数C和γ.
3 结果评估 3.1 实验设置及评估标准使用Google数据集第1天前12 h数据进行作业失败状态分类. 实验的训练集与测试集按3∶1的比例对数据集进行划分.
实验从特征向量和分类模型2个层面进行对比,特征向量层面实验对比了使用作业的静态特征、动态特征以及静态特征和动态特征相结合的效果,分类模型层面实验使用SVM中的LIBSVM模型、传统神经网络ELM模型、NB模型和LR模型进行对比. 4种模型的参数设置:SVM模型损失函数参数、核函数中的γ分别为1 000、10;ELM模型隐层个数为100;NB模型使用核密度平滑估计“kernel”;LR模型的静态特征、动态特征以及静态特征和动态特征相结合的不同特征向量设置的分类阈值分别为0.1、0.2、0.5. 四种模型的时间复杂度分别为O(N3)、O(N2)、O(N)、O(N3),N为样本数.
评估标准为准确率、假负率、精确率. 将样例根据其真实类别与分类器预测类别的组合划分为真正例(tp)、假正例(fp)、真反例(tn)、假反例(fn),tp+fp+tn+fn 为样本总数. 定义准确率P,为预测为正例的总数中正确的比例,P=tp/(tp+fp);假负率F,为将正例误判为反例的比例,F= fn /(fn+tp);精确率a,为分类正确的样本数占样本总数的比例,a=(tp+tn)/(tp+fp+fn+tn).
为确保实验结果准确性,每个结果取50次实验的平均值. 从作业终止状态对用户的影响程度考虑,实验预测准确率越高,假负率越低,分类模型性能越好.
3.2 实验结果与分析使用不同特征向量不同预测模型的测试结果如表 3所示. 实验结果表明,SVM模型使用静态特征和动态特征作为特征向量,相比只有静态特征、只有动态特征,预测准确率、假负率、精确率分别提高0.94%、-0.01%、1.35%和9.08%、-1.36%、10.91%. 使用静态特征和动态特征为特征向量时,SVM模型相比ELM模型,准确率、假负率、精确率分别提高2.66%、-9.42%、4.73%;相比NB模型,分别提高27.37%、3.15%、29.00%;相比LR模型,分别提高40.07%、-13.16%、35.08%. 综上所述,SVM模型和ELM模型均能够92.97%以上准确预测作业的终止状态,且SVM模型的假负率只有3.38%;使用NB模型的静态和动态特征的假负率最低,但准确率只有68.26%. 这是因为SVM、ELM等神经网络模型,在低数据量情况下,均值高、方差大、不稳定,只有数据量越来越大时,精度才会逐步提升. 和神经网络不同,NB在低数据量情况下,预测结果的均值低、方差低、预测结果稳定. 这里精确率、准确率的检验,使用的是整体样本,数据量大,精度高,而假负率的样本数据量少,因此表 3中NB模型的假负率性能好. 综合考虑预测结果的准确率、精确率、假负率等指标,最终采用SVM模型.
![]() |
表 3 不同特征向量不同预测模型评估结果 |
对大型异构并行计算云集群的作业失败进行统计分析,统计分析结果表明,作业失败与作业优先级、调度类、资源请求/使用等属性具有一定的相关性,提出使用作业的静态特征和动态特征作为特征向量,引入机器学习领域SVM模型. 在Google数据集上进行验证,结果显示使用SVM模型能95.63%准确预测出作业的终止状态. 通过对失败作业采取适当措施,可缩短完成作业使用时间,提高资源的利用率. 下一步工作中,将对作业进行在线失败预测,并采取减缓策略缓解作业的失败率.
[1] | Csenki A. Bayes predictive analysis of a fundamental software reliability model[J]. IEEE Transactions on Reliability , 1990, 39 (2) :177–183. doi:10.1109/24.55879 |
[2] | Hamerly G, Elkan C. Bayesian approaches to failure prediction for disk drives[C]//International Conference on Machine Learning(ICML). Williamstown, MA, USA: IEEE Press, 2001: 202-209. |
[3] | Chen Xin, Lu C D, Pattabiraman K. Failure prediction of jobs in compute clouds: a Google cluster case study[C]//IEEE International Symposium on Software Reliability Engineering. Naples, Italy: IEEE Press, 2014: 167-177. |
[4] | Rosà A, Chen L Y, Binder W. Predicting and mitigating jobs failures in big data clusters[C]//IEEE/ACM International Symposium on Cluster, Cloud and Grid Computing. Shenzhen, China: IEEE/ACM Press, 2015: 221-230. |
[5] | Wilkes J. More Google cluster data[EB/OL].[2016-05-09]. https://code.google.com/p/googleclusterdata/wiki/ClusterData2011. |
[6] | Mao Wentao, Zhao Shengjie, Mu Xiaojie, et al. Multi-dimensional extreme learning machine[J]. Neurocomputing , 2015, 149 (PA) :160–170. |
[7] | Mao Wentao, Xu Jiucheng, Wang Chuan, et al. A fast and robust model selection algorithm for multi-input multi-output support vector machine[J]. Neurocomputing , 2014, 130 (3) :10–19. |
[8] | 丁晓剑, 赵银亮. 双边界支持向量机的理论研究与分析[J]. 北京邮电大学学报 , 2010, 33 (2) :20–23. Ding Xiaojian, Zhao Yinliang. Theory and analysis of double-margin SVM[J]. Journal of Beijing University of Posts and Telecommunication , 2010, 33 (2) :20–23. |