Типичный ночной звонок: p99 latency на чтении 4K-блоков взлетает до 50 мс, хотя iostat показывает <1 мс. Дашборды лгут — они меряют device latency, а не application I/O path. Разгадка: iouring с IOPOLL (kernel.poll=1) при высокой глубине очереди (sqe > 64) вызывает contention в nvmesqfull(), особенно на старых ядрах (<6.6). В это время libaio + ODIRECT идёт через blk-mq без блокировок. Диагностика: - cat /sys/block/nvme/queue/iopoll — должно быть 0 для стабильности - bpftrace -e 'kprobe:nvmesqfull { @ = count(); }' - fio --name=randread --rw=randread --bs=4k --ioengine=iouring --iodepth=128 --runtime=60 Полный разбор с трейсами и графиками: https://ftops.space/?utm*source=telegram&utm*medium=smm&utm*campaign=ftops&utm*content=nvme-io-uring-protiv-klassicheskogo

Типичный ночной звонок: p99 latency на чтении 4K-блоков взлетает до 50 мс, хотя iostat показывает <1 мс. Дашборды лгут — они меряют device latency, а не application I/O path | Сетка — социальная сеть от hh.ru