论文部分内容阅读
RPC作为分布式系统中广泛使用的组件,对于其带宽利用率、吞吐率以及网络时延的要求越来越高。传统的基于TCP/UDP套接字实现的RPC组件其性能已面临越发严峻的挑战。目前高速InfiniBand网络已经得到了广泛的应用。InfiniBand网络支持RDMA技术,基于RDMA技术实现RPC可以获得较好的性能,有效的支持各类分布式系统。用户态RPC over RDMA是基于用户态IB verbs接口实现的RPC组件,通过用户态IB verbs接口提供的零拷贝技术和内核旁路技术,可以提供高带宽低延迟的网络传输性能。当前基于IB verbs接口实现的RPC组件多使用RDMA_READ的方式实现远程内存访问,如果适当的使用RDMA_WRITE方式进行传输,可以明显简化RPC组件的网络交互过程,对这一优化方法进行了详细描述。同时,针对RPC组件使用IB verbs接口产生的内存注册开销较大的问题提出了一套在RPC层进行内存管理的方案,主要思路是对注册过的内存块反复使用,从而减少内存注册的次数,由于在很多情况下,传输所涉及的内存块的分配和回收是由上层程序主导的,所以需要对ONC RPC标准接口进行了扩充,增加内存管理接口使得上层程序可以使用由RPC层所管理的内存块。通过对优化前后RPC over RDMA组件对比测试,以及和同等条件下TI-RPC的对比测试,分别验证了上述两方面的优化效果。结果表明,对传输模型的优化明显提升了用户态RPC over RDMA服务端向客户端返回数据时的性能,对内存注册的优化使得用户态RPC over RDMA在小块传输时有了更好的性能,拓宽了其对于传输块大小的适用范围。