Our evaluations show that the new Mio manager improves realistic web server throughput by 6.5x and reduces expected web server response time by 5.7x. We also show that with Mio, McNettle (an SDN controller written in Haskell) can scale effectively to 40+ cores, reach a throughput of over 20 million new requests per second on a single machine, and hence become the fastest of all existing SDN controllers.
After removing various bottlenecks in our system,
SimpleServer
scaled to 20 cores and serves nearly 700,000 requests per second.
This workload places an unusual burden on the Linux kernel and
triggers a bug in Linux; Under such a heavy load, the
epoll
subsystem occasionally does not return read events for a socket,
even though the socket has data ready, causing worker threads in
SimpleServer
to wait for data indefinitely.
[...]
This long-standing bug affects all Linux kernels since 2.4 and
a patch fixing the issue has been accepted into the Linux kernel
In short their "simple server" with the Mio manager was so fast that it broke epoll :)
They didn't break epoll, epoll was straight-up broken. They just managed to supply enough pressure to reliably trigger the bug, which is even more impressive if you think about it.
Our evaluations show that the new Mio manager improves realistic web server throughput by 6.5x and reduces expected web server response time by 5.7x. We also show that with Mio, McNettle (an SDN controller written in Haskell) can scale effectively to 40+ cores, reach a throughput of over 20 million new requests per second on a single machine, and hence become the fastest of all existing SDN controllers.