CS457 - System Performance Evaluation - Winter 2008
Questions and Comments
Lecture 28
Analytic Queueing Theory - Examples
Text: Chapters 30--36.
Birth-death process
Steady State Solutions
Definition of steady state: dp_j(t) / dt = 0.
Then
- \lambda_j-1 p_j-1(t) + \mu_j+1 p_j+1(t) - (\lambda_j + \mu_j) p_j(t) =
0
Solve this iteratively
- l0 p0 = m1 p1 => p1 = (l0/m1) p0
- (l1 + m1) p1 = l0 p0 + m2 p2 => (l1 + m1) (l0/m1) p0 = l0 p0 + m2 p2
=> p2 = p0 (l1*l0 / m1*m0)
- ...
- pn = p0 (l_n-1*...*l1*l0 / m_n-1 *...*m1*m0)
- Set p0 by the condition sum_n pn = 1.
This looks like you could solve it further, but you can't. How could you
possibly solve the differential equation above, in that case?
What do we do? Try simplified examples.
The Simplest Example M/M/1
First M: Markovian (Exponential) birth (interarrival) times
Second M: Markovian (Exponential) life/death (service) times
1: one server
Assumptions:
- \lambda_j = \lambda
- \mu_j = \mu
- Define r = \lambda / \mu
Then
- pn = r^n p0
- p0 = 1 / (1 + r + r^2 + ...) = 1 - r.
- pn = (1 - r) * r^n.
The mean number of jobs in the system is E(r) = sum_n n * (1 - r ) * r^n =
r / (1 - r)
- Goes to infinity as r -> 1. Why?
Little's law
- Mean response time: E(r) = (1/\lambda) * E(n) = 1 / (\mu - \lambda) = 1
/ (\mu (1-r))
- Goes to infinity as \lambda -> \mu from below. Why?
- What happens when \lambda > \mu?
Mean waiting time E[w]
- Mean service time is 1/\mu
- Mean waiting time is E[w] = E[r] - 1/\mu = r / ( \mu (1-r) )
Mean number of jobs in the queue E[nq]
- Little's law applied to the queue - \lambda*E[w] = E[nq]
- W[nq] = r^2 / (1-p)
Utilization
- U = 1 - p0 = 1 - (1-r) = r = \lambda / \mu
Another Example: M/M/2 & M/M/m
As above, but with 2 & m servers
Stability
- 2 servers
- U = U1 + U2
- Uj = number processed on server j = \sum_(jobs on j) xj
- xj = processing time for j
- Therefore, U = (1/L) sum_j xj = (n/L) (1/n) \sum_j x_j = \lambda /
\mu.
- U1 < 1 & U2 < 1 => U < 2.
- Stable if \lambda / \mu < 2 => \lambda / (2 \mu) < 1
- r = \lambda / (2 \mu) is called the traffic intensity
- m servers
The same argument, but
- U < m
- r = \lambda / (m \mu)
- r < 1
Performance
Two servers
j = 0 1 2 3 ...
lj = l l l l ...
mj = m 2m 2m ...
Write down the equations and aolve them
- p1 = 2r p0
- p2 = r p1 = 2r^2 p0
- p3 = r p2 = 2r^3 p0
- pn = 2r^n p0
p0 (1 + 2r + 2r^2 + 2r^3 + ...) = 1 => p0 = (1 + 2 \sum_j r^j)^(-1) =
(1 + 2r / (1-r)) = (1-r) / (1+r)
Average number in system
- E[n] = \sum n pn = 2p0 \sum n r^n = 2p0 * r / (1-r)^2 = 2r / (1-r)^2 *
(1-r) / (1+r) = 2r / (1-r^2)
Average response time
- E[r] = (1/l) E[n] = 1/ (m (1-r^2))
Compare this result to two independent servers where reponse time is
1/(m(1-r/2)
k servers
j = 0 1 2 3 4 ... k k+1 k+2 ...
lj = l l l l l ... l l l ...
mj = m 2m 3m 4m ...km km km ...
Write down the equations and solve them
- p1 = 2r p0
- p2 = r p1 = 2*3r^2 p0
- p3 = r p2 = 2*3*4r^3 p0
- pn = (n+1)!!r^n p0 for n < k and pn = k!r^n p0 for n > k
This will put you summing powers to the test!
p0 (1 + 2r + 6r^2 + 24r^3 + ... + k!r^k + ...) = 1 => p0 = (1 + 2
\sum_j r^j)^(-1) = (1 + 2r / (1-r)) = (1-r) / (1+r)
Average number in system
- E[n] = \sum n pn = 2p0 \sum n r^n = 2p0 * r / (1-r)^2 = 2r / (1-r)^2 *
(1-r) / (1+r) = 2r / (1-r^2)
Average response time
- E[r] = (1/l) E[n] = 1/ (m (1-r^2))
Compare this result to two independent servers where reponse time is
1/(m(1-r/2)
Return to: