io_uring без розовых очков: 5 граблей, которые сожгли мне неделю, и где он реально быстрее epoll
vibecodingai 3 часа назад io_uring без розовых очков: 5 граблей, которые сожгли мне неделю, и где он реально быстрее epoll 20 мин 2.7K Linux * Системное программирование * C++ * Rust * Go * Мнение Прод. Сервис на Go,...
Значимый прорыв формирует отрасль ИИ: vibecodingai 3 часа назад io_uring без розовых очков: 5 граблей, которые сожгли мне неделю, и где он реально быстрее epoll 20 мин 2. 7K Linux * Системное программирование * C++ * Rust * Go * Мнение Прод. Сервис на Go, 80k RPS, p99 latency 12 мс.
Читаю Phoronix, новость: "io_uring быстрее epoll в 2-4 раза". Решаю переписать сетевую часть. Через неделю - откат в master.
Технические детали
p99 не упал, а вырос до 18 мс, CPU подскочил на 15%, под нагрузкой иногда залипает на 200-400 мс. Эта статья - не про "io_uring - будущее async I/O", а про то, что в этом будущем реально работает в 2026 году, что нет, и где меня обманули бенчмарки. TL;DR как естьio_uring не убил epoll и не убьёт.
Для классических сетевых серверов с TCP keep-alive разница в производительности 0-15%, и часто не в пользу io_uring. Преимущество появляется на disk I/O, large fan-out, fsync-heavy нагрузках. Главное преимущество - не скорость, а batching и zero-copy.
Submit N операций одним syscall, получить N результатов одним syscall. На 1M IOPS это мняет картину. На 10k connections с epoll - почти не виден выигрыш.
Отраслевые последствия
Безопасность - больная тема. Google, ChromeOS, Android отключили io_uring для непривилегированных пользователей после серии CVE (2022-2023). Docker по умолчанию режет его в seccomp profile.
В k8s включать - сознательное решение. Реальные грабли - это не "API сложный", а sync issues с poll_add, утечки регистраций буферов на reconnect, race condition при cancel, и неочевидные ограничения SQPOLL kernel-thread. Когда брать io_uring: storage engine, базы данных, прокси с большим disk fan-out, fsync-heavy логгеры.
Когда не брать: классический HTTP/gRPC-сервер, edge-прокси, любой код, который и так упирался не в I/O. ОглавлениеTL;DR без маркетингаОткуда взялся хайп и почему он наполовину врётКонтекст: io_uring в линейке кросс-платформенных async-APIАнатомия io_uring: SQ, CQ, kernel threadМинимальный echo-сервер на liburing: 60 строкСколько реально стоит syscall в 2026Куда реально уходит время: профилирование под микроскопомЧестный бенчмарк: epoll vs io_uring на 4 сценарияхЧто появилось в io_uring за пять лет5 граблей, которые сожгли мне неделюБезопасность: почему Google его отключилБиблиотеки: liburing, tokio-uring, glommio, monoioProduction tuning checklist: 12 настроек, которые реально влияютКогда брать, когда не братьАнти-FAQЧто забрать с собойПолезные ссылкиКогда io_uring медленнее epoll: 3 контр-сценарияZero-copy receive: главная киллер-фича, о которой молчатКто реально гоняет io_uring в проде: Cloudflare, ScyllaDB, NetflixХоливар: почему tokio до сих пор не на io_uring и когда это изменитсяОткуда взялся хайп и почему он наполовину врётio_uring появился в ядре 5. 1 (май 2019) благодаря Йенсу Аксбё (тот самый, что писал blk-mq и fio).
Событие, по словам экспертов, усилит конкуренцию в сфере ИИ.





