Unexpected results when testing Write Rand 4K T1Q1 fsync=1 on different io engines
#1967
Replies: 4 comments 13 replies
-
|
@Kamillaova: Is your main question "When using |
Beta Was this translation helpful? Give feedback.
-
|
@sitsofe Linux 6.16, fio 3.40
Yes. |
Beta Was this translation helpful? Give feedback.
-
|
@Kamillaova OK your latest run makes the io_uring write at iodepth=1 + fsync=1 run look suspicious and I can't just say its libaio taking shortcuts because the psync ioengine sees similar speeds to libaio. Unfortunately I don't have a disk fast enough to reproduce the problem myself. I've glanced at fsync in the io_uring ioengine code and I don't see any problems... @axboe do you know if the low io_uring performance versus the libaio/psync ioengines is expected? |
Beta Was this translation helpful? Give feedback.
-
|
Turns out I CAN reproduce the problem using synthetic devices (6.11 kernel, fio-3.40-50-gb1b0): Key parts of the output: Key takeaways:
It would be interesting to have a raw program that just times repeatedly sending fsync using io_uring as that would definitely prove whether this is a kernel issue on a fio issue. |
Beta Was this translation helpful? Give feedback.

Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
TLDR: When using
fsync=1why is the writeio_uringresult with lower than that oflibaio(top right test in red)?Tested on NVMe SSD with PLP, fio settings:
fio -name=randwrite_fsync -filename=/dev/nvme2n1 -ioengine=[libaio/io_uring] -direct=1 -randrepeat=0 -numa_cpu_nodes=0 -rw=randwrite -bs=4k -numjobs=1 -iodepth=1 -fsync=1 -size=100G -runtime=60 -time_based=1Some observations
Also, interestingly, with the
io_uring_cmdengine and-fsync=1the write speed was 2x slower than read! And with-writefua=1(instead of-fsync=1) it reached even more IOPS on write than with libaio.Results
The thing that confuses me is that
-ioengine=io_uringWITHOUT-fsync=1has ~the same performance as-ioengine=libaioWITH-fsync=1, e.g. 136k IOPS, only ~4k less than with-ioengine=io_uring_cmd -writefua=1Beta Was this translation helpful? Give feedback.
All reactions