Skip to content

Build a command-line benchmarking app #130

@JackKelly

Description

@JackKelly

A bit like fio. Automatically create files.

Allow users to select:

  • lsio IO backend
  • directory
  • number of files
  • chunksize
  • gaps between chunks
  • whether chunks are read in order, or in random order
  • not yet implemented:

lsio_uring specific:

  • 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:

  • 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.
  • stats for latency?
  • maybe one progress bar per group?

When finished:

  • 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!

Metadata

Metadata

Assignees

Labels

enhancementNew feature or requestperformanceImprovements to runtime performancetesting_benchmarking_CIAutomatically ensuring the code behaves

Projects

Status

In Progress

Relationships

None yet

Development

No branches or pull requests

Issue actions