Io_uring is not an event system

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • Scout APM - Less time debugging, more time building
  • OPS - Build and Run Open Source Unikernels
  • SonarQube - Static code analysis for 29 languages.
  • GitHub repo go

    The Go programming language

  • GitHub repo libuv

    Cross-platform asynchronous I/O

  • Scout APM

    Less time debugging, more time building. Scout APM allows you to find and fix performance issues with no hassle. Now with error monitoring and external services monitoring, Scout is a developer's best friend when it comes to application development.

  • GitHub repo MIO

    Metal IO library for Rust

  • GitHub repo libevent

    Event notification library

  • GitHub repo criu

    Checkpoint/Restore tool

    Yes exactly what I had in mind. I'm also thinking of a particular chain of syscalls [0][1][2][3] (send netlink message, setsockopt, ioctls, getsockopts, reads, then setsockopt, then send netlink message) grouped so as to be done in one sequence without ever surfacing up to userland (just fill those here buffers, who's a good boy!). So now I'm missing ioctls and getsockopts but all in good time!

    [0] https://github.com/checkpoint-restore/criu/blob/7686b939d155...

  • GitHub repo liburing

    I dug up the thread with the benchmarks: 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.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts