发明名称 一种基于向量自回归的云计算中虚拟机监控方法
摘要 一种基于向量自回归的云计算中虚拟机监控方法是一种新型的监控方法。由于云计算中虚拟机监控的特殊性监控的数据量较为庞大,采用周期性监控会对监控系统造成巨大的压力,我们采用更节省资源的“拉”模式的监控,但是具体什么时候采集数据,需要智能的判断,不但增加了实时性,而且也减少系通的资源压力,基于VAR的云计算中虚拟机监控,即做到实时性的监控,又提高了资源的利用率。该模型能够根据以往的数据模型建立新的回归方程,来对下一个周期的资源数据做出预测,根据这些预测值配合“拉”模式进行模拟数据的采集。这种算法增加了资源监控的自适应性和实时性。
申请公布号 CN102799512B 申请公布日期 2015.06.03
申请号 CN201210228963.8 申请日期 2012.07.04
申请人 南京邮电大学 发明人 付雄;朱鑫鑫;王汝传;孙力娟;韩志杰;季一木;戴华
分类号 G06F11/30(2006.01)I;G06F9/455(2006.01)I 主分类号 G06F11/30(2006.01)I
代理机构 南京经纬专利商标代理有限公司 32200 代理人 叶连生
主权项 一种基于向量自回归的云计算中虚拟机监控方法,其特征在于该方法所包含的步骤为:步骤1)每个被监控的物理节点都有一个采集器,主要负责该物理节点监控数据的采集,包括主机名、处理器、内存、CPU利用率、时钟速度、物理内存总量、虚拟内存和可用磁盘空间,以及运行在该物理节点上的多个虚拟机的资源等信息;步骤2)各个物理节点的采集器将监控到的数据交给监控模块的信息收集器,信息收集器对接收到的数据进行一定的格式化处理,并提取出物理节点的数据发送给VAR控制器模块,其中VAR指的是向量自回归模型,其它的虚拟机信息直接交给反馈模块;步骤3)定义一个最小监控信息采集周期T<sub>min</sub>,作为时间序列中最短的时间间隔,再定义一个T<sub>max</sub>=w×T<sub>min</sub>,w为正整数,T<sub>max</sub>为最大的监控信息采集周期,按照T<sub>min</sub>周期采集样本性能信息,把资源的利用率作为评价网格监控事件的参数,包括:CPU利用率,带宽利用率,内存利用率,I/O利用率;步骤4)定义一个存储最初采集监控数据的样本的二维数组x[j][i]={x<sub>1ij</sub>,x<sub>2ij</sub>,x<sub>3ij</sub>,x<sub>4ij</sub>},i=1...n,j=0...m,n代表监控节点的个数,m大于100;其中i代表集群中监控节点的序号,j代表样本时间点,集合中的四个子项,x<sub>1ij</sub>代表CPU使用率、x<sub>2ij</sub>代表内存使用率、x<sub>3ij</sub>代表I/O使用率、x<sub>4ij</sub>代表带宽使用率,样本(x<sub>1ij</sub>,x<sub>2ij</sub>,x<sub>3ij</sub>,x<sub>4ij</sub>)表示一个时间点t<sub>j</sub>机器i监测到的性能数据,形成一段时间的样本,时间点之间的间隔为T<sub>min</sub>;并定义安全计时器T<sub>s</sub>和最大监控间隔时间T<sub>max</sub>=w×T<sub>min</sub>,其中w为正整数;步骤5)接下来对这些样本数据归一化处理,即对每个时间点的x[1...n]进行处理,x[1...n]表示每个监控节点上的当前时间的所有数据,处理如下:X<sub>1ij</sub>=(x<sub>1ij</sub>‑x<sub>1min</sub>)/(x<sub>1max</sub>‑x<sub>1min</sub>),x<sub>1min</sub>代表在j时刻n个节点x<sub>1ij</sub>值的最小值,x<sub>1max</sub>代表最大值;同样求出X<sub>2ij</sub>,X<sub>3ij</sub>,X<sub>4ij</sub>的值,分别代表归一化后的数据,将x[j][i]={x<sub>1ij</sub>,x<sub>2ij</sub>,x<sub>3ij</sub>,x<sub>4ij</sub>}处理后变为X[j][i]={X<sub>1ij</sub>,X<sub>2ij</sub>,X<sub>3ij</sub>,X<sub>4ij</sub>},X[j][i]代表数据归一化处理后的样本数组;步骤6)将样本均值处理,将每一个时间点内的数据X[j][1]至X[j][n],进行均值处理,并保存到一个中间数组Y<sub>t</sub>[1...4]中,共4个维度,<img file="FDA0000659517710000011.GIF" wi="458" he="182" />,k=1,2,3,4,t=1...m,n代表监控节点个数,t代表时间点,每个时间点都进行如此处理,取对数主要是为了消除异方差,最后将每个时间点内经过均值处理得到的4个数赋值给X[t][1],作为最终的输入样本;步骤7)采用PP(Phillips‑Perron test)单位根检验法对每一个时间序列检验是否存在单位根,若这些时间序列的一阶差分不是平稳序列,则对时间序列进行差分处理,采用迭代相乘法计算出各个参数的值,将经过差分处理的新的时间序列再次进行单位根检验,若仍然存在单位根,将进一步差分处理,直到不存在单位根,即时间序列的一阶差分是平稳序列,若超过三次差分则重新选择样本;步骤8)确定CPU使用率、内存使用率、I/O使用率、带宽使用率为VAR模型的内生变量,且输入样本为Y<sub>t</sub>[1...4]数组,t=1...m;四个时间序列分别用L<sub>cpu(t)</sub>、L<sub>ram(t)</sub>、L<sub>io(t)</sub>、L<sub>bw(t)</sub>表示;建立如下方程模型VAR(p):<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><msub><mi>Y</mi><mi>t</mi></msub><mo>=</mo><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>p</mi></munderover><msub><mi>&Pi;</mi><mi>i</mi></msub><msub><mi>Y</mi><mrow><mi>t</mi><mo>-</mo><mi>i</mi></mrow></msub><mo>+</mo><msub><mi>U</mi><mi>t</mi></msub><mo>=</mo><msub><mi>&Pi;</mi><mn>1</mn></msub><msub><mi>Y</mi><mrow><mi>t</mi><mo>-</mo><mn>1</mn></mrow></msub><mo>+</mo><msub><mi>&Pi;</mi><mn>2</mn></msub><msub><mi>Y</mi><mrow><mi>t</mi><mo>-</mo><mn>2</mn></mrow></msub><mo>+</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>+</mo><msub><mi>&Pi;</mi><mi>p</mi></msub><msub><mi>Y</mi><mrow><mi>t</mi><mo>-</mo><mi>p</mi></mrow></msub><mo>+</mo><msub><mi>U</mi><mi>t</mi></msub><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000659517710000021.GIF" wi="1532" he="143" /></maths>式中Π<sub>i</sub>,i=1...p,代表第i个带估计参数N×N阶矩阵;其中U<sub>t</sub>代表是N×1阶随机误差列向量,p为模型最大滞后阶数,Y<sub>t</sub>代表时间序列的列向量;步骤9)接下里计算出滞后阶数p,选择赤池信息准则AIC与施瓦茨准则SC来确定滞后阶数,通过以下的计算公式来得到相应的值:<maths num="0002" id="cmaths0002"><math><![CDATA[<mrow><mi>AIC</mi><mo>=</mo><mo>-</mo><mn>2</mn><mrow><mo>(</mo><mfrac><mrow><mi>log</mi><mi>L</mi></mrow><mi>T</mi></mfrac><mo>)</mo></mrow><mo>+</mo><mfrac><mrow><mn>2</mn><mi>p</mi></mrow><mi>T</mi></mfrac><mo>,</mo><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000659517710000022.GIF" wi="1556" he="148" /></maths><maths num="0003" id="cmaths0003"><math><![CDATA[<mrow><mi>SC</mi><mo>=</mo><mo>-</mo><mn>2</mn><mrow><mo>(</mo><mfrac><mrow><mi>log</mi><mi>L</mi></mrow><mi>T</mi></mfrac><mo>)</mo></mrow><mo>+</mo><mfrac><mrow><mi>p</mi><mi>log</mi><mi>T</mi></mrow><mi>T</mi></mfrac><mo>;</mo><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>3</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000659517710000023.GIF" wi="1549" he="148" /></maths>其中L为似然估计,T代表样本容量;首先建立VAR(p)模型,分别建立VAR(1),VAR(2),VAR(3),VAR(4)来比较AIC与SC的值,p<sub>max</sub>={p|AICi与SCj代都取最小,i,j∈1,2,3,4},p<sub>max</sub>确定为最终的滞后阶数;步骤10)接下来建立最终的VAR(p<sub>max</sub>)模型,通过样本会预测出上述的估计参数矩阵,得到线性模型如下:L<sub>cpu(t)</sub>=π<sub>111</sub>L<sub>cpu(t‑1)</sub>+π<sub>112</sub>L<sub>ram(t‑2)</sub>+π<sub>113</sub>L<sub>io(t‑1)</sub>+π<sub>114</sub>L<sub>bw(t‑1)</sub>+π<sub>211</sub>L<sub>cpu(t‑1)</sub>+π<sub>212</sub>L<sub>ram(t‑2)</sub>+π<sub>213</sub>L<sub>io(t‑1)</sub>+π<sub>214</sub>L<sub>bw(t‑1)</sub>+...+π<sub>p11</sub>L<sub>cpu(t‑1)</sub>+π<sub>p12</sub>L<sub>ram(t‑2)</sub>+π<sub>p13</sub>L<sub>io(t‑1)</sub>+π<sub>p14</sub>L<sub>bw(t‑1)</sub>+u<sub>1t</sub>L<sub>ram(t)</sub>=π<sub>121</sub>L<sub>cpu(t‑1)</sub>+π<sub>122</sub>L<sub>ram(t‑2)</sub>+π<sub>123</sub>L<sub>io(t‑1)</sub>+π<sub>124</sub>L<sub>bw(t‑1)</sub>+π<sub>221</sub>L<sub>cpu(t‑1)</sub>+π<sub>222</sub>L<sub>ram(t‑2)</sub>+π<sub>223</sub>L<sub>io(t‑1)</sub>+π<sub>224</sub>L<sub>bw(t‑1)</sub>+...+π<sub>p21</sub>L<sub>cpu(t‑1)</sub>+π<sub>p22</sub>L<sub>ram(t‑2)</sub>+π<sub>p23</sub>L<sub>io(t‑1)</sub>+π<sub>p24</sub>L<sub>bw(t‑1)</sub>+u<sub>2t</sub>L<sub>io(t)</sub>=π<sub>131</sub>L<sub>cpu(t‑1)</sub>+π<sub>132</sub>L<sub>ram(t‑2)</sub>+π<sub>133</sub>L<sub>io(t‑1)</sub>+π<sub>134</sub>L<sub>bw(t‑1)</sub>+π<sub>231</sub>L<sub>cpu(t‑1)</sub>+π<sub>232</sub>L<sub>ram(t‑2)</sub>+π<sub>233</sub>L<sub>io(t‑1)</sub>+π<sub>234</sub>L<sub>bw(t‑1)</sub>+...+π<sub>p31</sub>L<sub>cpu(t‑1)</sub>+π<sub>p32</sub>L<sub>ram(t‑2)</sub>+π<sub>p33</sub>L<sub>io(t‑1)</sub>+π<sub>p34</sub>L<sub>bw(t‑1)</sub>+u<sub>3t</sub>L<sub>bw(t)</sub>=π<sub>141</sub>L<sub>cpu(t‑1)</sub>+π<sub>142</sub>L<sub>ram(t‑2)</sub>+π<sub>143</sub>L<sub>io(t‑1)</sub>+π<sub>144</sub>L<sub>bw(t‑1)</sub>+π<sub>241</sub>L<sub>cpu(t‑1)</sub>+π<sub>242</sub>L<sub>ram(t‑2)</sub>+π<sub>243</sub>L<sub>io(t‑1)</sub>+π<sub>244</sub>L<sub>bw(t‑1)</sub>+...+π<sub>p41</sub>L<sub>cpu(t‑1)</sub>+π<sub>p42</sub>L<sub>ram(t‑2)</sub>+π<sub>p43</sub>L<sub>io(t‑1)</sub>+π<sub>p44</sub>L<sub>bw(t‑1)</sub>+u<sub>4t</sub>式子中的p即是第9步骤的预测值滞后阶数p<sub>max</sub>,其中π代表计算出的估计参数,方程表示的是各变量上一时间点的值与下一时间点的值的关系,将最近一次测得的数据代入方程即可以得到下一时间点的预测值,得到L<sub>cpu(t)</sub>、L<sub>ram(t)</sub>、L<sub>io(t)</sub>、L<sub>bw(t)</sub>的值;步骤11)根据各个参数的重要程度,利用权值处理得一个综合值,cpu使用率相对重要,其权值设置的要高,确定λ<sub>1</sub>,λ<sub>2</sub>,λ<sub>3</sub>,λ<sub>4</sub>的值,得到综合值R=λ<sub>1</sub>L<sub>cpu(t)</sub>+λ<sub>2</sub>L<sub>ram(t)</sub>+λ<sub>3</sub>L<sub>io(t)</sub>+λ<sub>4</sub>L<sub>bw(t)</sub>;步骤12)如过R达到指定的阀值R<sub>max</sub>,则监控模块主动向所有服务器的采集器发出监控命令,安全计时器T<sub>s</sub>清零开始计时,转移到下一步;如果R小于R<sub>max</sub>,查看T<sub>s</sub>是否达到指定的最大监测间隔时间T<sub>max</sub>=w×T<sub>min</sub>,w为正整数,如果达到的话也需要主动进行监测并转移到下一步,否则不监测,直接返回;步骤13)如果T<sub>s</sub>&gt;=T<sub>max</sub>,则定义一个二维数组数组存储新的样本x′[j][i]={x<sub>1ij</sub>,x<sub>2ij</sub>,x<sub>3ij</sub>,x<sub>4ij</sub>},其中的i与j的含义与x[j][i]的相同,将原样本的x[w+1]至x[m]分别赋值给x′[1]至x′[m‑w],最近预测的值赋值给x′[m‑w+1]至x′[m],即除去一些旧的样本,加上最新的数据作为最新的样本数据,重新建立VAR模型,如果T<sub>s</sub>&lt;T<sub>max</sub>,与上面一样,除去部分最早的旧的样本,加上一些新的样本,形成下一轮的样本x′[j][i];步骤14)重新生成样本,重复上述步骤在进行样本的归一化处理平稳性检验,重新生成VAR模型,到步骤10,生成新的回归方程,并进行新的预测。
地址 210003 江苏省南京市鼓楼区新模范马路66号