What is congestion?
The slowing and queuing that occur when demand for a shared resource, such as a road or network link, exceeds what it can handle.
Congestion diagram example
Congestion is what happens when too many users try to use a shared resource at once, so that everyone is slowed and queues form. It appears on roads, networks, hospitals and call centers. It matters because the delay does not rise evenly: a small increase in load near capacity can cause a large increase in waiting.
How it works
Throughput is the amount a resource can handle per period. While demand is below it, delays stay short. As demand nears capacity, any random bunching of arrivals creates a queue that takes time to clear, so average delay rises steeply. Past capacity, the queue grows without limit until demand falls.
Congestion has a cost that users impose on each other: each added user slows everyone else but pays only for their own delay. That is why prices or limits can improve outcomes. In some systems, such as roads, heavy congestion even lowers the total throughput, so adding more users produces fewer completed trips.
Example
Say a link can serve 100 requests per second. At 50 requests a second it is half used, and a request waits very little. At 90 requests a second, using a standard queue formula, the average wait is about 9 times the service time, and at 99 requests a second about 99 times. A rise from 90 to 99, only 10% more load, multiplies the delay by about 11. At 105 requests a second, 5 more arrive than leave each second, so the queue grows by 300 every minute. These are illustrative figures.
How to model it in Machinations
Use a Source for arrivals with random timing, a Queue that releases a fixed number per step, and a Drain for completions. A Register computes the wait from queue length and service rate. Make the arrival rate and capacity Levers, then Play many times and chart the queue to see how delay climbs as load nears capacity.
See congestion in a system you can Play
Build the rules in a Machinations diagram, change a value and Play it to watch how the system responds.