[ ] whether chunks are read in order, or in random order
not yet implemented:
grouping (see #68)
include compression / decompression in the benchmark?
lsio_uring specific:
[x] number of io_uring worker threads
[ ] O_DIRECT ?
[ ] size of the submission queue
not yet implemented:
re-use buffers?
register buffers?
Config
Like fio, allow the user to config lsio_benchmark using the command line or a config file?
Outputs:
While running:
[x] display a progress bar showing bytes so far, out of total bytes requested (and, in text, also show number of byte ranges so far, out of total byte ranges)
[ ] average bandwidth so far.
[x] stats for latency?
[ ] maybe one progress bar per group?
When finished:
[x] display the bandwidth
[ ] summary stats for the latencies for each byte range.
io_uring-specific output:
It might also be nice to see the behaviour of each io_uring thread. Although that will, obviously, require changes to the lsio_uring code. Maybe, for example, when the benchmark finishes, we'd see summary stats for how many io_uring SQEs each worker thread submitted, and the latency.
While running, maybe we could even show a "progress bar" for each thread, showing how full its tracker is. Although that wouldn't be a progress bar as such, because it'll go up and down! I think indicatif::ProgressBar::set_position can be used to bounce the "progress bar" up and down. Or, better, we'd show more of a "proper" progress bar, showing, per thread, the total number of outputs, vs the total number of elements in its worker queue. But that might be getting complicated, and maybe not very useful!
A bit like
fio
. Automatically create files.Allow users to select:
lsio
IO backendlsio_uring specific:
Config
Like fio, allow the user to config
lsio_benchmark
using the command line or a config file?Outputs:
While running:
When finished:
io_uring-specific output:
It might also be nice to see the behaviour of each io_uring thread. Although that will, obviously, require changes to the lsio_uring code. Maybe, for example, when the benchmark finishes, we'd see summary stats for how many io_uring SQEs each worker thread submitted, and the latency.
While running, maybe we could even show a "progress bar" for each thread, showing how full its tracker is. Although that wouldn't be a progress bar as such, because it'll go up and down! I think
indicatif::ProgressBar::set_position
can be used to bounce the "progress bar" up and down. Or, better, we'd show more of a "proper" progress bar, showing, per thread, the total number of outputs, vs the total number of elements in its worker queue. But that might be getting complicated, and maybe not very useful!