10 个版本 (稳定)
1.3.1 | 2024 年 1 月 29 日 |
---|---|
1.3.0 | 2024 年 1 月 23 日 |
0.1.2 | 2024 年 1 月 10 日 |
在 并发 中排名 229
每月下载 188 次
在 roster 中使用
21KB
215 代码行
sharded-thread
"对于服务满足其延迟预期,应用程序尾部延迟至关重要。我们已经证明,与在通用硬件和 Linux 上运行的基线 Memcached 相比,线程每核心方法可以将键值存储的应用程序尾部延迟降低高达 71%。"[^1]
[^1]: 线程每核心架构对应用程序尾部延迟的影响
介绍
这个库主要针对 io-uring
和 monoio。它没有运行时依赖,所以你应该能够与其他运行时一起使用它,也可以在不使用 io-uring
的情况下使用它。
这个库的目的是在线程遵循 thread per core
架构时,以高效的方式在线程之间发送数据。即使目标是性能,也要记住这是一种核心到核心(或线程到线程)的传递,这实际上非常慢。
感谢 Glommio 的启发。
示例
最初,这个库是在你有多线程监听同一个 TcpStream
时制作的,根据通过 TcpStream
发送的内容,你可能想要更改处理该流的线程。
你可以在测试中查看一些示例。
基准测试
这些基准测试仅供参考,它们正在 GA 中运行。你应该在目标硬件上运行自己的测试。
它显示,基于 sharded-thread
的 utility.sharded_queue
比基于 flume
构建的网格(~6%)更快。
参考
许可证
根据以下任一许可证授权
- Apache 许可证 2.0 版(LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可证(LICENSE-MIT 或 http://opensource.org/licenses/MIT)由您选择。
依赖
~1.1–1.8MB
~36K SLoC