You’ve obviously never tried to write performant I/O logic.
To see what I mean, try using epoll to manage a set of network connections. They apparently didn’t consider the case where you have more than one CPU and also want to handle more than one network connection. Also, if you do get it to work without crashing on stale fd’s, you’ll find it bottlenecks on a spin lock.
If you want to save some time and jump to the current state of the art, use DPDK or some other user space network driver + IP stack to completely bypass the kernel. :-(
To see what I mean, try using epoll to manage a set of network connections. They apparently didn’t consider the case where you have more than one CPU and also want to handle more than one network connection. Also, if you do get it to work without crashing on stale fd’s, you’ll find it bottlenecks on a spin lock.
If you want to save some time and jump to the current state of the art, use DPDK or some other user space network driver + IP stack to completely bypass the kernel. :-(