gray-systems

The Throughput-Delay Tradeoff

You can't maximize throughput and minimize delay at the same time. Every congestion control algorithm chooses a point on this curve.

Delay curve · drag the point or use sliders

Configure

Utilization (ρ) 70%
How much of the link capacity you're using. Higher = more throughput, but longer queues.
Delay penalty (δ) 1.0
How much you care about delay vs throughput. δ=0 ignores delay. δ=3 heavily penalizes it.

Results at this operating point

Throughput 70 Mbps
Expected delay 33 ms
Objective U
Higher U = better for your chosen δ

What's happening here

The curve shows how expected delay grows as you push utilization higher. This is queueing theory: packets wait longer when the link is busy.

delay ∝ 1 / (1 − ρ)

At 50% utilization, delay is ~2× the minimum. At 90%, it's 10×. At 99%, it's 100×. This is why networks can't run at full capacity.

The objective function from TCP ex Machina captures your preference:

U = log(throughput) − δ × log(delay)

Remy's insight: given your δ, a computer can search for the congestion control rules that maximize U. Different δ values produce different algorithms—there's no universal "best."

References