ikorennoy / jasyncfio

Java asynchronous file I/O based on io_uring Linux interface
Apache License 2.0
72 stars 10 forks source link

Performance improvements? #76

Closed JohannesLichtenberger closed 1 year ago

JohannesLichtenberger commented 1 year ago

Hi Ilya,

Did you make some performance improvements? I wonder if you can provide a new version :-)

kind regards Johannes

ikorennoy commented 1 year ago

Hello Johannes,

At the moment the performance differs only by about 11% from the fio benchmarks

fio t/one-core-peak.sh:

IOPS=333.36K, BW=162MiB/s, IOS/call=31/31
IOPS=335.61K, BW=163MiB/s, IOS/call=31/31

jasyncfio with almost the same configuration:

IOPS=288864, BW=141MiB/s, IOS/call=32/31
IOPS=299296, BW=146MiB/s, IOS/call=32/31

one-core-peak.sh is a fio script that generates the optimal configuration to achieve peak IOPS. For my system, it generates:

taskset -c 0,1 t/io_uring -b512 -d128 -c32 -s32 -p1 -F1 -B1 -n2

where:

-b Block size, default 4096
-d IO Depth, default 128
-s Batch submit, default 32
-c Batch complete, default 32
-p Polled IO, default 1
-F Register files, default 1
-B Fixed buffers, default 1
-n Number of threads, default 1

jasyncfio only does not support the register files feature.

It's on Samsung SSD 970 EVO Plus 500GB with the poll queue disabled.

However I did some optimizations not performance but anyway, it may be useful, I will release them :)

ikorennoy commented 1 year ago

@JohannesLichtenberger updated to 0.0.8