马尔可夫排队模型

马尔可夫排队模型

• 一般生死过程排队模型

   1. M/M/1 排队系统:

  • M: 表示到达过程遵循泊松过程,即顾客的到达是随机的并且与之前的到达无关。
  • M: 表示服务时间遵循指数分布,即服务时间是随机的。
  • 1: 表示只有一个服务台或服务员。

在M/M/1模型中,顾客按照一个固定的平均速率到达,并且被一个服务台服务。如果服务台忙,新到达的顾客将等待。

   2. M/M/m 排队系统:

  • M: 同上,表示到达过程遵循泊松过程。
  • M: 同上,表示服务时间遵循指数分布。
  • m: 表示有m个服务台或服务员。

在M/M/m模型中,如果所有的m个服务台都忙,新到达的顾客将等待。当有服务台可用时,等待的顾客将被服务。

   3. M/M/m/B 排队系统:

  • M: 同上,表示到达过程遵循泊松过程。
  • M: 同上,表示服务时间遵循指数分布。
  • m: 表示有m个服务台或服务员。
  • B: 表示系统的容量为B,这包括正在被服务的顾客和正在等待的顾客。如果系统已满(即有B个顾客在系统中),则新到达的顾客将被拒绝。

在M/M/m/B模型中,系统有一个最大的容量限制。当系统达到这个容量时,新到达的顾客将被拒绝,直到有顾客离开并为新的顾客腾出空间。

马尔可夫模型

• 马尔可夫链

   ■  一个描述可能事件序列的随机模型,其中每个事件的概率仅取决于前一个事件达到的状态。

   ■  从一个状态转移到另一个状态的特性是指数分布。

• 如何解决马尔可夫模型?

   ■  确定要建模的所有可能的系统状态。

   ■  确定状态之间的转移率。

   ■  提取一组线性(平衡)方程并求解每个状态的稳态概率。

   ■  使用稳态概率来查找其他感兴趣的指标 - 响应时间、利用率等。

路线图

• 为了简化,

   ■  专注于马尔可夫模型的一个案例 - 生死模型,其中状态转移仅限于相邻状态。

   ■  单队列系统(具有指数间隔到达时间和指数服务时间)-- 单服务器 -- 多服务器

• 排队网络

• 一个例子:数据中心的可靠性

Kendall 概念

• 描述常见排队系统的特性

• Kendall符号法: A/S/m/B/K/SD 其中

   ■  A 是到达时间间隔的分布

   ■  S 是服务时间的分布

   ■  m 是服务器的数量

   ■  B 是系统的容量

   ■  K 是来源中的顾客数量(或总体大小)

   ■ SD 是服务纪律

单服务器队列的分类:

• M:无记忆性,指数到达

• G:一般,或任何概率分布

一般生死过程排队模型

• 对一个系统进行建模,其中工作任务逐个到达,其中 S 是系统中的工作任务数量。

• 目标:确定 P_n(系统中有n个工作任务的概率)和 P_0(系统中没有工作任务的概率),随后确定其他性能指标。

• 假设:到达时间和服务时间都是指数分布的。

• “生”是指工作任务的到达(从状态 S_j 变为 S_{j+1}

•  “死”是指工作任务在完成服务后离开(从状态 S_j 变为 S_{j-1} )系统

• 当系统处于状态 S_n 时,它内部有 n 个工作任务。新的到达以 \lambda _n 的速率进行,服务速率为\mu _n

• 稳态概率是  P_n=\frac{\lambda_0\lambda_1....\lambda_{n-1}}{\mu_1\mu_2....\mu_n}P_0, 其中  n=1,2,...., \infty​ 

• 其中  P_0  是处于状态 S_0 的概率。

• 证明:

   ■ 假设系统在时间 t 处于状态 S_j

   ■ 系统中有j 个工作任务。

   ■ 考虑一个时间间隔  (t, t+\Delta t),其中 \Delta t  趋近于 0。

P_r[one \ arrival / \Delta t]=\lambda_j \Delta t\\ P_r[one \ departure / \Delta t]=\mu_j \Delta t\\ P_r[no \ change / \Delta t]=(1-\lambda_j \Delta t)(1-\mu_j \Delta t)=1-\lambda_j \Delta t-\mu_j \Delta t\\ when \Delta t \rightarrow 0, (\Delta t)^2 \rightarrow 0

• 注:如果 \Delta t 很小,那么在这个时间间隔内发生两个事件的概率趋近于零。

• 如果 P_j(t) 表示在时间 t 处于状态 S_j​ 的概率,那么

• 接下来,解方程以得到稳态概率,P_n​ 和 P_0​。

P_0S_0 本身不变+ S_1 一个任务的完成回退

P_1S_0 一个任务到达的开始 + S_1 本身不变 + S_2 一个任务完成的回退...

• 第 j 个方程如下:

\lim_{\Delta t \rightarrow 0} \frac{P_j(t+\Delta t)-P_j(t)}{\Delta t}= \lambda_{j-1}P_{j-1}(t)-(\mu_j+\lambda_j)P_j(t)+\mu_{j+1}P_{j+1}(t)\\ \frac{dP_j(t)}{dt}=\lambda_{j-1}P_{j-1}(t)-(\mu_j+\lambda_j)P_j(t)+\mu_{j+1}P_{j+1}(t)

•  假设 P_j(t) 与时间 t 独立: \lim_{t \rightarrow \infty }P_j(t)=P_j

 在稳定状态下: lim_{t \rightarrow \infty } \frac{dP_j(t)}{dt}=\frac{dP_j}{dt}=0

•  排队系统的稳态是系统中工作任务数量的概率与时间t无关的状态。

•  如果 P_n(t) 依赖于 t ,那么排队系统被认为处于瞬态

• 因此,第 j 个方程变成:

0=\lambda_{j-1}P_{j-1}-(\mu_j+\lambda_j)P_j+\mu_{j+1}P_{j+1}\\ P_{j+1}=\frac{\mu_j+\lambda_j}{\mu_{j+1}}P_j-\frac{\lambda_{j-1}}{\mu_{j}}P_{j-1}, \ j=1,2,...\\ P1=\frac{\lambda_0}{\mu_1}P_0

• 对于状态 S_{n-1} 

方法

• 关键步骤:

  1. 确定所有可能需要建模的状态,并绘制状态转移图。
  2. 形成平衡方程,即一组线性方程。
  3. 解方程以得到稳态概率,P_n​ 和 P_0
  4. 使用稳态概率来推导其他指标 - 响应时间、利用率等。

M/M/1 排队系统 (M/M/1/∞/∞/FCFS) 

  • 到达过程:遵循泊松分布。这意味着在给定的时间段内到达的工作任务数量是随机的,且这个数量的分布是泊松的。因此,两个连续到达之间的时间遵循指数分布,这是一个无记忆性的分布。

  • 服务过程:遵循指数分布。这意味着每个工作任务的服务时间是随机的,且这个时间的分布是指数的。

  • 一个服务器

• 在稳态下: 流入速率 = 流出速率

交通强度 \rho -\lambda/\mu

• 工作进入系统的速率。

• 到达率和平均服务时间的乘积。

• 决定了为了跟上进入的工作流需要的最少服务器数量。

• 虽然是无量纲的数量,但通常以Erlangs为单位表示。

• 对于一个单服务器、无损系统(例如,M/M/1),这等于服务器利用率 \rho

M/M/1队列的平均响应时间与提供的负载之间的关系。

总结

  1. 参数: \lambda= 每单位时间的到达率(单位:工作/时间单位) \mu = 每单位时间的服务率(单位:工作/时间单位)

  2. 交通强度:\rho=\lambda/\mu

  3. 系统中没有工作任务的概率:P_0=1-\rho

  4. 系统中有n个工作任务的概率:P_n=(1-\rho)\rho^n

  5. 利用率:U=1-P_0=\rho

  6. 系统中的平均工作任务数量:E[n]=\rho/(1-\rho)

  7. 队列中的平均工作任务数量:E[n_q]=\rho^2/(1-\rho)

  8. 平均响应时间:E[r] = (1/\mu)/(1-\rho)

  9. 平均等待时间:E[w]=\rho \frac{1/mu}{1-\rho}

示例1:

在一个网络网关上,测量显示数据包以每秒125个数据包(pps)的平均速率到达,网关转发它们大约需要2毫秒。使用M/M/1模型分析网关。如果网关只有12个缓冲区,缓冲区溢出的概率是多少?为了使数据包丢失保持在每百万个数据包中少于一个,我们需要多少缓冲区?

  • 到达率 \lambda = 125 pps
  • 服务率 \mu = 500 pps
  • 利用率 \rho=\lambda/\mu = 0.25

缓冲区溢出的概率:

示例2:

假设一个计算机系统平均每秒接收到30个事务请求。每个事务需要中央处理器平均处理20毫秒。系统的当前性能是多少?(例如,处理器利用率、系统响应时间、系统吞吐量、系统中的平均事务数量。

工作负载参数:事务的到达率(\lambda) ; 系统参数:服务器的服务率(\mu

给定 \lambda=30 \ tps  ;  \mu=1/20=50 \ tps ; \rho = \lambda/\mu=30/50=0.6

应用随机分析: 状态描述是系统中的客户数量。

P_0= 1-\rho=0.4; \ P_1= (1-\rho) \rho =0.24 ; \ P_2= (1-\rho) \rho ^2=0.14

  1. 利用率:U=1-P_0=P_1+P_2+....=\rho=0.6
  2. 平均响应时间:E[r] = (1/\mu)/(1-\rho) = 0.05 
  3. 吞吐量 = 到达率(流入速率 = 流出速率) = 服务器的服务率 x 任务数量:Throughput=0P_0+\mu P_1+\mu P_2... =\mu (P_1+P_2...) =\mu \cdot U=\lambda = 30 \ tps
  4. 系统中的平均工作任务数量:E[n]=\rho/(1-\rho)=1.5

(i) 如果工作负载每秒增加50%的事务,预测的性能是什么?

新的事务到达率,\lambda'=45 \ tps

假设没有次要影响,并且 \mu=1/20=50 \ tps

重新计算各项指标: 不符合规则的入站连接将被阻止。

利用率 = 90%,比原来增加50%

吞吐量 = 45 tps,比原来增加50%

E[n] = 9个事务,比原来增加500%

E[r] = 1/5秒,比原来增加300%

E[n] 和 E[r] 对系统参数的变化更为敏感!

(ii) 如果工作负载增加50%并且处理器升级运行速度提高50%,预测的性能是什么?

与之前相同,\lambda'=45 \ tps

新处理器可以处理多50%的事务: \mu'=75 \ tps

重新计算各项指标:

利用率 = 60%,保持不变

吞吐量 = 45 tps,比原来增加50%

E[n] = 1.5个事务,保持不变

响应时间 = 1/30秒,减少33%

含义: 处理器速度是一个更为主导的因素,处理器速度提高50%超过了工作负载增加50%的影响。 因此,为了在工作负载增加p%的情况下保持给定的响应时间水平,需要一个速度快于p%的处理器。

M/M/m 排队系统 (M/M/m/∞/∞/FCFS)

  1. 到达的任务必须在队列中等待的概率(系统中有≥m个任务) \varrho = P_0(m \rho)^m/[(m!)(1-\rho)] 
  2. 队列中平均任务的数量  E[n_q] = \rho\varrho /(1-\rho)
  3. 服务中预期的任务数  E[n_s]= m\rho
  4. 系统中预期的任务数  E[n]=E[n_q]+E[n_s]=m\rho+\rho\varrho /(1-\rho)

M/M/m/B 排队系统

  1. P_n=\frac{(m\rho)^n}{n!}P_0, \ n=1,2,...,m-1\\ \frac{m^m\rho^n}{m!}P_0, \ n=m, m+1,....,B \\
  2. P_0=[1+\frac{(1-\rho^{B-m+1})(m\rho)^m}{m!(1-\rho)}+\sum^{m-1}_{n=1}\frac{(m\rho)^n}{n!}]^{-1}
  3. 系统中平均任务数量: E[n]=\sum^B_{n=1}nP_n
  4. 队列中平均任务数量: E[n_q]=\sum^B_{n=m+1}(n-m)P_n
  5. 有效到达率"(通常表示为\lambda'): \lambda'=\sum^{B-1}_{n=0}\lambda P_n = \lambda(1-P_B)   
  6. 任务丢失率: \lambda-\lambda'=\lambda P_B

当系统状态n达到B(即,当队列和服务器都满时)时,所有新到达的任务都会被丢弃或丢失,因为没有更多的缓冲区来容纳它们。

产品形态排队网络

产品形态排队网络

• 考虑一个两阶段串联网络:

   ■  泊松到达过程,到达率为 λ

   ■  两个中心的服务时间分布都是指数的,服务率分别为 µ1 和 µ2

• 该系统可以被建模为一个二维随机过程:

   ■  状态由对(N1,N2)指定,其中 N1≥0,N2≥0,Ni(i=1,2)是稳态下队列 i 中的作业数量

   ■  状态变化发生在两个队列中的一个完成服务,或者发生在外部到达时

   ■  所有事件间的时间都是指数的 => 随机过程是一个二维 CTMC

• 绘制二维状态转移图,推导并解出平衡方程以获得稳态概率:

p(n_1,n_2)=P[N_1=n_1,N_2=n_2]=(1-\rho_1)\rho^{n_1}_1(1-\rho_2)\rho^{n_2}_2\\ where \rho_i= \lambda/\mu_i \ (i=1,2)

• 系统稳定的条件是 ρ1 和 ρ2 都小于1

• 方程(1)被称为产品形态解

   ■  注意,N1(t) 和 N2(t) 不是独立的

   ■  然而,在稳态下,P[N_1=n_1,N_2=n_2]=P[N_1=n_1]P[N_2=n_2]\\ P[N_i=n_i]=(1-\rho_i)\rho^{n_i}_i \ (i=1,2)

   ■  但在稳态下,这两个队列表现得像独立的 M/M/1 队列

   ■  因此,产品形态解可以推广到 m 阶段串联网络

• 那么排队网络就是产品形态网络,如果系统中的作业数量在稳态下是:

p(n_1,n_2,...,n_M)=\frac{1}{G(N)}\prod ^M_{i=1}f_i(n_i)

   ■   f_i(n_i) : 是第 i 个队列中作业数量的某个函数

   ■   G(N) : 是一个归一化常数,是系统中作业总数的函数

• 有几种技术可以解决产品形态排队网络;然而,非产品形态网络是难以处理的

产品形态排队网络的例子

按复杂性递增:

  • 杰克逊网络
    • 任意开放的 m-服务器,FCFS 队列;指数分布的服务时间;独立的泊松外部到达;马尔可夫路由(即,每个作业访问的站点序列是不可约的 DTMC)
  • 戈登-纽维尔网络
    • 任意封闭的 m-服务器 FCFS 队列;指数分布的服务时间;马尔可夫路由
  • BCMP 网络
    • 参见经典论文 - Baskett 等人,“具有不同客户类别的开放、封闭和混合队列网络”,ACM杂志,22(2),248-260,1975

产品形态网络(总结)

  • 限制为指数服务时间,先来先服务(FCFS)服务纪律,以及泊松外部到达(如果有的话)
  • 对于非指数服务时间和非FCFS的服务纪律(使用BCMP网络解决)
  • 问题:获得m个服务中心中稳态作业数量的联合概率分布:
    • 开放网络 - 易于应用杰克逊的结果:各个服务中心的边际分布的乘积,具有适当的到达和服务率
    • 封闭网络 - 获得产品形态解中的归一化常数G(N)很复杂!
  • 一种叫做卷积算法的技术可以用于计算封闭排队网络的G(N)和各种性能指标。

示例:数据中心的可靠性 

问题:

  • 自动诊断系统使用“ping”来检测故障,并在检测到故障时通知工作人员。
  • 机器有两种状态:运行中或故障。
  • 故障的机器:等待N个维修人员中的一个进行维修或正在维修过程中。
  • 如果下一次故障的时间和维修时间都呈指数分布,我们可以使用马尔可夫链来解决这个排队问题!

性能问题:

  1. 在任何给定时间,恰好有j(1 ≤ j ≤ M)台机器在运行的概率是多少?
  2. 在任何给定时间,至少有j(1 ≤ j ≤ M)台机器在运行的概率是多少?
  3. 为了保证至少有j(1 ≤ j ≤ M)台机器以给定的概率在运行,需要多少维修人员?
  4. 维修团队的规模对修复机器的平均时间(MTTR)有什么影响?维修团队的规模对可以预期在任何给定时间运行的机器的百分比有什么影响?
  5. 维修团队成员修复机器所需的平均时间(即,他们的技能水平)对总MTTR(即,包括等待维修的时间)有什么影响?维修人员的技能水平如何影响运行中的机器的百分比?

模型构建

构建一个模型:

• 假设:机器独立失败,并且以相同的速率失败,所有维修人员具有相同的技能水平,因此维修速率也相同。

   ■  用λ表示机器的故障率。因此,1/λ是平均故障时间。

   ■  用µ表示维修速率。

• 状态:让状态k表示故障的机器数量(故障的机器需要维修)。

• 状态转换

   ■  当一台机器失败时,从状态k转换到k + 1。

   ■  当一台机器被修复时,从状态k转换到k - 1。

   ■  在状态k时,有M - N台机器在运行,每台的故障率为λ。

• 在状态k的总故障率,\lambda_k,是  \lambda_k=(M-k)\lambda \ \ \ k=0,...,M-1

• 在状态k的总维修率,\mu_k,取决于所有N个维修人员是否都忙。

\mu_k = \begin{aligned} &\left\{ \begin{array}{ll} k\mu & \quad k=1,...,N \\ N\mu & \quad k=(N+1),..,M \end{array} \right. \end{aligned}

• 解决模型(马尔可夫链)以找到p_k,即处于状态k的稳态概率(k=0,…,M),也就是说,k台机器故障

p_k = \begin{aligned} &\left\{ \begin{array}{ll} p_0(\frac{\lambda}{\mu})^k\binom{M}{K} & \quad k=1,...,N \\ p_0(\frac{\lambda}{\mu})^k\binom{M}{K} \frac{N^{N-k}k!}{N!} & \quad k=(N+1),..,M \end{array} \right. \end{aligned}

其中 p_0 可以通过满足 \sum_{k=0}^{M} p_k = 1 获得。因此,

p_0=[\sum_{k=0}^{N}(\frac{\lambda}{\mu})^k\binom{M}{K} +\sum_{k=N+1}^{M}(\frac{\lambda}{\mu})^k\binom{M}{K} \frac{N^{N-k}k!}{N!}]^{-1}

模型解读

1. 在任何给定时间,恰好有 j(j = 1. …, M)台机器在运行的概率是多少? 对于 N = 2, 5, 10,我们有下图

2. 在任何给定时间,至少有 j(j = 1, …, M)台机器在运行的概率是多少?

概率为 P_j = \sum_{i=j}^{M} p_{M-i}

对于 j = 1, 2,…,120 且 N = 2, 3, 4, 5 和 10

3. 维修团队的规模对修复机器的平均时间(MTTR)有什么影响?维修团队的规模对可以预期在任何给定时间运行的机器的百分比有什么影响? MTTR 可以通过以下公式计算: \text{MTTR} = \frac{M}{\sum_{k=0}^{M-1} (M - k) \lambda p_k} - \frac{1}{\lambda}

​ 然后我们可以计算维修人员的数量,如下表所示:

4. 维修团队成员修复机器所需的平均时间(即,他们的技能水平)对总MTTR(即,包括等待维修的时间)有什么影响?维修人员的技能水平如何影响运行中的机器的百分比?

调整 μ 以将维修时间固定在10至25分钟。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值