Для вашего комфорта и улучшения работы сайта мы используем cookie
Принимаю
Однопоточный асинхронный рантайм на io_uring
Тезисы
Расскажу, зачем понадобился собственный асинхронный рантайм на Rust. Разберем цикл выполнения задач, их пробуждение из других потоков, а также отправку I/O-операций в ядро через io_uring и обработку результатов их выполнения. Особое внимание уделим provided-буферам, сокращению количества аллокаций, а также багам ядра Linux, с которыми мы столкнулись. Обсудим самые сложные части реализации — отмену операций, завершение рантайма и время жизни ресурсов, которыми ещё пользуется ядро. На бенчмарках сравним производительность нашего рантайма, compio и tokio.
Расскажу, зачем понадобился собственный асинхронный рантайм на Rust. Разберем цикл выполнения задач, их пробуждение из других потоков, а также отправку I/O-операций в ядро через io_uring и обработку результатов их выполнения. Особое внимание уделим provided-буферам, сокращению количества аллокаций, а также багам ядра Linux, с которыми мы столкнулись. Обсудим самые сложные части реализации — отмену операций, завершение рантайма и время жизни ресурсов, которыми ещё пользуется ядро. На бенчмарках сравним производительность нашего рантайма, compio и tokio.
Информация о спикере
Николай Муравьев
RWB, Rust разработчик
  • Николай Муравьев
    RWB, Rust разработчик
Все доклады