Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Build a command-line benchmarking app #130

Open
7 of 15 tasks
JackKelly opened this issue May 18, 2024 · 3 comments · Fixed by #136
Open
7 of 15 tasks

Build a command-line benchmarking app #130

JackKelly opened this issue May 18, 2024 · 3 comments · Fixed by #136
Assignees
Labels
enhancement New feature or request performance Improvements to runtime performance testing_benchmarking_CI Automatically ensuring the code behaves

Comments

@JackKelly
Copy link
Owner

JackKelly commented May 18, 2024

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!

@JackKelly JackKelly converted this from a draft issue May 18, 2024
@JackKelly JackKelly added enhancement New feature or request performance Improvements to runtime performance testing_benchmarking_CI Automatically ensuring the code behaves labels May 18, 2024
@JackKelly
Copy link
Owner Author

JackKelly commented May 19, 2024

Useful crates

  • indicatif - progress bars (and much more!)
  • argfile - Load additional CLI args from file. Works with clap.
  • clap - command line argument parser

@JackKelly JackKelly added this to the Benchmark `lsio_uring` milestone May 21, 2024
@JackKelly JackKelly moved this from Todo to In Progress in light-speed-io May 22, 2024
@JackKelly JackKelly self-assigned this May 22, 2024
@JackKelly JackKelly linked a pull request May 22, 2024 that will close this issue
@JackKelly
Copy link
Owner Author

made good progress today, and have some good performance results (see #50 )

@JackKelly
Copy link
Owner Author

This is mostly done. But I'm going to leave this open because there are a few outstanding items in the lists above.

@JackKelly JackKelly reopened this May 24, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request performance Improvements to runtime performance testing_benchmarking_CI Automatically ensuring the code behaves
Projects
Status: In Progress
Development

Successfully merging a pull request may close this issue.

1 participant