What the M/M/c Model Specifies
An M/M/c queue extends the single-server model by allowing several identical servers to work in parallel. The notation is compact, but its assumptions are specific: it describes a particular input process, service-time distribution, number of servers, and queueing discipline. Correctly identifying those assumptions matters before interpreting any calculated rate or utilization.
Consider a probability space \((\Omega,\mathcal{F},\mathbb{P})\) supporting the arrival process and service requirements. Customers arrive according to a Poisson process with rate \(\lambda>0\), measured in customers per unit time. Each customer has an independent service requirement with an exponential distribution of rate \(\mu>0\), measured in services per unit time for one server. There are \(c\) identical servers, where \(c\) is a positive integer. Arrivals, service requirements, and the randomness used to construct the arrival process are mutually independent.
The first M refers to Markovian arrivals: interarrival times are independent exponentials with rate \(\lambda\), equivalently the arrivals form a Poisson process. The second M refers to Markovian service: individual service requirements are independent exponentials with rate \(\mu\). The final symbol \(c\) is the number of servers. These assumptions do not say that service times are shared among servers or that one customer can receive service from several servers at once.
Let \(X_t\) denote the number of customers in the system at time \(t\), including both those in service and those waiting. Its state space is \(S=\{0,1,2,\ldots\}\). With \(\mathcal{F}_t\) denoting the history of arrivals and service events observed by time \(t\), the exponential memoryless property and independent increments of the Poisson arrival process ensure that the count's future evolution depends on the current count, rather than the elapsed times already spent waiting or in service. This description of the model does not by itself establish that a stationary distribution exists; the stability question is separate.
Rates, Offered Load, and Utilization
The arrival rate \(\lambda\) counts customers per unit time. The service rate \(\mu\) is per server, not for the whole group of servers. Thus \(c\mu\) is the maximum total service-completion rate when all \(c\) servers are busy. If fewer than \(c\) customers are in the system, only those customers can be in service; if more than \(c\) are present, exactly \(c\) are in service and the rest wait.
One Erlang is one unit of continuous server workload per unit of time: for example, one server continuously occupied over one hour is one server-hour of work. The offered load \(a\) can be interpreted as the average amount of service work arriving per unit time, expressed in the time one server would need to perform it. The ratio \(\rho\) is a capacity comparison. It should not automatically be read as the observed fraction of servers busy over a long run; that interpretation requires stable operation and a steady-state argument.
The next result explains why the service rate depends on the number currently receiving service, rather than simply on the total population or on \(c\) in every state.
Proof. If \(n=0\), no customer is in service, so no service completion can occur and the rate is zero. Suppose \(n>0\), and put \(r=\min(n,c)\). By the work-conserving rule, exactly \(r\) servers are serving customers. Conditional on the history up to time \(t\), each ongoing service has an exponential remaining time of rate \(\mu\): for an exponential service time \(V\), the probability of exceeding an additional \(s\) units given that it has already lasted \(u\) is \(\mathbb{P}(V>u+s\mid V>u)=e^{-\mu s}\), which does not depend on \(u\). The remaining service times are independent by the model assumptions. Therefore, the probability that none of the \(r\) services finishes within the next \(s\) units is the product \((e^{-\mu s})^r=e^{-r\mu s}\). This is the survival probability of an exponential time with rate \(r\mu\), proving the claimed service-event rate. Arrivals are an independent competing event; the proposition describes the service clock, not the probability that a service completion occurs before the next arrival. \(\square\)
Worked Examples
Worked Example: Translate a Queue Description into Parameters
A call center receives calls at an average rate of \(18\) per hour. Each agent's service time is exponential with mean \(10\) minutes. There are \(4\) agents, and calls wait in a single FCFS line. Find \(\lambda\), \(\mu\), the offered load, and nominal utilization, assuming the other M/M/c conditions hold.
The arrival rate is \(\lambda=18\) calls per hour. Ten minutes is \(10/60=1/6\) hour, so the mean service time per agent is \(1/6\) hour. The rate of an exponential service time is the reciprocal of its mean, giving \(\mu=1/(1/6)=6\) calls per hour per agent. The total maximum service capacity is \(c\mu=4\cdot6=24\) calls per hour.
Check: \(a/c=3/4=\rho\). The offered load is \(3\) Erlangs, and the nominal utilization is \(3/4\). The arrival rate is below the combined capacity \(24\) calls per hour, but that comparison alone is not a derivation of any steady-state performance measure.
Worked Example: Convert a Service Time and Compare Capacity
A clinic has \(2\) identical nurses. A patient's mean service time is \(4\) minutes, and patients arrive at rate \(12\) per hour. Compute the per-nurse service rate, offered load, and nominal utilization.
There are \(60/4=15\) four-minute service periods in an hour, so one nurse's service rate is \(\mu=15\) patients per hour. The combined capacity is \(c\mu=2\cdot15=30\) patients per hour. The offered load and utilization are
Check: \(a/c=(4/5)/2=4/10=2/5\), matching the direct capacity ratio. The two rates used here have the same time unit, patients per hour, as required for the ratios to be meaningful.
Worked Example: Service-Completion Rate at Different Queue Sizes
Suppose \(c=3\) servers and each has service rate \(\mu=4\) customers per hour. Find the service-event rate when \(X_t=2\) and when \(X_t=5\), and give the corresponding mean times to the next service completion if no arrival intervenes.
When \(X_t=2\), both customers are in service, so \(r=\min(2,3)=2\) servers are active. The service-event rate is \(r\mu=2\cdot4=8\) per hour. Its reciprocal is \(1/8\) hour, or \(60/8=7.5\) minutes.
When \(X_t=5\), all three servers are busy and two customers are waiting. Thus \(r=\min(5,3)=3\), giving a service-event rate of \(3\cdot4=12\) per hour. The reciprocal is \(1/12\) hour, or \(60/12=5\) minutes.
Check: In the first case there are \(2\) independent service clocks, each with rate \(4\), giving total rate \(8\). In the second there are \(3\) such clocks, giving total rate \(12\). Using \(5\cdot4=20\) in the second case would incorrectly count waiting customers as active servers.
Why Offered Load Has This Interpretation
Proof. Let \(N(t)\) be the number of arrivals during the interval, so \(N(t)\) has a Poisson distribution with mean \(\lambda t\). Let \(V_1,V_2,\ldots\) be the independent service requirements, each exponential with rate \(\mu\), and let \(W(t)=\sum_{k=1}^{N(t)}V_k\) be the workload brought by these arrivals. Conditional on \(N(t)=m\), linearity of expectation and \(\mathbb{E}[V_k]=1/\mu\) give \(\mathbb{E}[W(t)\mid N(t)=m]=m/\mu\). Taking expectations over \(N(t)\) yields \(\mathbb{E}[W(t)]=\mathbb{E}[N(t)]/\mu=\lambda t/\mu\). Dividing by \(t>0\) gives \(\lambda/\mu=a\) units of server workload arriving per unit time. \(\square\)
This workload calculation clarifies the role of the parameters. Increasing \(\lambda\) increases incoming work; increasing \(\mu\) decreases the mean work per customer; increasing \(c\) increases the number of parallel servers but does not change the work brought by arrivals. Accordingly, \(a\) depends on \(\lambda\) and \(\mu\), whereas \(\rho\) also accounts for the number of servers.
Common Mistakes and Scope
Common mistake: treating \(\mu\) as the service rate of the entire group. Suppose \(\lambda=18\) customers per hour, \(\mu=6\) per hour per server, and \(c=4\). A wrong calculation is \(\rho=18/6=3\), which divides arrivals by one server's capacity and then labels the result utilization. The correction is to distinguish offered load from utilization: \(a=18/6=3\) Erlangs, while \(\rho=18/(4\cdot6)=3/4\). The value \(3\) is the offered load, not the nominal utilization.
A second error is to count every customer in the system as receiving service. If \(X_t=5\) and \(c=3\), only \(3\) customers are being served; the other \(2\) wait. The instantaneous service-event rate is therefore \(3\mu\), not \(5\mu\). Conversely, when \(X_t=1\), the service-event rate is \(\mu\), not \(c\mu\), because only one server is occupied.
Finally, the assumptions should be checked against the application. General service-time distributions, non-Poisson arrivals, multiple priority classes, abandonment, finite waiting room, or a non-FCFS discipline require a different model or additional structure. And if \(\rho\ge1\), it is not appropriate to interpret \(\rho\) as a steady-state busy fraction: it is only the offered workload divided by nominal capacity. The model's stability and stationary distribution require separate analysis.
Check Your Understanding
Use the definitions and assumptions above to answer these questions. Keep per-server and system-wide rates distinct.
- A queue has \(c=5\), \(\lambda=20\) customers per hour, and \(\mu=8\) customers per hour per server. Find \(a\), \(\rho\), and the combined maximum service capacity.
- With \(c=4\) and \(X_t=3\), how many servers are busy, and what is the service-event rate in terms of \(\mu\)?
- If a customer's mean exponential service time is \(12\) minutes, convert it to a service rate per hour.
- Explain why offered load does not depend on \(c\), while nominal utilization does.
- For \(\rho>1\), explain why the ratio is not a feasible steady-state fraction of servers busy.