# M/M/c queue

The M/M/c queue is a queueing model in which customers arrive according to a Poisson process, are served by any of c identical parallel servers with exponentially distributed service times, and wait in a single unlimited queue when all servers are busy. It is the standard multi-server extension of the [M/M/1 queue](https://www.edgepedia.org/m-m-1-queue), and its central output, the [Erlang C](https://www.edgepedia.org/erlang-c) formula, dates to early telephone exchange design and still governs staffing decisions in call centers today.<sup>[1](https://quantmemo.com/concepts/mmc-queues-and-the-erlang-c-formula)</sup>

| Key fact | Detail |
|---|---|
| Model assumptions | Poisson arrivals at rate \( \lambda \), i.i.d. exponential service times at rate \( \mu \), c homogeneous servers in parallel, one shared queue, first-come first-served, unlimited queue length<sup>[2](https://pmc.ncbi.nlm.nih.gov/articles/PMC10907676/)</sup><sup> • </sup><sup>[3](https://www.erlang.com/erlangforexcel-manual/the_erlang_c_traffic_model.htm)</sup> |
| Stability condition | The system is stable if and only if \( \rho = \lambda/(c\mu) < 1 \), where \( \rho \) is the per-server utilization<sup>[4](https://vkulkarn.web.unc.edu/wp-content/uploads/sites/17199/2018/07/HealthCareModels.pdf)</sup> |
| Birth-death rates | Birth rate \( \lambda_n = \lambda \) for all n; death rate \( \mu_n = \min(n, c)\mu \), so service capacity grows linearly until all servers are busy<sup>[4](https://vkulkarn.web.unc.edu/wp-content/uploads/sites/17199/2018/07/HealthCareModels.pdf)</sup> |
| Erlang C formula | \( C(c, r) \) is the probability an arriving customer must wait, with \( r = \lambda/\mu \) the offered load in Erlangs<sup>[4](https://vkulkarn.web.unc.edu/wp-content/uploads/sites/17199/2018/07/HealthCareModels.pdf)</sup><sup> • </sup><sup>[1](https://quantmemo.com/concepts/mmc-queues-and-the-erlang-c-formula)</sup> |
| Mean queueing time | \( W_q = \dfrac{1}{\mu} \cdot \dfrac{1}{c - r} \cdot C(c, r) \); equivalently \( W_q = B(c,u)\,E(s)/(c(1-\rho)) \) in the Florida notes' notation<sup>[4](https://vkulkarn.web.unc.edu/wp-content/uploads/sites/17199/2018/07/HealthCareModels.pdf)</sup><sup> • </sup><sup>[5](https://www.cise.ufl.edu/~nemo/cop5615/queuing.html)</sup> |
| Pooling gain | Ding found the M/M/20 task response time performed 55.7% better than twenty M/M/1 queues with homogeneous servers, and 68.7% better with heterogeneous servers<sup>[2](https://pmc.ncbi.nlm.nih.gov/articles/PMC10907676/)</sup> |
| Origin | Published by Agner Krarup Erlang in 1917 as the Erlang C (delay) formula for automatic telephone exchanges<sup>[6](https://www.informs.org/Explore/History-of-O.R.-Excellence/O.R.-Methodologies/Queueing-Models)</sup> |

## Notation and model

The name follows David Kendall's A/B/C shorthand, in which the first letter describes the arrival process, the second the service distribution, and the third the number of servers; M stands for Markovian, meaning exponentially distributed interarrival and service times.<sup>[6](https://www.informs.org/Explore/History-of-O.R.-Excellence/O.R.-Methodologies/Queueing-Models)</sup> In the standard server-pooling model, written M/M/c, both arrivals and service are Markovian, the c servers work independently at the same service rate, and the queue can grow without bound; customers come from a single queue with mean arrival rate \( \lambda \).<sup>[2](https://pmc.ncbi.nlm.nih.gov/articles/PMC10907676/)</sup>

The number in system, \( X(t) \), is a birth-death process: births occur at the constant rate \( \lambda \) regardless of the state, while deaths occur at rate \( n\mu \) when \( n \le c \) servers are busy and at the full rate \( c\mu \) once all servers are occupied and a queue forms.<sup>[4](https://vkulkarn.web.unc.edu/wp-content/uploads/sites/17199/2018/07/HealthCareModels.pdf)</sup>

## The Erlang C formula

Solving the balance equations of the birth-death chain yields the stationary distribution and, in particular, the probability that an arriving customer finds all c servers busy and must wait. This quantity is the Erlang C formula:<sup>[4](https://vkulkarn.web.unc.edu/wp-content/uploads/sites/17199/2018/07/HealthCareModels.pdf)</sup>

\[ C(c, r) = \frac{\dfrac{r^c}{c!} \cdot \dfrac{c}{c - r}}{\displaystyle\sum_{j=0}^{c-1} \frac{r^j}{j!} + \frac{r^c}{c!} \cdot \frac{c}{c - r}}, \qquad r = \frac{\lambda}{\mu}. \]

The numerator represents the weight of all states in which every server is busy, and the denominator normalizes it against every possible state from an empty system to a fully saturated queue.<sup>[1](https://quantmemo.com/concepts/mmc-queues-and-the-erlang-c-formula)</sup> The equality between the fraction of time all servers are busy and the fraction of arrivals who wait holds by the PASTA property, Poisson Arrivals See Time Averages.<sup>[7](https://www.columbia.edu/~ww2040/4615S15/Lec_5_BD_Review.pdf)</sup>

From the stationary distribution follow the standard performance measures. The expected number of busy servers in steady state is \( \lambda/\mu \), so the occupancy rate, the fraction of servers busy, is \( \rho \).<sup>[4](https://vkulkarn.web.unc.edu/wp-content/uploads/sites/17199/2018/07/HealthCareModels.pdf)</sup> The expected number waiting is \( L_q = \dfrac{\rho}{1-\rho} C(c, r) \), the expected time to start service is \( W_q = \dfrac{1}{\mu} \dfrac{1}{c-r} C(c, r) \), and the expected time in the system is \( W = W_q + 1/\mu \).<sup>[4](https://vkulkarn.web.unc.edu/wp-content/uploads/sites/17199/2018/07/HealthCareModels.pdf)</sup> The 90th percentile of the queueing time is \( \pi(90) = E(s)\ln(10\,B(c,u))/(c(1-\rho)) \).<sup>[5](https://www.cise.ufl.edu/~nemo/cop5615/queuing.html)</sup>

## Pooling: one queue versus many

A classic comparison sets c separate M/M/1 systems, each receiving a \( \lambda/c \) share of arrivals, against a single pooled M/M/c system. Pooling reduces the variability of the workload between the servers and improves all service performance measures, such as the average waiting times; Ding showed that the average waiting time in c separate M/M/1 queues is always inferior to that in the pooled M/M/c model when c > 1.<sup>[2](https://pmc.ncbi.nlm.nih.gov/articles/PMC10907676/)</sup> The quantitative effect is large: with homogeneous servers the M/M/20 response time was 55.7% better on average than twenty M/M/1 queues, and 68.7% better when server service rates were heterogeneous.<sup>[2](https://pmc.ncbi.nlm.nih.gov/articles/PMC10907676/)</sup> Ding also found that M/M/c pooling can shorten task response time in a way that improves cloud computing energy efficiency.<sup>[2](https://pmc.ncbi.nlm.nih.gov/articles/PMC10907676/)</sup>

Simulation studies yield the same managerial takeaway: whether an organization prioritizes cost or service, it may benefit from consolidating its servers into one pool and cutting down on how much inter-arrival and service times fluctuate, thereby bettering cost and service at once.<sup>[8](https://ink.library.smu.edu.sg/lkcsb_research/4993/)</sup>

## Many-server behavior and the Halfin-Whitt regime

For a fixed utilization \( \rho \), multi-server queues can deliver both high efficiency and high service quality, something a single-server system must trade off. For the M/M/n queue with \( \rho = 0.95 \), the delay probability decreases gradually as servers are added while the waiting time factor decreases rapidly; at n = 18 the delay probability is 76.7%.<sup>[9](https://www.isye.gatech.edu/~dai/publications/daiHeTutorial2011.pdf)</sup>

The Halfin-Whitt regime, introduced by Shlomo Halfin and [Ward Whitt](https://www.edgepedia.org/ward-whitt), both of Bell Laboratories, in their 1981 paper on heavy-traffic limits for queues with many exponential servers, describes large systems in which the offered load r and the server count c grow together while the probability of delay stays strictly between zero and one.<sup>[10](https://pubsonline.informs.org/doi/abs/10.1287/opre.29.3.567)</sup> Formally, the regime is \( r \to \infty \), \( c \to \infty \), with \( c = r + \beta\sqrt{r} \) for a constant \( \beta > 0 \); in this limit the delay probability converges to \( h(-\beta)/(\beta + h(-\beta)) \), where \( h \) is the hazard rate of a standard normal random variable.<sup>[4](https://vkulkarn.web.unc.edu/wp-content/uploads/sites/17199/2018/07/HealthCareModels.pdf)</sup> To design a large M/M/c queue with a target delay probability \( \alpha \), one solves \( h(-\beta)/(\beta + h(-\beta)) = \alpha \) for \( \beta(\alpha) \) and sets \( c = r + \beta(\alpha)\sqrt{r} \); the resulting system is highly utilized, with the fraction of busy servers approximately \( 1 - \beta/\sqrt{r} \), and the expected queueing time \( W_q = \dfrac{\alpha}{\mu} \dfrac{1}{\beta\sqrt{r}} \) is small because r is large.<sup>[4](https://vkulkarn.web.unc.edu/wp-content/uploads/sites/17199/2018/07/HealthCareModels.pdf)</sup> This square-root staffing rule is a simplified staffing rule for the Erlang C model proposed by Halfin and Whitt.<sup>[11](https://www.sciencedirect.com/science/article/pii/S0166531615000693)</sup>

## Applications and limitations

Originally developed to model telephone traffic, the Erlang C formulation differs from the blocking regime of [Erlang B](https://www.edgepedia.org/erlang-b): whereas a customer arriving when every server is occupied simply leaves under Erlang B, under Erlang C that customer joins a queue and remains there until a server becomes free.<sup>[6](https://www.informs.org/Explore/History-of-O.R.-Excellence/O.R.-Methodologies/Queueing-Models)</sup> It relates the number of agents, the number of calls, the average duration, the probability of delay, the average delay, and the percentage answered within target.<sup>[3](https://www.erlang.com/erlangforexcel-manual/the_erlang_c_traffic_model.htm)</sup> Erlang's formulas have long been used to set staffing levels in inbound telephone call centers; the catalog merchant L.L. Bean used the M/M/c model to set customer service agent staffing levels.<sup>[6](https://www.informs.org/Explore/History-of-O.R.-Excellence/O.R.-Methodologies/Queueing-Models)</sup> Common practice in call centers uses the M/M/N (Erlang C) model to estimate stationary system performance over short intervals of half an hour or an hour.<sup>[12](https://www.researchgate.net/publication/227448046_Telephone_Call_Centers_Tutorial_Review_and_Research_Prospects)</sup>

The model's assumptions are also its limits. Erlang C assumes a known average arrival rate, statistically identical agents with exponential service times, and, most significantly, that all callers wait as long as necessary without hanging up.<sup>[13](https://www.researchgate.net/publication/221526180_Does_the_Erlang_C_model_fit_in_real_call_centers)</sup> The Erlang C traffic model does not take abandoned calls into account, which can cause problems when analyzing an existing call center with poor performance.<sup>[3](https://www.erlang.com/erlangforexcel-manual/the_erlang_c_traffic_model.htm)</sup> The most popular alternative is the Erlang A model, an extension of Erlang C that allows caller abandonment, in which waiting customers abandon after i.i.d. exponential patience times.<sup>[13](https://www.researchgate.net/publication/221526180_Does_the_Erlang_C_model_fit_in_real_call_centers)</sup><sup> • </sup><sup>[7](https://www.columbia.edu/~ww2040/4615S15/Lec_5_BD_Review.pdf)</sup> [Simulation](https://www.edgepedia.org/simulation) studies confirm that the accuracy of M/M/C models is significantly affected by their assumptions, and managers should exercise caution in using them when the assumptions are violated.<sup>[8](https://ink.library.smu.edu.sg/lkcsb_research/4993/)</sup>

## References

1. [M/M/c Queues and the Erlang C Formula, Explained, Quant Memo](https://quantmemo.com/concepts/mmc-queues-and-the-erlang-c-formula)
2. [Server pooling models for separate and bounded queues, PMC](https://pmc.ncbi.nlm.nih.gov/articles/PMC10907676/)
3. [The Erlang C traffic model, Erlang for Excel manual](https://www.erlang.com/erlangforexcel-manual/the_erlang_c_traffic_model.htm)
4. [Queueing Models for Resource Planning (M/M/c and Halfin-Whitt notes), V. Kulkarni, University of North Carolina](https://vkulkarn.web.unc.edu/wp-content/uploads/sites/17199/2018/07/HealthCareModels.pdf)
5. [Elementary Queuing Theory Notes, R. E. Newman, University of Florida](https://www.cise.ufl.edu/~nemo/cop5615/queuing.html)
6. [Queueing Models: The History of the Analysis of Queues and Waiting Lines, INFORMS](https://www.informs.org/Explore/History-of-O.R.-Excellence/O.R.-Methodologies/Queueing-Models)
7. [Review of Birth-and-Death Queueing Models: Erlang A, W. Whitt, Columbia University class notes](https://www.columbia.edu/~ww2040/4615S15/Lec_5_BD_Review.pdf)
8. [Yang, K. K., Low, J. M. W., Tugba, C. (2014). Modeling queues with simulation versus M/M/C models. Journal of Service Science Research 6(1), 173-192.](https://ink.library.smu.edu.sg/lkcsb_research/4993/)
9. [Dai, J. G., He, S. (2011). Queues in Service Systems, Tutorials in Operations Research, INFORMS](https://www.isye.gatech.edu/~dai/publications/daiHeTutorial2011.pdf)
10. [Halfin, S., Whitt, W. (1981). Heavy-Traffic Limits for Queues with Many Exponential Servers. Operations Research 29(3), 567-588.](https://pubsonline.informs.org/doi/abs/10.1287/opre.29.3.567)
11. [Fluid approximation of a call center model with redials and reconnects, ScienceDirect](https://www.sciencedirect.com/science/article/pii/S0166531615000693)
12. [Telephone Call Centers: Tutorial, Review, and Research Prospects, ResearchGate](https://www.researchgate.net/publication/227448046_Telephone_Call_Centers_Tutorial_Review_and_Research_Prospects)
13. [Does the Erlang C model fit in real call centers? (Robbins, Medeiros, Harrison), ResearchGate](https://www.researchgate.net/publication/221526180_Does_the_Erlang_C_model_fit_in_real_call_centers)

---
*Topic: Encyclopedia › Physical world and mathematics › Mathematics and statistics › Statistics and probability › Stochastic processes › Markov chains and processes › Continuous-time Markov processes › Birth–death processes*

*Initially written Sep 17, 2026 · Reviewed: Sep 30, 2026; Oct 15, 2026 · Edited: Sep 30, 2026; Oct 15, 2026 · Last review: Oct 15, 2026*

*Copyright 2026 EdgeChat AI, a subsidiary of Biostate AI.*

License: Edgepedia Community License 1.0, https://www.edgepedia.org/edgepedia/license
