Skip to content

Sharding between threads

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

Miaxos/sharded-thread

Repository files navigation

sharded-thread

release Crates.io version dependency status docs.rs docs PRs Welcome

"Application tail latency is critical for services to meet their latency expectations. We have shown that the thread-per-core approach can reduce application tail latency of a key-value store by up to 71% compared to baseline Memcached running on commodity hardware and Linux."1

Introduction

This library is mainly made for io-uring and monoio. There are no dependency on the runtime, so you should be able to use it with other runtime and also without io-uring.

The purpose of this library is to have a performant way to send data between thread when threads are following a thread per core architecture. Even if the aim is to be performant remember it's a core to core passing, (or thread to thread), which is really slow.

Thanks to Glommio for the inspiration.

Example

Originally, the library was made when you had multiple thread listening to the same TcpStream and depending on what is sent through the TcpStream you might want to change the thread handling the stream.

You can check some examples in the tests.

Benchmarks

Those benchmarks are only indicative, they are running in GA. You should run your own on the targeted hardware.

It shows that sharded-thread based on utility.sharded_queue is faster (~6%) than if we built the mesh based on flume.

Flume vs Sharded-thread for sharded-thread - Bencher

References

License

Licensed under either of

Footnotes

  1. The Impact of Thread-Per-Core Architecture on Application Tail Latency

About

Sharding between threads

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Sponsor this project

 

Packages

No packages published

Languages