论文部分内容阅读
远程内存直接访问技术(RDMA)允许应用绕过远端CPU,直接访问远程机器的内存,并将协议栈卸载到网卡来向数据中心应用提供超低的延迟,减少网络通信需要的计算开销。然而,一方面由于RDMA将网络连接存储在空间有限的网卡缓存中来加速网络IO,当通信连接数量过多时会导致网卡缓存命中率低,网络IO性能急剧下降。现有解决方案在本地多个通信线程间使用互斥锁来共享底层网络连接,减少与相同结点通信连接的数量,但存在锁竞争开销大且无法为多个线程提供公平服务的问题。另一方面,网络通信一直是分布式机器学习的瓶颈,当前使用RDMA加速分布式应用的研究仅考虑在小数据通信场景下对传输服务类型和通信原语的选择,没有考虑应用移植时网络通信接口语义不匹配,以及更多影响RDMA性能的因素包括网络连接参数选择,网络缓冲区管理,PCIe传输效率等问题,因此无法为分布式机器学习应用提出系统的有效加速方案。本文的第一个工作针对现有基于互斥锁资源复用方式存在性能瓶颈,接收队列无法在多个应用间复用的问题,且结合资源共享下保障应用服务公平的需求,在系统层面对底层网络资源进行复用,设计抽象连接和异步请求处理来向上层多个应用提供网络服务。本文还通过实验来指出网卡队列服务存在队头阻塞和粗粒度调度问题,并通过在资源复用层设计流量自动切分和公平入队算法来保障多个网络连接和不同优先级流量之间的公平服务。本文使用的资源复用方式的好处在于:相比已有的方法,我们可以消除锁竞争带来的性能瓶颈,为整个物理机上的所有应用共享底层网络资源,有效的降低资源使用总量,同时向网络连接提供公平服务。本文的第二个工作在前一个工作的基础上,针对应用无法完全获得RDMA的最大性能问题和分布式机器学习框架MXNet的通信瓶颈问题,通过设计socket语义兼容的RDMA网络接口,对队列流水线长度参数调优,设计应用无关的网络缓冲区管理模块,使用流水线式内存拷贝和按需缓存来自适应优化小数据传输的延迟和大数据传输的计算资源开销,为分布式机器学习框架MXNet提供系统性的加速方案。本文通过系统实现并在真实环境中实验来验证我们方法的有效性。通过实验和分析,我们的资源复用方式能够消除锁竞争的开销,为1024个虚拟连接下复用单个QP并维持RDMA原有性能,同时能够保证公平服务。本文提出的新的RDMA网络接口可以为MXNet中的参数服务器提供5到9倍的性能提升,为分布式手写数字识别算法提供2倍的性能提升。