fio
tokio-uring
fio | tokio-uring | |
---|---|---|
30 | 28 | |
4,889 | 1,003 | |
- | 2.1% | |
9.3 | 4.1 | |
4 days ago | 2 months ago | |
C | Rust | |
GNU General Public License v3.0 only | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
fio
- Flexible I/O Tester
-
Dire SMB speed with on PC to NAS
Assuming two systems use flash storage, network bandwidth is identical and it is configured the same way, there should be an issue within the PC, either system or storage drive. Check the system logs for errors and warning events related to data transfer from/to NAS. Try to benchmark the PCs' disks using fio to confirm they have similar performance. https://github.com/axboe/fio
- Test Linux I/O
-
Ask HN: What are some good resources for learning about low level disk/file IO?
Not specifically addressing your question, but when you get to the point of wanting to start doing some experiments you may find that 'fio' [1] is very handy.
[1] https://github.com/axboe/fio
-
KVM virtual machines on ZFS benchmarks
The dd is not a good benchmarking tool, you should use something like fio and probably tune it to use the ioengine most similar to your use case (eg. a database server will probably use some async IO interface). In your first example (with bs=1G) probably something (the guest OS, the qemu/kvm or the host OS) have split into smaller chunks anyway.
-
SSD Sequential Write Slowdowns
All linux tests are run with fio 3.32 (github) with future commit 03900b0bf8af625bb43b10f0627b3c5947c3ff79 manually applied.
-
Want to develop a GUI wrapper for a CLI tool. Trying to figure out the tools I need.
FIO: https://github.com/axboe/fio
-
Just write the f*****g parser.
Agree, I used flex/yacc to add an arithmetic expression evaluator to fio a few years back to allow simple math with some units in fio's job files, and for stuff like that, they're fine, but I wouldn't want to use them for a real language, the error handling is kind of a nightmare.
-
Could my SD Card be going bad, or could my Switch be?
Flexible I/O Tester (fio-3.33): https://github.com/axboe/fio
- Newly cloned SSD extremely slow on Linux
tokio-uring
- tokio_fs crate
-
Use io_uring for network I/O
While Mio will probably not implement uring in its current design, there's https://github.com/tokio-rs/tokio-uring if you want to use io_uring in Rust.
It's still in development, but the Tokio team seems intent on getting good io_uring support at least!
As the README states, the Rust implementation requires a kernel newer than the one that shipped with Ubuntu 20.04 so I think it'll be a while before we'll see significant development among major libraries.
-
Create a data structure for low latency memory management
That's what the pool is for: https://github.com/tokio-rs/tokio-uring/blob/master/src/buf/fixed/pool.rs
-
Cloudflare Ditches Nginx for In-House, Rust-Written Pingora
Tokio supports io_uring (https://github.com/tokio-rs/tokio-uring), so perhaps when it's mature and battle-tested, it'd be easier to transition to it if Cloudflare aren't using it already.
-
Anyone using io_uring?
- Tokio suffers from a similar problem
-
redb 0.4.0: 2x faster commits with 1PC+C instead of 2PC
Eg via tokio-uring.
-
Efficient way to read multiple files in parallel
I strongly recommend you to look into io-uring and use async executors that take advantages of it: - tokio-uring (not recommended as it is still undergoing development) - monoio - glommio
-
Stacked Futures and why they are impossible
This is my thinking as well. Specifically, I realized that if you don’t use tasks, but rather futures and join, than structured concurrency just works out (at the cost of less efficient poll). In a single-threaded/thread-per-core runtime, tasks could have the same semantics as futures. Somewhat elaborated here: https://github.com/tokio-rs/tokio-uring/issues/81
-
How to use async Rust for non-IO tasks?
There's a new API on Linux called io_uring that has performance benefits, but most executors don't use it yet, except executors meant specifically to harness the power of io_uring like tokio-uring and Glommio
-
Side effects of Tokio
Breaking it down a bit further- Rust's async is zero-cost, and there's no way to write faster equivalent code to the language construct in Rust (and presumably other LLVM languages). Tokio introduces abstractions over OS APIs (indirectly) and provides a runtime. The runtime isn't zero cost, but it is likely to be better optimized for "standard" situations than a homebrewed solution, and its primary competition is in the form of other large async runtimes. On the other hand, Tokio's IO routines are (AFAIK) about as well written as one can get with blocking OS APIs, and the only competitors in that space are projects like tokio-uring that use APIs more well suited for asynchronous usage.
What are some alternatives?
KDiskMark - A simple open-source disk benchmark tool for Linux distros
libuv - Cross-platform asynchronous I/O
iperf - iperf3: A TCP, UDP, and SCTP network bandwidth measurement tool
glommio - Glommio is a thread-per-core crate that makes writing highly parallel asynchronous applications in a thread-per-core architecture easier for rustaceans.
open-audit - Tracking and reporting for IT and related assets and configuration
liburing
rio - pure rust io_uring library, built on libc, thread & async friendly, misuse resistant
monoio - Rust async runtime based on io-uring.
xNVMe - Portable and high-performance libraries and tools for NVMe devices as well as support for traditional/legacy storage devices/interfaces.
tokio - A runtime for writing reliable asynchronous applications with Rust. Provides I/O, networking, scheduling, timers, ...
act - Aerospike Certification Tool
diesel_async - Diesel async connection implementation