Io_uring is not an event system

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

InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
  • go

    The Go programming language

  • libuv

    Cross-platform asynchronous I/O

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • MIO

    Metal I/O library for Rust.

  • libevent

    Event notification library

  • 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...

  • 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

  • Looking for Tokio's event loop source code

    4 projects | /r/rust | 11 Oct 2022
  • Python Is Easy. Go Is Simple. Simple = Easy

    5 projects | news.ycombinator.com | 27 Nov 2023
  • What's the canonical way of doing it in rust?

    1 project | /r/rust | 16 Oct 2023
  • A complete guide to the Node.js event loop

    1 project | dev.to | 19 Jul 2023
  • Node v20.3.0 (Current) upgrade to libuv 1.45.0, including SIGNIFICANT performance improvements to file system operations on Linux

    1 project | /r/node | 21 Jun 2023