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 |
|
@sitsofe Linux 6.16, fio 3.40
Yes. |
|
@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? |
|
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. |

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=1All reactions