Disk Queue Length Calculator
Calculate average disk queue length from IOPS and service time using queuing theory.
Inputs
Average Queue Length
2.333
Method Used
Utilization-based (M/M/1 approximation: L = ρ / (1 − ρ))
Interpretation
Moderate utilization — queue length grows noticeably; monitor during peak load.
Step by step
Values used
Input Basis = Utilization (%util from iostat); Disk Utilization (%util) = 70; Arrival Rate λ (IOPS) = 500; Average Time in System W (ms) = 4
Utilization-based queue length (M/M/1)
avg_queue = utilization / (1 − utilization)
Little's Law
L = λ × W
Average Queue Length
= 2.333
Method Used
= Utilization-based (M/M/1 approximation: L = ρ / (1 − ρ))
Interpretation
= Moderate utilization — queue length grows noticeably; monitor during peak load.
How it works
Disk queue length grows non-linearly with utilization: the M/M/1 queuing approximation L = ρ/(1−ρ) (ρ = utilization fraction) shows that queue length is small at low utilization but rises sharply as utilization approaches 100% — going from 80% to 95% utilization roughly triples average queue length. Alternatively, Little's Law (L = λ × W) computes average items in the system directly from arrival rate (IOPS) and average time each request spends in the system, without assuming a specific queuing model.
Formulas
Utilization-based queue length (M/M/1)
avg_queue = utilization / (1 − utilization)
- \rho
- utilization fraction (0-1)
Little's Law
L = λ × W
- \lambda
- arrival rate (requests/sec)
- W
- average time in system (sec)
Frequently Asked Questions
Why does queue length spike so much at high utilization?
Because L = ρ/(1-ρ) has a vertical asymptote as ρ approaches 1 — at 50% utilization L=1, at 90% L=9, and at 99% L=99. This is why disk subsystems that look 'fine' at moderate load can suddenly show severe latency once utilization crosses roughly 80-85%, and why %util is a leading indicator of trouble, not just a usage statistic.
How do I read disk queue length from iostat?
`iostat -x 1` reports avgqu-sz (or aqu-sz on newer versions) directly as the average queue length, alongside %util, r/s, w/s and await — comparing avgqu-sz against this calculator's estimate is a good sanity check on whether your system matches simple queuing theory assumptions.
Is the M/M/1 model accurate for real disk I/O?
It's a useful approximation, not an exact model — real disk I/O has variable service times, multiple concurrent queues (per-CPU or per-NVMe-queue), and request merging/reordering that M/M/1 doesn't capture. Treat the result as a directional estimate of how queue length scales with load, not a precise prediction.