-
Notifications
You must be signed in to change notification settings - Fork 1
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
Performance tracking issue (reading from a local SSD) #50
Comments
Performance of the un-optimised codeThis is for the code in Some conclusions:The majority of time (the wide "mountain" in the middle of this flamegraph) is spent in
So, I think the priority is #49. If we zoom into |
Big breakthrough: Today, I figured out that I was doing something stupid! TL;DR: We're now getting throughput up to 960 MiB/s (up from about 220 MiB/s!) (i.e. better than a 4x speedup!). LSIO now compares very favorably against What I had forgotten is that, in Rust, an This was fixed by changing New flamegraph: |
First results running LSIO on my new AMD Epyc workstationI just built an AMD Epyc workstation with two PCIe5 SSDs: one for the OS, one just for benchmarking. Running
My io_uring code is quite a bit slower than the equivalent Why is my io_uring code slower? And how to speed up my io_uring code?AFAICT, a problem with my io_uring code is that it fails to keep the OS IO queue topped up. Running I think the solution is to stop using fixed files in io_uring, which then allows me to have more than 16 files in flight at any one time. And/or perhaps the solution is #75. That said,
|
So, I think my plan would be something like this:
|
Finally benchmarking again! In PR #136: running on my Intel NUC:
gets 1,649 MiB/sec! (faster than fio!)
More threads makes it go SLOWER on my NUC! For example, 4 threads (with lsio_bench) gets 1,067 MiB/s (But I need to test on my workstation...).
|
Woo! Success! My new lsio code gets 10.755 GiB/sec on my EPYC workstation (with a T700 PCIe5 SSD). Commit 1aa2f91 That's faster than my old io_uring code. And faster than
|
Ha! My lsio code actually gets 11.2 GiB/s when using 500 files! And those read speeds are confirmed by |
Ultimate aim: perform at least as well as
fio
when reading from a local SSD 🙂.Tools
cargo bench
index.html
inlight-speed-io/target/criterion/<GROUP>/<BENCH>/report/index.html
cargo install flamegraph
sudo apt install linux-tools-common linux-tools-generic linux-tools-
uname -r
echo "0" | sudo tee '/proc/sys/kernel/perf_event_paranoid' | sudo tee '/proc/sys/kernel/kptr_restrict'
cargo flamegraph --bench io_uring_local
Benchmark workload
load_1000_files
: Each file is 262,144 bytes. Each file was created byfio
. We measure the total time to load all 1,000 files. The Linux page cache is flushed before each run (vmtouch -e </path/to/files/>
).Plan
criterion
.fio
's runtime!I'll use milestone 2 to keep track of relevant issues, and to prioritise issues.
fio
configurationThe text was updated successfully, but these errors were encountered: