10 个版本 (稳定)

1.3.1 2024 年 1 月 29 日
1.3.0 2024 年 1 月 23 日
0.1.2 2024 年 1 月 10 日

并发 中排名 229

Download history 31/week @ 2024-04-26 37/week @ 2024-05-03 12/week @ 2024-05-10 16/week @ 2024-05-17 11/week @ 2024-05-24 6/week @ 2024-05-31 3/week @ 2024-06-07

每月下载 188
roster 中使用

MIT/Apache

21KB
215 代码行

sharded-thread

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

"对于服务满足其延迟预期,应用程序尾部延迟至关重要。我们已经证明,与在通用硬件和 Linux 上运行的基线 Memcached 相比,线程每核心方法可以将键值存储的应用程序尾部延迟降低高达 71%。"[^1]

[^1]: 线程每核心架构对应用程序尾部延迟的影响

介绍

这个库主要针对 io-uring 和 monoio。它没有运行时依赖,所以你应该能够与其他运行时一起使用它,也可以在不使用 io-uring 的情况下使用它。

这个库的目的是在线程遵循 thread per core 架构时,以高效的方式在线程之间发送数据。即使目标是性能,也要记住这是一种核心到核心(或线程到线程)的传递,这实际上非常慢。

感谢 Glommio 的启发。

示例

最初,这个库是在你有多线程监听同一个 TcpStream 时制作的,根据通过 TcpStream 发送的内容,你可能想要更改处理该流的线程。

你可以在测试中查看一些示例。

基准测试

这些基准测试仅供参考,它们正在 GA 中运行。你应该在目标硬件上运行自己的测试。

它显示,基于 sharded-threadutility.sharded_queue 比基于 flume 构建的网格(~6%)更快。

Flume vs Sharded-thread for sharded-thread - Bencher

参考

许可证

根据以下任一许可证授权

依赖

~1.1–1.8MB
~36K SLoC