STR:
(Trickle is a bandwidth limiter. Alternatively, if you have a router utterly devoid of QoS, like mine, you can simply start an upload rather than run trickle.)

You'll notice that CPU rises to 100% on at least two cores and stays there for quite some time.

After some debugging I've pinned the issue down to fillCache() busy-looping when data is available continuously. In a low-bandwidth situation, data trickles in for a long time, leading to little to no time spent waiting in select(). With this SWF, a bunch of threads are started at the same time, exacerbating the problem.

Sandro suggests that this could be fixed by reintroducing a sleep removed by 4006e6d610421d15a65e92019587512526583bf3.