Tutorials › Stochastic Processes › Capacity and Blocking in the M/M/c/K Queue

Multi-Server and Finite Queues · Tutorial 658 of 994

Capacity and Blocking in the M/M/c/K Queue

Learn how total capacity determines the states, blocking rule, and transition rates of an M/M/c/K queue.

Advanced 9 min read

What You'll Learn

  • Define the M/M/c/K model and its total-capacity convention.
  • Identify the possible occupancy states and the number of busy servers.
  • Derive arrival and service departure rates from each occupancy state.
  • Construct the generator, including its boundary rows.
  • Distinguish a blocked arrival from a transition of the occupancy process.
  • Detect common errors at full capacity and above the server count.

Capacity Counts Everyone in the System

In an M/M/c queue with unlimited waiting space, an arrival can join the queue even when all servers are busy. A finite-capacity system changes that rule: once the system is full, a new arrival is not admitted. The notation M/M/c/K uses \(K\) for the maximum number of customers in the system, counting both those in service and those waiting. Thus capacity is not the maximum queue length.

Let \(c\ge1\) and \(K\ge c\) be integers, and let \(\lambda>0\) and \(\mu>0\). On a probability space \((\Omega,\mathcal{F},\mathbb{P})\), consider a queue with Poisson arrivals of rate \(\lambda\), \(c\) identical servers, and independent exponential service times of rate \(\mu\). Arrivals finding \(K\) customers present are blocked and leave without service. Otherwise they join the system. Each server serves at most one customer at a time, and a customer who is admitted waits if all servers are busy. The occupancy process is \((N_t)_{t\ge0}\), where \(N_t\) is the number of customers in the system at time \(t\); use its natural filtration \((\mathcal{F}_t)_{t\ge0}\).

Definition: An M/M/c/K occupancy process has state space \(S=\{0,1,\ldots,K\}\). State \(n\) means that \(n\) customers are in the system, including those in service. There are \(\min(n,c)\) busy servers and \(\max(n-c,0)\) waiting customers. An arrival increases the state by one when \(n<K\); an arrival at \(n=K\) is blocked and leaves the state unchanged.

The first M indicates Poisson arrivals, the second M indicates exponential service times, \(c\) is the number of servers, and \(K\) is the total system capacity. The conventional M/M/c/K model takes \(K\ge c\), so all servers can be occupied before the system is full. At \(n<c\), only \(n\) servers are busy. At \(n\ge c\), all \(c\) servers are busy, and any additional admitted customers wait.

Deriving the Birth and Death Rates

For a continuous-time Markov chain, a rate \(q_{ij}\), with \(i\ne j\), describes the first-order probability of a transition from \(i\) to \(j\): over a short interval of length \(h\), that probability is \(q_{ij}h+o(h)\). Here births are increases in occupancy and deaths are decreases. The memoryless property of exponential service makes the remaining service time of each busy server exponential with rate \(\mu\), conditional on the current state and history. Thus, with \(n\) customers present, the total rate of a service completion is the sum of the rates of the busy servers.

Proposition (Birth and death rates): For \(0\le n\le K\), the occupancy process has birth rate \(\lambda_n=\lambda\) if \(n<K\), and \(\lambda_K=0\). For \(1\le n\le K\), its death rate is \(\delta_n=\min(n,c)\mu\), and \(\delta_0=0\). All other transitions between distinct states have rate zero.

Proof. Fix a state \(n\). If \(n<K\), an arrival occurs during a short interval of length \(h\) with probability \(\lambda h+o(h)\), and it changes the occupancy from \(n\) to \(n+1\). If \(n=K\), an arrival is blocked, so it does not change occupancy and gives no transition to a different state. There are \(\min(n,c)\) busy servers in state \(n\). Each completes service at rate \(\mu\), and the probability of two or more service completions in an interval of length \(h\) is \(o(h)\). Therefore the probability of a decrease by one is \(\min(n,c)\mu h+o(h)\). A single arrival or departure changes occupancy by exactly one, and simultaneous events have probability \(o(h)\). These facts give the stated rates and rule out other transitions between distinct states. The exponential memoryless property and independent arrivals and services ensure that these rates depend on the current occupancy, not on the past; hence the occupancy process is a continuous-time Markov chain. \(\square\)

The corresponding generator \(Q=(q_{ij})\) has off-diagonal entries equal to these transition rates. Its diagonal entry in each row is the negative sum of the off-diagonal entries in that row. In particular, at full capacity the diagonal is \(-c\mu\), not \(-(\lambda+c\mu)\): blocked arrivals do not change the state. This gives the complete generator rule below.

Generator rule: For \(0\le n<K\), \(q_{n,n+1}=\lambda\). For \(1\le n\le K\), \(q_{n,n-1}=\min(n,c)\mu\). All other off-diagonal entries are zero, and \(q_{nn}=-\sum_{j\ne n}q_{nj}\). Thus each row of \(Q\) sums to zero.

Proof. The off-diagonal rates are exactly the transitions identified in the proposition. In a continuous-time Markov chain, the diagonal entry is the negative total rate of leaving the state, so the sum of all entries in row \(n\) is zero. At \(n=0\), the only possible transition is a birth if \(K\ge1\); at \(n=K\), the only possible transition to a different state is a death. For \(0<n<K\), both a birth and a death are possible. This accounts for every state, including both boundaries, and proves the rule. \(\square\)

Build the Rates State by State

A reliable way to construct the model is to inspect each occupancy before writing a matrix. First list the states from \(0\) through \(K\). In state \(n\), count the busy servers as \(\min(n,c)\), giving departure rate \(\min(n,c)\mu\). Then include an arrival transition of rate \(\lambda\) only if \(n<K\). Finally, set the diagonal to the negative of the included rates. This procedure follows directly from the event rates and guarantees that the generator rows sum to zero.

1
List allowed occupancies.
With total capacity \(K\), the only states are \(0,1,\ldots,K\).
2
Count active servers.
At occupancy \(n\), exactly \(\min(n,c)\) servers are busy, so the departure rate is \(\min(n,c)\mu\).
3
Apply the admission rule.
Use birth rate \(\lambda\) for \(n<K\), and no birth transition at \(n=K\).
4
Complete and check the generator.
Set each diagonal to minus the sum of the other entries in its row; check that every row sums to zero.

Worked Example: Two Servers and Four Places

Take \(c=2\), \(K=4\), \(\lambda=\tfrac32\), and \(\mu=1\). The state space is \(\{0,1,2,3,4\}\). The departure rates in these states are \(\min(n,2)\mu\), namely \(0,1,2,2,2\). Births have rate \(\tfrac32\) in states \(0,1,2,3\), and there is no birth transition from state \(4\).

Using those rates and setting each diagonal to the negative row total gives

$$ Q= \begin{bmatrix} -\tfrac32 & \tfrac32 & 0 & 0 & 0\\ 1 & -\tfrac52 & \tfrac32 & 0 & 0\\ 0 & 2 & -\tfrac72 & \tfrac32 & 0\\ 0 & 0 & 2 & -\tfrac72 & \tfrac32\\ 0 & 0 & 0 & 2 & -2 \end{bmatrix}. $$

Check: The row sums are \(-\tfrac32+\tfrac32=0\), \(1-\tfrac52+\tfrac32=0\), \(2-\tfrac72+\tfrac32=0\), \(2-\tfrac72+\tfrac32=0\), and \(2-2=0\). In state \(3\), two servers are busy and one customer waits. In state \(4\), two customers wait; a new arrival is blocked rather than moving the process to state \(5\).

Worked Example: Capacity Equals the Number of Servers

Take \(c=2\), \(K=2\), \(\lambda=2\), and \(\mu=\tfrac32\). The states are \(0,1,2\). At state \(0\), the departure rate is \(0\); at state \(1\), it is \(1\cdot\tfrac32=\tfrac32\); at state \(2\), it is \(2\cdot\tfrac32=3\). Arrivals are admitted at states \(0\) and \(1\), but blocked at state \(2\).

$$ Q= \begin{bmatrix} -2 & 2 & 0\\ \tfrac32 & -\tfrac72 & 2\\ 0 & 3 & -3 \end{bmatrix}. $$

Check: The row sums are \(-2+2=0\), \(\tfrac32-\tfrac72+2=0\), and \(3-3=0\). Since \(K=c\), there is no state with a waiting customer: at state \(2\) both servers are busy and the system is full. The entry \(q_{2,3}\) is absent, not equal to the arrival rate.

Worked Example: Three Servers and One Waiting Place

Take \(c=3\), \(K=4\), \(\lambda=5\), and \(\mu=2\). There are four allowed occupancy states below capacity and one full state: \(S=\{0,1,2,3,4\}\). The departure rates are \(0,2,4,6,6\), because the number of busy servers stops increasing after three. The birth rate is \(5\) at states \(0,1,2,3\), and zero at state \(4\).

$$ Q= \begin{bmatrix} -5 & 5 & 0 & 0 & 0\\ 2 & -7 & 5 & 0 & 0\\ 0 & 4 & -9 & 5 & 0\\ 0 & 0 & 6 & -11 & 5\\ 0 & 0 & 0 & 6 & -6 \end{bmatrix}. $$

Check: The row sums are \(-5+5=0\), \(2-7+5=0\), \(4-9+5=0\), \(6-11+5=0\), and \(6-6=0\). State \(3\) has all three servers busy but no waiting customer. State \(4\) has three busy servers and one waiting customer; its departure rate remains \(3\cdot2=6\), not \(4\cdot2\).

Blocked Arrivals Are Not Birth Transitions

A blocked arrival is an event in the arrival stream, but it is not a transition of the occupancy process: immediately before and after that event, \(N_t=K\). The generator records changes of state, so it has no off-diagonal entry for a blocked arrival. This distinction matters when using the model to calculate probabilities or performance measures later. The event “an arrival finds the system full” is meaningful, but it is not represented by a jump from state \(K\) to state \(K+1\).

Common mistake. Suppose \(c=2\), \(K=3\), \(\lambda=4\), and \(\mu=1\). A mistaken calculation might assign a birth rate \(4\) out of state \(3\), and a departure rate \(3\) because three customers are present. That produces a supposed transition from \(3\) to \(4\), outside the allowed state space, and overcounts departures. The correct state \(3\) has two busy servers, so its departure rate is \(\min(3,2)\cdot1=2\); it is full, so its birth transition rate is \(0\). Its generator row has only \(q_{3,2}=2\) and \(q_{3,3}=-2\). The row check is \(2-2=0\). The arrival rate \(4\) still describes attempted arrivals, but these attempts do not change the occupancy at capacity.

Another frequent error is to use \(n\mu\) as the departure rate at every state. That is correct only while \(n\le c\). When \(n>c\), customers beyond the \(c\) busy servers are waiting, not receiving service, so the total departure rate remains \(c\mu\). Also keep the capacity convention explicit: \(K\) counts customers in service and in the queue together, so the largest possible queue length is \(K-c\) when \(K\ge c\).

Check Your Understanding

For each question, state which occupancy states are allowed and distinguish attempted arrivals from transitions that change the state.

  1. For \(c=3\) and \(K=5\), how many customers can wait when the system is full?
  2. For \(c=2\), \(K=4\), and \(\mu=\tfrac12\), what is the departure rate from state \(3\)? Explain why.
  3. For \(c=2\), \(K=3\), and arrival rate \(\lambda\), what are the birth-transition rates from states \(2\) and \(3\)?
  4. With \(c=1\), \(K=2\), \(\lambda=3\), and \(\mu=2\), write the generator and check every row sum.
  5. Why does a blocked arrival at state \(K\) not appear as an off-diagonal entry of the occupancy generator?