Recent Linux kernel (5.1+) includes io_uring, a new non-blocking I/O subsystem, which might serve as a more efficient alternative to epoll. We could benefit from it and get a performance improvement in network I/O scenarios with high volume of concurrent connections and/or for fs operations.
Of course, in Node.js case we need changes made in libuv. There is an ongoing experiment aimed to add support for io_uring in libuv: libuv/libuv#2322
As this feature should be experimental (at least initially), io_uring mode could be activated under a new flag.
The goal of this issue is to improve visibility of the libuv experiment and gather some feedback.
Recent Linux kernel (5.1+) includes io_uring, a new non-blocking I/O subsystem, which might serve as a more efficient alternative to epoll. We could benefit from it and get a performance improvement in network I/O scenarios with high volume of concurrent connections and/or for fs operations.
Of course, in Node.js case we need changes made in libuv. There is an ongoing experiment aimed to add support for io_uring in libuv: libuv/libuv#2322
As this feature should be experimental (at least initially), io_uring mode could be activated under a new flag.
The goal of this issue is to improve visibility of the libuv experiment and gather some feedback.