3 ms·
I dug up the thread with the benchmarks: https://github.com/axboe/liburing/issues/189 https://github.com/axboe/liburing/issues/189 io_uring does win on more re
by eloff 5y ago
I dug up the thread with the benchmarks: https://github.com/axboe/liburing/issues/189 https://github.com/axboe/liburing/issues/189
io_uring does win on more recent versions, but it's not like it blows epoll out of the water - it's an incremental improvement.
Specifically for websockets where you have a lot of idle connections, you don't want a bunch of buffers waiting for reads for long periods of time - this is why Go doesn't perform well for websocket servers as calling Read() on a socket requires tying up both a buffer and a goroutine stack.
I haven't looked into how registering buffers works with io_uring, if it's 1-to-1 mapping or if you can pass a pool of N buffers that can be used for reads on M sockets where M > N. The details matter for that specific case.
Again where io_uring really shines is file IO because there are no good solutions there currently.