brpc icon indicating copy to clipboard operation
brpc copied to clipboard

BRPC是否有计划支持DPDK?

Open vstc1988 opened this issue 6 years ago • 10 comments

您好,

我有在最新的BRPC代码里做些关键字查找,未找到DPDK相关的内容。 我想请问,

  1. 当前版本BRPC是否支持DPDK?
  2. 若未支持,未来有计划会去支持DPDK吗?

谢谢, 徐林林

vstc1988 avatar Nov 28 '19 08:11 vstc1988

支持dpdk是为了解决什么问题?user-level tcp?

jamesge avatar Nov 28 '19 09:11 jamesge

是一个存储的case,想参考下BRPC架构。因为对性能需求比较高,我们希望能使用DPDK。我只是想确认下,目前BRPC是否有支持DPDK。

Thanks

vstc1988 avatar Nov 28 '19 09:11 vstc1988

不支持。存储场景一般会用rdma

jamesge avatar Nov 28 '19 11:11 jamesge

brpc + dpdk 我们基于 f-stack 在内部做过一版 demo 验证。在 brpc 使用的 protobuf 协议 + 本身的 overhead 场景下,引入 dpdk 仅仅能带来不到 30% 左右的性能提升,主要提升来自于 bypass kernel network stack ,但是这本身不是 brpc 本身的瓶颈。考虑到引入 user-space network stack 带来的不稳定性,本身提升就更加没那么可观了

Ye-Tian-Zero avatar Dec 04 '19 06:12 Ye-Tian-Zero

@skilxn-go 可能在存储(如云磁盘系统)、机器学习(如mpi和parameter server)等场景下做这些优化有较大意义,对于业务场景确实作用很小。

jamesge avatar Dec 04 '19 07:12 jamesge

@jamesge 根据 perf 结果来看,CPU 开销很大部分在 protobuf 和 bvar 那些监控上面,我们也尝试过把 bvar 什么的都删除,然后仅保留 protobuf 和 dpdk 这样的 “极简模式”,单核性能提升 80% 左右。业内类似 erpc 这种,通过 dpdk 把吞吐打得特别高的,一般都是没有结构化的信息,或者一个极其简单的结构化信息,如果能把 protobuf 整个拿掉,可能效果会更明显一些。

Ye-Tian-Zero avatar Dec 04 '19 07:12 Ye-Tian-Zero

@skilxn-go 如果你所说场景中的proto包含字段较多,也许还能通过arena机制做一些提升,但如果本身是个测试用的简单pb,这可能确实不是pb适用的场景了。

jamesge avatar Dec 04 '19 07:12 jamesge

这里是否可以支持flatbuffer?flatbuffer不需要反序列化,省去拷贝和计算的时间;序列化后flatbuffer空间占用会更大,不过如果是string比较多的话,protobuffer对string类型没有压缩,二者空间占用差距可能会更小

lifangming avatar Mar 15 '22 07:03 lifangming