Prediction mechanisms for monitoring state of cloud resources using Markov chain model
Journal of Parallel and Distributed Computing,2016,CCF B类
文章作用的结果为distributed computing systems
开始了解使用马尔科夫链来进行预测,从实验结果来看准确率能到80%,同时ETD值基本是小于40%的。
问题:如何选择开始状态?似乎是很基础的东西。
摘要
云计算共用了很多资源,比如CPU、应用平台和下游服务等。对这些资源的精确预测可以显著降低因为不必要的推送和拉取信息造成的网络超载(network overhead)。然而,因为众所周知的流量波动性,精确预测是难以完成的。本文选择了两个监控机制,第一个是连续马尔科夫模型,第二个是离散马尔科夫模型。结果现实,连续马尔科夫模型比离散马尔科夫模型表现更好,同时比Grid Resource Information Retrieval机制表现更好。并击败了另一个采用的预测式算法的马尔科夫链模型。
Introduction
因为云计算的计费原理,因此对资源的精确监控对于系统性能、计费与应用会起着至关重要的作用。
监控可以获得信息、KPI,并检测SLA违约,对云服务平台和用户而言都有着很重要的作用。
一个被监控的资源(文中称为生产者producer),会通过网络将其状态发送给一个或多个master结点(文中称为消费者consumer)。生产者可能会预测式地发送其状态给消费者或是等待直到消费者发送一个状态更新。前者是一个push模型,而后者是一个pull模型。
因此,对云资源的监控会受到一个精确预测模型的增益,因为它能够减轻网络的负载,减少不必要的push/pull信息。比如,周期性地上传信息很容易导致生产者上传完全一样的信息,消费者这边也是同理。如果消费者成功地在一定的阈值内完成了预测,那生产者就完全不用发送信息了。然而这是很难做到的。
本文使用的方法是连续马尔科夫模型与离散马尔科夫模型。这两个模型都会在资源预测值大于阈值的时候push资源的状态(更新)。这两个模型都会基于历史的训练数据产生一个K-状态的马尔科夫模型。
验证数据集使用的是google的2011年发布的29天数据,将使用一半作为训练集。
马尔科夫链
马尔科夫链的基础是贝叶斯方法,现有的活动发生的概率可以用过去发生活动的概率的函数表示。
2.1 离散马尔科夫
离散马尔科夫的性质可以表示为
P
[
X
n
+
1
=
j
∣
X
n
=
i
,
X
n
−
1
=
i
n
−
1
,
.
.
.
,
X
0
=
i
0
]
=
P
[
X
n
+
1
=
j
∣
X
n
=
i
]
=
P
i
j
P[X_{n+1}=j|X_n=i,X_{n-1}=i_{n-1},...,X_0=i_0]=P[X_{n+1}=j|X_n=i]=P_{ij}
P[Xn+1=j∣Xn=i,Xn−1=in−1,...,X0=i0]=P[Xn+1=j∣Xn=i]=Pij,其中
P
i
j
P_{ij}
Pij是从状态i转移到状态j的单步概率。这样的转移概率可以被表示为一个K*K
的矩阵,其中K为状态数量。
假设已经指导了一个K维的概率分布向量 π \pi π,则链中状态i在n步之后的概率为向量 π n \pi^n πn的第i个元素。
2.2 连续马尔科夫
在连续马尔科夫中,状态转移可以在任何时间发生。CTMC(Continuous-Time Markov Chain)会根据DTMC(Discrete-Time Markov Time Chain)完成一个状态到另一个状态的转移,每一个状态花费的时间都是参数 λ \lambda λ的指数分布。CTMC模型可以用状态转移矩阵 T = [ P i j ] T=[P_{ij}] T=[Pij]来表示作为DTMC模型,并附带一个时间速率的集合 { λ i j : i , j ∈ S } \{\lambda_{ij}:i,j \in S\} {λij:i,j∈S},其中S是状态空间。这个可以用转移速率矩阵 R = [ λ i j ] R=[\lambda_{ij}] R=[λij],每一个状态i被访问的时候,链都会在那里平均花费 E ( t i ) = 1 / λ i E(t_i)=1/\lambda_i E(ti)=1/λi的时间单元,之后再进行跳转。
模型构建
4.1 预测式模型构建
基于训练数据构建K状态的预测模型。
- 首先通过聚类算法产生K个中心点,本文采用K-means算法,因为速度够快。
- 中心点被用作量化指标(The centroids are used as quantization levels for the training data)
- 量化过的数据集被用来生成转移速率和转移概率矩阵
4.2
目前的算法被分为两个部分,一个是在消费者方面运行的,另一个在生产者方面运行。
初始阶段:
- 从一个固定的时间(一天、一周、一年)收集监控资源的信息
- 输入步骤1的数据与期望状态值K,用K-means产生K个中心点。
- 基于步骤2产生的K个中心点,对训练数据进行量化,产生量化数据集
- 基于步骤3产生的量化数据集,计算转移矩阵T和转移速率矩阵R。T被用于DTMC-base机制中,T被用于CTMC机制中。
- 根据用户需求和监控资源的状态变化,确定ETD值(预测容忍误差上限),定义开始状态。
第二阶段,或是生产者部分算法:
- 在每一个单位时间开始,得到最新的检测数据,并根据给定的T和R完成对下一状态值P的预测。
- 当前最新监控数据C会与步骤1预测的P进行比较。如果小于ETD,则不做任何事情。如果大于ETD,对C进行同样的量化,重新在新的开始状态下初始化概率分布向量 π \pi π,然后将C值推送给消费者端。
- 等待一段时间,重新开始步骤1
第二阶段,消费者部分算法:
消费者会不断预测信息值,直到有新的更新从生产者方向发送过来。
- 每一个时间单位,根据T和R预测状态P,并获得最新的监控数据
- 检查是否存在从生产者发来的数据,如果没有,则将P数据与当前时间向联系并记录,一段时间后重复步骤1。不然,重复生产者方向的同样更新步骤,并记录更新数据C。
- 等待一段时间后重新执行步骤1