Что такое io_uring и найдется ли ему место в Go

Системное программирование

Доклад принят в программу конференции

Мнение Программного комитета о докладе

Как можно ускорить Go-сервер? Выкинуть абстракции фреймворков, универсальных реализаций http, tcp, и дойти до прямых сисколов. А как ускорять дальше? В докладе Константин покажет, что не время останавливаться и можно сделать еще быстрее. Технические кишочки ядра Linux и Go — все, как мы любим.

Целевая аудитория

Gо-разработчики, интересующиеся низкоуровневым программированием.

Тезисы

Уже не первый год в сообществе Linux проходят бурные обсуждения инструмента io_uring. Несмотря на то, что этой фиче более пяти лет, она все равно остается довольно экзотической в наших краях. Тем не менее новый механизм уже нашел применение во множестве рантаймов, веб-серверов, баз данных, файловых систем и других сложных программных продуктах.

В своем докладе я расскажу про:
* связь асинхронности и неблокирующего I/O;
* классические подходы к работе с неблокирующим I/O;
* новый интерфейс ядра — io_uring;
* liburing как об удобном способе работы с io_uring;
* использование libruing в Gо и почему все не так гладко;
* движение в сторону включения io_uring в рантайм Gо;
* опыт создания приложения с io_uring.

Rust/C++-разработчик, активно работал с Go с 2018 по 2021 год, но до сих пор интересуется судьбой языка. Активный участник open source-сообщества (https://github.com/godzie44) и автор статей на Хабре (https://habr.com/ru/users/godzie/articles/).
Занимается файловым доступом в компании YADRO, в коммерческой разработке использует C/C++.

Видео