> Typically, an application using BSD uses system calls to read and write data to a socket. Those system calls have overhead due to context switching and other impacts.
On the other hand the kernel isn't standing still, overhead reductions have been trickling in over decades. sendfile, epoll, recv-/sendmmsg, all the multi-queue stuff, kTLS with hardware offload, io_uring, p2p-dma. The C10k problem was tackled in 1999, userspace APIs can get you much further today.
On the other hand the kernel isn't standing still, overhead reductions have been trickling in over decades. sendfile, epoll, recv-/sendmmsg, all the multi-queue stuff, kTLS with hardware offload, io_uring, p2p-dma. The C10k problem was tackled in 1999, userspace APIs can get you much further today.