Arte SheetsLearn. Try. Understand.

Operations

Pollaczek-Khinchine M/G/1 Queue Waiting Time & Service Variance

Calculate exact M/G/1 expected queue wait W_q = (lambda * (sigma_s^2 + (1/mu)^2)) / (2 * (1 - rho)) and queue length L_q = lambda * W_q across deterministic (M/D/1), exponential (M/M/1), and high-variance servers.

Quantify why eliminating service-time variability cuts queue waits in half!

Classical M/M/1 queueing assumes exponential service times whose standard deviation equals the mean (CV_s = sigma_s * mu = 1)—yet automated API endpoints, robotic assembly cells, and standardized clinics often have near-constant service times, while complex troubleshooting tickets exhibit heavy-tailed variance (CV_s > 1)!

For Poisson arrivals (rate lambda) served by a single server with ANY general service distribution (mean 1 / mu, standard deviation sigma_s, utilization rho = lambda / mu < 1), the exact Pollaczek-Khinchine (P-K) formula gives Expected Time in Queue: W_q = (lambda * (sigma_s^2 + (1 / mu)^2)) / (2 * (1 - lambda / mu))! Setting sigma_s = 0 (deterministic M/D/1) cuts waiting time by EXACTLY 50% compared to exponential M/M/1 at the very same utilization!

Single-Server Regime (lambda = 8/hr, mu = 10/hr, rho = 80%)Service Std Dev sigma_s (hr)Squared CV_s^2Mean Queue Wait W_q (Minutes)
Deterministic Automation (M/D/1)0.00 hr0.0012.00 min (Half of M/M/1!)
Exponential Service (M/M/1)0.10 hr (= 1/mu)1.0024.00 min
High-Variance Escalations (CV_s = 2)0.20 hr4.0060.00 min (2.5x M/M/1!)

Pollaczek-Khinchine Expected Queue Wait W_q (Minutes)

Checks queue stability (lambda < mu) and converts W_q from hours to minutes (* 60) using arrival rate B2 (/hr), service rate B3 (/hr), and service std dev B4 (hr).

=IF(OR(B2 < 0, B3 <= 0, B4 < 0), "Invalid Queue Rate", IF(B2 >= B3, "Unstable Queue (Utilization >= 100%)", ROUND(((B2 * ((B4 ^ 2) + ((1 / B3) ^ 2))) / (2 * (1 - (B2 / B3)))) * 60, 2)))

Little's Law Mean Customers Waiting in Queue L_q = lambda * W_q_hr

Multiplies arrival rate lambda (B2) by W_q (in hours) to return average backlog waiting before service.

=IF(B2 >= B3, "Unstable Queue", ROUND(B2 * ((B2 * ((B4 ^ 2) + ((1 / B3) ^ 2))) / (2 * (1 - (B2 / B3)))), 2))

Try the example

Use the original values or change them to test your understanding.

Further reading