Advertising

That reduces the memory footprint, but doesn't reduce latency.

It removes hard to spot dependencies on thread local storage.

2. Batching.

Can you elaborate?

Using fibers you deal with a single unit. Using events you deal
with a request broken down into "atomic parts". You take a group
of events by timed priority and sort them by type. Then you
process all events of type A, then all events of type B etc.
Better cache locality, more fine grained control over scheduling,
easier to migrate to other servers etc.

But the fundamental problem with using fibers that are bound to a
thread does not depend on long running requests. You get this
also for multiple requests with normal workloads, it is rather
obvious:

Also keep in mind that in a real world setting you deal with
spikes, so the load balancer should fire up new instances a long
time before your capacity is saturated. That means you need to
balance loads over your threads if you want good average latency.