Queueing Theory Calculator
Analyze M/M/1, M/M/c, and finite-capacity queues with congestion warnings.
Results are calculated automatically as you enter data.
▼ See explanations and tips below ▼
Related Calculators
What Is Steady-State Queue Performance?
Steady-state queue performance describes what a waiting-line system looks like after it has been running long enough for its long-run averages to settle. Instead of asking what happens to the next single customer, it asks questions such as: How busy are the servers on average? How long does a typical job wait? How many jobs are usually in line? What is the chance the system is empty or full?
Queueing theory is useful whenever arrivals compete for limited service capacity. The “customers” can be people, calls, orders, data packets, machines needing repair, vehicles, or software jobs. The “servers” can be agents, machines, technicians, processors, lanes, counters, or any other resource that completes work.
The models covered here are Markovian queue models:
- M/M/1: one server, unlimited waiting room.
- M/M/c: \(c\) parallel servers, unlimited waiting room.
- M/M/c/K: \(c\) parallel servers with a finite system capacity \(K\).
In the notation, the first M represents random arrivals modeled by a Poisson process, and the second M represents exponentially distributed service times. The final number or letter describes the number of servers and, when present, the maximum number of customers or jobs allowed in the system.
Why Queueing Theory Matters
A queue is often a symptom of a capacity mismatch. If work arrives faster than it can be served, the backlog grows. If there is too much unused service capacity, the system may be expensive to operate. Queueing theory helps analyze the tradeoff between service quality and resource cost.
Small changes in utilization can have large effects on waiting. A system that is 50% busy usually has spare capacity to absorb random bursts. A system that is 95% busy may look efficient, but even a small cluster of arrivals can create a long line. This is why queueing theory is widely used in call centers, clinics, repair shops, computer systems, manufacturing, transportation, and service operations.
The main practical lesson is that average demand is not enough. Even when average service capacity is greater than average arrivals, randomness can still create waiting. The closer demand gets to capacity, the more severe the waiting can become.
Key Terms to Know
- Arrival rate \(\lambda\): The average number of arrivals per chosen time unit.
- Service rate \(\mu\): The average number of services completed per server per same time unit.
- Servers \(c\): The number of parallel service channels.
- System capacity \(K\): The maximum number of customers or jobs in the system, including those being served and those waiting.
- Traffic intensity \(\rho\): A measure of offered load relative to capacity. For an M/M/c queue, \(\rho = \lambda/(c\mu)\).
- Idle probability \(P_0\): The probability that the system has zero customers or jobs.
- Blocking probability \(P_K\): In a finite-capacity system, the probability that an arrival finds the system full and cannot enter.
- Effective arrival rate \(\lambda_\text{eff}\): The admitted arrival rate after blocked arrivals are removed.
- \(W\): Expected total time in the system, including waiting and service.
- \(W_q\): Expected time spent waiting in queue before service begins.
- \(L\): Expected number of customers or jobs in the system.
- \(L_q\): Expected number of customers or jobs waiting in queue.
How Steady-State Queue Models Work
A queueing model starts with three basic inputs: how often work arrives, how fast each server can complete work, and how many servers are available. For Markovian queues, the state \(N\) is the number of customers or jobs in the system. State probabilities such as \(P(N=0)\) or \(P(N=5)\) describe how often the system is expected to be in each state over the long run.
The most important relationship is Little’s law:
For the queue alone, the same idea becomes:
When arrivals can be blocked, the arrival rate in Little’s law should be the effective admitted arrival rate:
M/M/1: One Server
For a one-server system, utilization is:
A stable infinite-capacity M/M/1 queue requires \(\rho < 1\), or equivalently \(\lambda < \mu\). When this condition holds, common steady-state formulas are:
As \(\rho\) approaches 1, the denominator \(1-\rho\) becomes very small. That is why waiting time can rise sharply even before the arrival rate exactly equals the service rate.
M/M/c: Multiple Servers
For \(c\) identical parallel servers, utilization is:
The offered load is often written as:
A stable infinite-capacity M/M/c queue requires \(\rho < 1\). The idle probability is:
The Erlang C probability, the probability that an arrival must wait because all servers are busy, is:
The expected queue length and waiting time are then commonly written as:
Adding servers can reduce waiting dramatically, but the effect depends on the arrival rate, service rate, and current utilization.
M/M/c/K: Multiple Servers with Finite Capacity
A finite-capacity M/M/c/K queue allows only states \(0\) through \(K\). If the system is already at state \(K\), a new arrival is blocked. This prevents the queue from growing without limit, but it also means some demand is rejected.
One way to compute the state probabilities is to form birth-death weights:
Then normalize the weights:
The blocking probability is the full-state probability:
The expected number in the system and expected queue length can be found from the state probabilities:
Then Little’s law uses admitted arrivals:
Finite capacity can make the displayed wait look lower because excess arrivals are turned away. For planning, blocking probability should be read alongside waiting time.
Examples of Queueing Theory in Practice
Example 1: One Service Desk
Suppose customers arrive at a help desk at \(4\) per hour, and one agent can serve \(6\) customers per hour.
The utilization is:
The expected total time in the system is:
That is about 30 minutes, including service. The expected queue wait is:
That is about 20 minutes waiting before service. The expected queue length is:
So, on average, about 1.33 customers are waiting in line.
Example 2: Three Support Agents
Suppose a support team receives \(18\) tickets per hour. Each agent can complete \(7\) tickets per hour, and there are \(3\) agents.
The utilization is:
That means about 85.7% of total service capacity is busy. Under the M/M/c assumptions, the expected queue wait is about \(0.2475\) hours, or about 14.9 minutes. The expected total time in the system is about \(0.3904\) hours, or about 23.4 minutes.
If a fourth identical agent is added, utilization falls to about 64.3%, and the expected queue wait falls to about \(0.0344\) hours, or about 2.1 minutes. This example shows why queueing systems can improve sharply when a small amount of reserve capacity is added near a congestion point.
Example 3: Finite Capacity Can Hide Lost Demand
Now suppose the same system has \(3\) agents, \(18\) arrivals per hour, and \(7\) completions per hour per agent, but the system can hold only \(5\) jobs total, including jobs in service.
Because capacity is finite, some arrivals are blocked. In this example, the blocking probability is about 14.6%, and the effective admitted arrival rate is about \(15.37\) jobs per hour:
The expected queue wait is only about 1.8 minutes, but that does not mean the system is serving all demand well. A short wait can occur because many arrivals never enter the system. For finite-capacity models, blocking probability is just as important as waiting time.
How to Interpret the Result
Busy percentage shows how much of the server capacity is occupied. A low busy percentage means the system has spare capacity. A very high busy percentage means the system has little room to absorb random arrival bursts, so waiting can increase quickly.
Idle probability \(P_0\) is the probability that the system is empty. A high \(P_0\) means the service facility is often idle. A low \(P_0\) means at least one customer or job is usually present.
Expected wait \(W\) is total time in the system. It includes both the queue wait and the service time. Queue wait \(W_q\) includes only the time before service begins.
Expected queue \(L_q\) is a count, not a time. It tells you how many customers or jobs are expected to be waiting, not how long each one waits.
Blocked probability \(P_K\) applies only to finite-capacity M/M/c/K systems. It is the long-run probability that the system is full when an arrival occurs. A low waiting time with high blocking may indicate that the system is rejecting demand rather than handling it smoothly.
The probability distribution graph shows \(P(N=n)\), the probability of having exactly \(n\) customers or jobs in the system. State \(0\) corresponds to the idle probability. Higher states represent fuller and more congested conditions.
The server comparison table is a sensitivity check. It compares the selected server count with feasible nearby counts. For M/M/c/K, system capacity (K) stays fixed and any row requiring more servers than the total capacity is omitted. It should be read as a planning aid, not as a complete cost optimization.
The time unit for \(W\) and \(W_q\) follows the units used for \(\lambda\) and \(\mu\). If both rates are per hour, waiting times are in hours. If both rates are per minute, waiting times are in minutes.
Common Mistakes and Misconceptions
Mixing time units. Arrival rate and service rate must use the same time basis. Do not enter arrivals per hour and services per minute unless one of them has been converted.
Entering service time instead of service rate. If an average service takes 10 minutes, the service rate is not 10. It is \(6\) per hour or \(0.1\) per minute, depending on the time unit used.
Treating \(W\) and \(W_q\) as counts. Waiting results are time values. Queue length results such as \(L_q\) are customer or job counts.
Confusing queue length with system size. \(L_q\) counts only those waiting. \(L\) counts everyone in the system, including those being served.
Forgetting that \(K\) includes customers in service. In an M/M/c/K model, capacity is not just the waiting room. If \(c=3\) and \(K=5\), only two waiting spots are available because three spots may be occupied by customers in service.
Ignoring instability in infinite-capacity models. If \(\lambda \ge c\mu\), an M/M/c queue with unlimited waiting room does not have finite steady-state waiting measures. More service capacity, a lower arrival rate, or a different model is needed.
Reading finite-capacity waits without blocking. In a full system, rejected arrivals do not wait. This can make admitted-customer waiting times look acceptable even when the overall service experience is poor.
When to Use Queueing Theory
Use these models when arrivals are random, service times vary, and you need a first analytical estimate of congestion. Common uses include:
- estimating customer waits at service desks or counters;
- comparing staffing levels in call centers or support teams;
- planning repair capacity for machines or equipment;
- estimating server or processor congestion in computing systems;
- understanding how a finite waiting room or buffer changes throughput;
- teaching operations research, stochastic processes, or service-system planning.
M/M models are especially useful for learning and early planning because they are simple enough to compute while still showing the main queueing effects: utilization, randomness, waiting, blocking, and capacity tradeoffs.
Limitations and Things to Keep in Mind
These models assume Poisson arrivals, exponential service times, independent customers or jobs, identical servers, and steady-state behavior. Real systems may have scheduled arrivals, time-varying peaks, batch arrivals, customer priorities, different service classes, nonidentical servers, or service times that are less variable or more variable than an exponential distribution.
Infinite-capacity M/M/1 and M/M/c models require utilization below 100% for finite steady-state results. If the arrival rate is at least as large as service capacity, the mathematical steady-state queue length and waiting time are unbounded.
Finite-capacity M/M/c/K systems remain bounded because the system cannot hold more than \(K\) customers or jobs. However, this does not mean the service process is healthy. High blocking means demand is being turned away.
Inputs should be treated as estimates. If arrival and service rates come from limited data, the result may be sensitive to measurement error. In practical planning, it is often useful to test several arrival rates, service rates, and server counts rather than relying on a single scenario.
Some detailed behaviors are not represented by these models, including deterministic service times, general arrival or service distributions, priority classes, multiple customer classes, finite-source populations, balking, reneging, retrials, nonidentical servers, and time-of-day demand variation.
The calculator uses rounded display values. Main percentages, probabilities, waits, and graph labels may be trimmed to a practical number of decimal places. Very small differences can be hidden by rounding.
Inputs are validated without silent normalization. Server counts must be whole numbers from (1) through (20), finite capacity must be a whole number from (1) through (200), and (K\ge c). Arrival rate may be zero, while service rate must be positive. If a valid combination exceeds the browser's numeric range, the calculator reports that outcome instead of displaying nonnumeric metrics. For consequential operational decisions, verify assumptions with real data and consult a qualified professional.
How to Use This Calculator
- Choose the queue model: M/M/1, M/M/c, or finite-capacity M/M/c/K.
- Enter the nonnegative arrival rate \(\lambda\) using a consistent time unit, such as arrivals per hour. At \(\lambda=0\), the system is empty and queueing delay is zero.
- Enter the per-server service rate \(\mu\) using the same time unit, such as services per hour per server.
- For multi-server models, enter the number of servers \(c\).
- For the finite-capacity model, enter the system capacity \(K\), including customers or jobs in service and waiting.
- Review the busy percentage, idle probability, \(W\), \(W_q\), \(L_q\), state-probability graph, and server comparison table. Finite-capacity results also show effective arrival rate and blocking probability.
- Use the example option to load a sample M/M/c scenario with \(\lambda=18\), \(\mu=7\), \(c=3\), and \(K=12\).
- Use the graph download option if you want to save the probability distribution as a PNG.
Frequently Asked Questions
What does M/M/c mean?
M/M/c is a multi-server queue with Poisson arrivals, exponential service times, and \(c\) parallel servers. It assumes an unlimited waiting room and requires \(\lambda/(c\mu) < 1\) for finite steady-state waiting results.
What is the difference between \(W\) and \(W_q\)?
\(W\) is total expected time in the system, including both waiting and service. \(W_q\) is only the expected time spent waiting before service begins. The difference between them is the average service time, \(1/\mu\).
Why does waiting time rise so fast near full utilization?
Random arrivals are not evenly spaced. Even when the average arrival rate is slightly below capacity, clusters of arrivals can occur. When utilization is high, there is little spare capacity to clear those clusters, so the queue can grow quickly.
What does blocking probability mean?
Blocking probability is the chance that an arrival finds a finite-capacity system full. In an M/M/c/K model, this is \(P_K\). A blocked arrival does not enter the system, so finite-capacity results should always be interpreted with both waiting time and blocking probability.
Is service rate the same as service time?
No. Service time is how long one service takes on average. Service rate is how many services one server completes per time unit. If the average service time is 15 minutes, the service rate is \(4\) services per hour.
What should I do if an infinite-capacity model is unstable?
An unstable M/M/1 or M/M/c result means the offered arrival rate is at least as large as available service capacity. To get finite steady-state waiting estimates, reduce the arrival rate, increase the service rate, add servers, or consider a finite-capacity model if blocked arrivals are realistic.
Sources and References
Books
- János Sztrik. Basic Queueing Theory: Foundations of System Performance Modeling. GlobeEdit, OmniScriptum GmbH & Co. KG, 2016. Relevant sections: performance measures and Kendall notation; Little’s law; M/M/1, M/M/c, and M/M/c/K formulas.
- John F. Shortle, James M. Thompson, Donald Gross, and Carl M. Harris. Fundamentals of Queueing Theory. 5th ed., Wiley, 2018. Relevant chapters: introduction, stochastic-process background, Little’s law, and simple Markovian queueing models.
- Mor Harchol-Balter. Performance Modeling and Design of Computer Systems: Queueing Theory in Action. Cambridge University Press, 2013. Relevant chapter: “Little’s Law and Other Operational Laws.”
Online and Educational Sources
- Manuele Leonelli. “Queuing Notation,” “Measures of Performance,” and “Steady-State Behavior of the M/M/1 Model.” Simulation and Modelling to Understand Change, bookdown. Accessed July 4, 2026.