io_uring без readahead: почему приложение само должно подсказывать ядру

Io_uring Without Readahead

Разработчик Turso измерил влияние readahead на производительность io_uring. Оказалось, что без него io_uring отправляет только один запрос за раз, что убивает concurrency и не позволяет ядру объединять запросы. С readahead на 32 страницы число запросов к устройству падает с ~196 000 до ~16 300, а 91-93% запросов сливаются. Также автор разбирает затраты на polling-поток и объясняет, почему O_DIRECT приводит к большему числу cache misses по сравнению с buffered I/O.

Один SQE означает отсутствие параллелизма, а без параллелизма блочному слою нечего объединять.

Ещё за этот день

2026-09-01