Size an interface queue for a target latency and check the M/M/1 wait time at your utilisation.
A queue's depth is best expressed in time: bytes divided by the drain rate. Sizing it from a latency target keeps worst-case delay bounded, while the M/M/1 result shows the average queue that random arrivals actually build at your utilisation. Queue length grows without bound as utilisation approaches 1 — at 90% load the average queue is nine times what it is at 50% — which is why latency-sensitive links are engineered well below capacity.
Queue Depth
queue bytes = link rate × target latency ÷ 8, and queue packets = queue bytes ÷ average packet size.
M/M/1 average queue
M/M/1 queue length = ρ² ÷ (1 − ρ)
queue bytes = link rate × target latency ÷ 8, and queue packets = queue bytes ÷ average packet size. A queue's depth is best expressed in time: bytes divided by the drain rate. Sizing it from a latency target keeps worst-case delay bounded, while the M/M/1 result shows the average queue that random arrivals actually build at your utilisation.
Queue length grows without bound as utilisation approaches 1 — at 90% load the average queue is nine times what it is at 50% — which is why latency-sensitive links are engineered well below capacity.
This calculator takes 4 inputs: Link speed, Target queuing latency, Average packet size, Link utilisation (0–0.99). The pre-filled defaults are a realistic starting point — replace them with figures from your own environment for a result you can act on.