Поверхностный мониторинг показывает p99 < 500 мкс по NVMe, но приложение валится при 8K RPS случайного чтения 4K блоков. Причина — неверная конфигурация iouring без IORINGSETUPIOPOLL. В этом режиме ядро использует обычный interrupt-driven I/O и ставит задачу в sleep до прихода IRQ, что добавляет до 120 мкс задержки только на пробуждение через scheduler. Диагностика: - cat /proc/vmstat | grep -E "pgmajfault|pgpgin" — проверка фонового I/O - perf record -g -e block:blockrqinsert,block:blockrqcomplete -- sleep 10 - nvme id-ctrl /dev/nvme0n1 | grep oacs — поддержка controller-level polling Сравнение с libaio + ODIRECT показывает на 37% ниже tail latency при равной throughput. Подробнее: https://ftops.space/?utm*source=telegram&utm*medium=smm&utm*campaign=ftops&utm*content=nvme-io-uring-protiv-klassicheskogo

Поверхностный мониторинг показывает p99 < 500 мкс по NVMe, но приложение валится при 8K RPS случайного чтения 4K блоков. Причина — неверная конфигурация iouring без IORINGSETUPIOPOLL | Сетка — социальная сеть от hh.ru