支持自定义 IOBuf Block size
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 (更多上下文/截图)
有验证过性能收益吗?
有验证过性能收益吗?
在我们的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的大小
这些性能上的测试结果我会过段时间整理好后推到brpc上游的文档里。
这个会有PR吗
这个会有PR吗
@yanglimingcn 两周内我会推pr,我还在验证下这样做会不会在什么场景下有副作用,我们这个还和streaming rpc + rdma一起用的。