🔥

Тред (Андрей Печкуров)


Начнем мы с эксперимента по поддержке io_uring, свежего механизма для асинхронного ввода/вывода в ядре Linux, в libuv. Вот тут можно посмотреть на экспериментальный PR: github.com/libuv/libuv/pu…

Если кто-то не слышал про libuv, то это кросс-платформенная библиотека для асинхронного I/O (и не только), на которой основывается Node.js.

Сейчас libuv в Linux для сетевого I/O использует epoll, механизм мультиплексирования, позволяющий работать сразу со многими сокетами и не блокироваться в ожидании готовности к чтению/записи. Вот краткий, но емкий доклад про epoll: youtu.be/P9csgxBgaZ8

Использование более эффективного механизма может дать прирост производительности нагруженных сетевых приложений. Вот очень подробная статья про устройство io_uring: lwn.net/Articles/77670…