Skip to content

A Rust on-site channel benchmarking helper. Inter-Process (async / busy) & Intra-Process (async single threaded / async multi threaded)

Notifications You must be signed in to change notification settings

0xDub/rust-channel-benchmark

Repository files navigation

On-Site Rust Channel Benchmarking Helper

Deploy on server to determine which public crates are the fastest for communicating in different architectures

Requirements:

  • 2 CPUs are needed for most of the experiments. Please refer to main() to change which cores you'd like to be utilized before running.

Analysis Pipeline

  1. cargo run --release
  2. Once the experiments are completed, run python3 analyze.py to view the results and the corresponding latency distributions

Crates tested by Architecture:

Async

Busy-Spinning

Future Plans

I'd like to split up the experiments to test mpmc / mpsc / spsc against each other in these different architectures. This will be included at some point but for now mpmc & mpsc have been favored as there are more use cases for them

Notes

  • Some of these crates (such as async_broadcast) are tailored to specific features which incur some speed disadvantages. Thus, I recommend doing adequate research to determine the best crate for your architecture and only use this as a reference.
  • Thread-pinning has been included in most of these experiments so please check the main() function and change the parameters as needed. If you'd like more realistic non-jittery results, consider using isolcpus or the like
  • payload_size parameter was included in main() as well, feel free to change this at your discretion. The default is 0 bytes

P.s.

If you'd like another crate added, have questions / ideas, please DM me on twitter @Dub0x3A or on discord 0xdub. Cheers and thanks

About

A Rust on-site channel benchmarking helper. Inter-Process (async / busy) & Intra-Process (async single threaded / async multi threaded)

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages