本发明涉及软件运行环境监测领域,具体涉及一种基于arima的软件运行环境要素行为趋势分析方法。
背景技术:
自适应软件是一种能够通过调整自身行为及结构来适应运行环境变化的软件。现有的自适应软件多采用eca(事件:条件→操作)的方式来应对运行环境要素发生的变化,即当检测到运行环境要素已经发生变化并达到阈值后,根据提前设定的规则触发相应的适应策略,并在策略的驱动下完成适应。
然而该方法存在如下不足:首先,该方法是当检测到环境要素已经发生变化后才进行适应,这会导致环境要素的真实值过高时已经对自适应软件的服务质量产生影响,或者环境要素的真实值过低时造成计算资源的浪费。其次,由于自适应软件运行环境的变更很难在设计阶段被完全描述清楚,因此提前设定的规则可能无法满足不断变化的环境要素的需要。
基于此,本发明提出一种基于arima(auto-regressiveintegratedmovingaverage,自回归差分移动平均模型)的软件运行环境要素行为趋势分析方法,根据环境要素行为的历史数据对其未来的行为趋势进行分析和预计,为能在环境要素实际发生变更前、预先制定适应策略奠定基础。
技术实现要素:
本发明提供了一种基于arima的软件运行环境要素行为趋势分析方法,包括依次进行的如下步骤:
步骤一、选取软件运行环境要素,并且选取的运行环境要素受到使用时间的影响,易于获取数据;
步骤二、收集软件运行环境要素行为的历史数据,绘制历史数据序列图;
步骤三、对历史数据序列图进行差分处理,移除数据的周期性和趋势性;
步骤四、对经过差分处理的历史数据序列图进行自相关分析和偏自相关分析,建立自相关函数acf(autocorrelationfunction)和偏自相关函数pacf(partialautocorrelationfunction);
步骤五、对模型参数进行估计,基于建立的acf和pacf函数,构造环境要素行为趋势分析模型;
步骤六、对构造的模型实施残差分析和显著性检验;
步骤七、基于构造的模型,对环境要素行为趋势进行预计和分析。
进一步地,所述步骤一中环境要素分为计算环境要素与用户环境要素,计算环境要素包括带宽、内存、cpu使用率、负载等与计算相关的环境要素;用户环境要素包括访问数量、刷新频率等与软件用户使用特征相关的要素。
进一步地,所述步骤二中环境要素行为是指环境要素的取值发生变更或状态发生变更,软件运行环境要素行为特征包括:
1)所有能预测的计算环境要素的行为都存在上升或下降的取值变更,且模式固定(不是上升就是下降),因此,计算环境要素的行为都存在一种变化模式;
2)所有能预测的计算环境要素的行为都随着时间变化,这一变化可以理解为由过去到现在至未来,因此,除非出现极为严重的故障,例如:cpu跳线、烧毁等,这些计算环境要素都会延伸到未来;
3)所有能预测的计算环境要素的行为都具有不规则性,例如,cpu使用率的取值虽然只会出现上升或下降的情况,但并不能只上升或者只下降,意味着这些计算环境要素的取值存在波动,取值不具有规则。
进一步地,所述步骤四中自相关函数acf和偏自相关函数pacf的计算公式如下所示:
自相关函数的计算公式为:
其中:cov(yt,yt-k)、γt表示自协方差,var(yt)、γ0表示样本差;
偏自相关函数的计算公式为:
其中,
本发明的基于arima的运行环境要素行为趋势分析方法,可以实现:
对软件运行环境要素行为将要如何发生变化进行分析和预判,弥补现有技术只关注自适应软件在环境要素已经发生变化的情况下如何响应的不足,通过收集环境要素的历史数据,实现对其未来行为趋势进行分析,在环境要素实际发生变更前,预先根据分析结果确定环境要素实际发生变更时所对应的适应策略,或者在线制定相应的适应策略。
附图说明
图1为基于arima的软件运行环境要素行为趋势分析方法流程图;
图2为cpu利用率原始数据序列图;
图3为一次差分后的数据序列图;
图4为一次差分后的acf图;
图5为一次差分后的pacf图;
图6为残差序列分析结果图;
图7为模型对cpu使用率行为趋势分析图。
具体实施方式
下面详细说明本发明的具体实施,有必要在此指出的是,以下实施只是用于本发明的进一步说明,不能理解为对本发明保护范围的限制,该领域技术熟练人员根据上述本发明内容对本发明做出的一些非本质的改进和调整,仍然属于本发明的保护范围。
本发明提供了一种基于arima的软件运行环境要素行为趋势分析方法,实现流程如图1所示,下面,具体进行介绍,其包括如下步骤:
步骤一、选取软件运行环境要素,环境要素分为计算环境要素和用户环境要素,其中,计算环境要素包括带宽、内存、cpu使用率、负载等与计算相关的环境要素;用户环境要素包括访问数量、刷新频率等与软件用户的使用特征相关的要素,选取的运行环境要素容易受到使用时间的影响,并且易于获取数据;
环境要素变更类型包括取值型变更和状态型变更,对于取值型变更,如:cpu的使用率、内存的占用率等,对于状态型变更,如:磁盘驱动、网卡驱动等。
由于用户环境要素发生变化时会导致计算环境要素也随之发生变化,因此本发明只对计算环境要素的行为趋势进行分析。本发明的环境要素行为是指计算环境要素发生了取值型变更事件,行为趋势用于描述环境要素取值随时间变化的趋势。
表1从环境实体、类别、获取方法、行为、是否可预测五方面对计算环境要素进行列举,任何一个计算环境要素均可单独使用。
表1计算环境要素列表
计算环境要素行为特征包括:
1)所有能预测的计算环境要素的行为都存在上升或下降的取值变更,且模式固定(不是上升就是下降),因此可以认为,这些计算环境要素的行为都存在一种变化模式;
2)所有能预测的计算环境要素的行为都随着时间变化,这一变化也可以理解为由过去到现在再发展到未来,因此可以认为,除非出现极为严重的故障,例如:cpu跳线、烧毁等,这些计算环境都将会延伸到未来;
3)所有能预测的计算环境要素的行为都具有不规则性,例如,cpu使用率的取值虽然只会出现上升或下降的情况,但并不能只上升或者只下降,这也意味着这些计算环境要素的取值存在波动,取值不具有规则。
步骤二、收集软件运行环境要素行为的历史数据,绘制历史数据序列图;
收集数据可使用系统自带的收集工具,也可以在系统里安装一些辅助工具插件或编写程序来采集数据,需要保证的是使用的插件对系统的影响较小,不会影响到收集数据的准确性,提取从软件开始运行到当前时刻的运行环境要素行为数据,按照时间顺序形成时间序列,依据时间序列数据绘制时间序列图。
步骤三、对基于步骤二中建立的历史数据序列图进行差分处理,移除数据的周期性和趋势性;
一般来说,原始时间序列的均值会上下波动,不符合平稳性,需要对其进行差分处理,因此逐次对其进行1阶或高阶差分处理,判断差分后的时间序列是否具有平稳性,当1阶差分后的时间序列变化趋势趋于平缓,取值在0附近波动,说明平稳性较好,则取差分阶数为1,否则逐次递增差分处理的阶数,直到满足平稳性要求为止,最终实现数据平稳的差分阶数对应arima(p,d,q)模型中的d。
步骤四、对基于步骤三中经过差分处理的历史数据序列图进行自相关分析和偏自相关分析,建立自相关函数acf和偏自相关函数pacf;
自相关函数acf的计算公式为:
其中:cov(yt,yt-k)、γt表示自协方差,var(yt)、γ0表示样本差;
偏自相关函数pacf的计算公式为:
其中,
计算得到自相关函数acf和偏自相关函数pacf值后,依据计算结果绘制自相关acf图和偏自相关pacf图,由于一组数据可能获得多个p,q组合,因此接下来需要进行模型的识别,确定最优p,q组合。
步骤五、对模型的参数进行估计,基于步骤四中建立的acf和pacf函数,构造环境要素行为趋势分析模型;
依据最小二乘法或极大似然法对模型参数进行估计,从p,q组合中最终确定一组最优p,q作为arima(p,d,q)模型中的p,q。
步骤六、基于步骤五中构造的模型,实施残差分析和显著性检验;
对拟合得到的模型进行残差分析,是检验模型的残差是否独立,即检验残差序列是否为均值0、方差1的白噪声过程。对拟合得到的模型参数进行显著性检验,用于检验每一个未知参数是否显著非零,删除不显著参数使得模型结构最精简。
步骤七、基于步骤五中构造的模型,实现对环境要素行为趋势的分析。
基于构造的模型,对于给定预计时间值,计算环境要素的取值,进而对环境要素行为趋势进行分析。
对于本发明实施例,执行如下过程:
1、选取cpu使用率作为本实施例的软件运行环境要素;
2、收集cpu使用率的历史数据,形成历史数据序列图;
通过部署在计算节点上的运行环境监控工具hyperic-sigar记录软件运行时的各种环境信息(例如:cpu利用率、硬盘i/o、内存、网络等),通过编写程序脚本,提取记录信息中的时间戳和cpu利用率数据,获得数据集,以5分钟的间隔递增,形成cpu利用率的时间序列图,如图2所示。
3、对cpu利用率历史数据序列图进行差分处理,移除数据的周期性和趋势性;
从cpu利用率的收集数据可以看出,cpu利用率随时间的变化趋势发生了变化,且均值上下波动,认为该时间序列不符合平稳性,因此对原始时间序列进行1阶差分处理,判断差分后的时间序列是否具有平稳性。对1阶差分后的数据再次绘制序列图,如图3所示。可以看出,经过一次差分后,时间序列的变化趋势趋于平缓,取值始终在0附近波动,平稳性较好,因此,取差分阶数d为1。
4、对一次差分的数据进行自相关性和偏自相关性分析;
根据自相关函数和偏自相关函数的计算公式(1)和(2),编写python脚本计算自相关函数acf和偏自相关函数pacf,并依据计算结果绘制acf图和pacf图,如图4、图5所示。
5、对模型的参数进行估计,确定acf对应armia模型中p的阶数,pacf对应armia模型中q的阶数;
由图4和图5可知,acf和pacf分别在1个和4个滞后项后截尾,取p的阶数为1,q的阶数为4,构建arima(1,1,4)模型,如式(3)所示:
yt=0.808×yt-1 εt 1.088×εt-1-0.359×εt-3 0.259×εt-4(3)
其中,yt是t时刻cpu利用率的观测值,yt-1是t-1时刻cpu利用率的观测值,{εt}是标准正态白噪声序列,e(εt)=0,
6、对模型进行显著性检验和残差分析;
模型显著性检验结果如表2所示,r平方值为0.722,拟合程度较好。对于本实验,原假设是“自回归项和移动平均项的系数不为0”,而显著性小于0.05说明该假设为真时拒绝该假设的概率为0,意味着系数不为0,即自回归项和移动平均项的显著性水平均小于0.05,说明系数均显著不为0。
表2模型显著性检验结果
基于对拟合得到的模型进行残差分析,检验模型的残差是否独立,即检验残差序列是否为均值0、方差1的白噪声过程。对arima(1,1,4)进行残差分析,分析结果如图6所示,残差序列中残差值都在0附近波动,均值为0,平稳性较好,因此,arima(1,1,4)模型拟合合理。
7、利用构建的模型,对cpu利用率行为变化趋势进行预计和分析;
利用式(3)对cpu利用率行为趋势进行分析,分析结果如图7所示。图中的纵坐标代表cpu使用率,横坐标为数据的收集点,可以看出,在第185个数据收集点之后,cpu的使用率开始上升,且会持续上升并超过阈值。
尽管为了说明的目的,已描述了本发明的示例性实施方式,但是本领域的技术人员将理解,不脱离所附权利要求中公开的发明的范围和精神的情况下,可以在形式和细节上进行各种修改、添加和替换等的改变,而所有这些改变都应属于本发明所附权利要求的保护范围,并且本发明要求保护的产品各个部分和方法中的各个步骤,可以以任意组合的形式组合在一起。因此,对本发明中所公开的实施方式的描述并非为了限制本发明的范围,而是用于描述本发明。相应地,本发明的范围不受以上实施方式的限制,而是由权利要求或其等同物进行限定。
1.一种基于arima的软件运行环境要素行为趋势分析方法,其特征在于,包括依次进行的如下步骤:
步骤一、选取软件运行环境要素,并且选取的运行环境要素受到使用时间的影响,易于获取数据;
步骤二、收集软件运行环境要素行为的历史数据,绘制历史数据序列图;
步骤三、对历史数据序列图进行差分处理,移除数据的周期性和趋势性;
步骤四、对经过差分处理的历史数据进行自相关分析和偏自相关分析,建立自相关函数acf(autocorrelationfunction)和偏自相关函数pacf(partialautocorrelationfunction);
步骤五、对模型参数进行估计,基于建立的acf和pacf函数,构造环境要素行为趋势分析模型;
步骤六、对构造的模型实施显著性检验和残差分析;
步骤七、基于构造的模型,对环境要素行为趋势进行预计和分析。
2.如权利要求1所述的方法,其特征在于,所述的步骤一中,环境要素分为计算环境要素与用户环境要素,其中,计算环境要素包括带宽、内存、cpu使用率、负载等与计算相关的环境要素;用户环境要素包括访问数量、刷新频率等与用户使用特征相关的环境要素。
3.如权利要求1所述的方法,其特征在于,所述的步骤二中,软件运行环境要素行为是指环境要素的取值发生变更或状态发生变更,软件运行环境要素行为特征包括:
1)所有能预测的计算环境要素的行为都存在上升或下降的取值变更,且模式固定(不是上升就是下降),因此,计算环境要素的行为都存在一种变化模式;
2)所有能预测的计算环境要素的行为都随着时间变化,这一变化可以理解为由过去到现在至未来,因此,除非出现极为严重的故障,例如:cpu跳线、烧毁等,这些计算环境要素都会延伸到未来;
3)所有能预测的计算环境要素的行为都具有不规则性,例如,cpu使用率的取值虽然只会出现上升或下降的情况,但并不能只上升或者只下降,意味着这些计算环境要素的取值存在波动,取值不具有规则。
4.如权利要求1所述的方法,其特征在于,所述的步骤四中,自相关函数acf和偏自相关函数pacf的计算公式如下所示:
自相关函数的计算公式为:
其中:cov(yt,yt-k)、γt表示自协方差,var(yt)、γ0表示样本差;
偏自相关函数的计算公式为:
其中,