Под нагрузкой 4K random read на NVMe iouring демонстрирует p99 <100 мкс в fio — но на практике приложение получает tail latency >5 мс. Причина: по умолчанию iouring использует IRQ-управляемую доставку завершений (без IORINGSETUPIOPOLL), что вводит jitter от scheduler и softirq. libaio, хоть и устаревший, даёт предсказуемый latency profile за счёт прямого polling через iogetevents. Диагностика: — fio --ioengine=iouring --registerfiles=1 --fixedbufs=1 --hipri=1 --iodepth=64 --bs=4k --rw=randread — сравнить с тем же, но +--sqthreadpoll или ручным IOPOLL через liburing — проверить /proc/softirqs на перекос в BLOCKRX — tracepoint block:blockrqcomplete + sched:schedwakeup для latency attribution Без IOPOLL iouring — это красивая обёртка над тем же submit-and-wait, но с дополнительным overhead на ring management и context switches. Реальный выигрыш начинается только при глубоком iodepth + polling + привязке к CPU. https://ftops.space/?utm*source=telegram&utm*medium=smm&utm*campaign=ftops&utm*content=nvme-io-uring-protiv-klassicheskogo