brpc icon indicating copy to clipboard operation
brpc copied to clipboard

支持自定义 IOBuf Block size

Open Superskyyy opened this issue 1 year ago • 5 comments

Is your feature request related to a problem? (你需要的功能是否与某个问题有关?) Block size 现在是一个常量,如果支持动态修改的话会出现什么问题吗?使用场景是在我们的rpc里有一些是大块的5mb数据最好需要连续地址,其他rpc则是很小的。不应该公用一个blocksize。

Describe the solution you'd like (描述你期望的解决方法) 支持iobuf初始化提供一个自定义blocksize,如果可以的话我会提一个pr Describe alternatives you've considered (描述你想到的折衷方案)

Additional context/screenshots (更多上下文/截图)

Superskyyy avatar Mar 01 '24 15:03 Superskyyy

有验证过性能收益吗?

chenBright avatar Mar 06 '24 08:03 chenBright

有验证过性能收益吗?

在我们的5MB数据chunk传输场景下性能至少提升了15%,我们需要把接收端iobuf的数据去掉metadata后拷贝进一个提前预留好的连续的buffer里。改大blocksize后主要是copy_to这块显著加速了,这周我会再测一下具体数字。

可能和这个issue有点类似,https://github.com/apache/brpc/issues/2120 只不过我们的场景下数据大小基本固定是5mb,所以不需要根据不同协议从收到的iobuf里面读数据长度出来。只需要一个自定义block_size大小的功能就行了。

可以考虑给iobuf加个reserve_continuous_buffer(int size)方法,然后由协议来控制预留buffer的大小

Superskyyy avatar Mar 06 '24 21:03 Superskyyy

这些性能上的测试结果我会过段时间整理好后推到brpc上游的文档里。

Superskyyy avatar Mar 07 '24 03:03 Superskyyy

这个会有PR吗

yanglimingcn avatar Mar 08 '24 03:03 yanglimingcn

这个会有PR吗

@yanglimingcn 两周内我会推pr,我还在验证下这样做会不会在什么场景下有副作用,我们这个还和streaming rpc + rdma一起用的。

Superskyyy avatar Mar 08 '24 04:03 Superskyyy