论文部分内容阅读
近年来,大型数据中心被大规模部署。这些数据中心内运行着大量分布式应用,比如网页搜索,数据挖掘以及存储服务。网络延迟对许多分布式应用的性能至关重要。网络延迟大体上可以分为两部分:主机网络协议栈的延迟和网络内部的延迟。使用RDMA(远程直接访问内存)技术,主机延迟可以被大幅降低,但网络内部的延迟仍无很好的解决办法。因此延迟敏感的分布式应用的性能仍有很大提升空间。本文的目标是为延迟敏感的分布式应用降低网络内部的延迟,从而提升这些应用的性能。数据中心网络内部的延迟主要来源于以下三个方面:1)粗粒度的网络QoS导致延迟敏感的流量排队在高吞吐量的流量之后,使得延迟敏感流量网络排队延迟大;2)粗粒度的网络负载均衡带来网络流量局部热点;3)RDMA低效率的丢包恢复机制导致网络延迟在丢包时大幅增大。本文的目标是从以上三个方面来降低网络内部的延迟。针对该目标,之前的研究提出了很多方案,但均未考虑网络硬件资源有限的限制条件。网络硬件资源主要指网络交换机和主机网卡。网络交换机上的硬件优先级队列的数目以及主机网卡的片上资源都是很有限的。本文的创新点是在考虑网络硬件资源的限制下,从上述的三方面来降低网络内部延迟。首先,为解决粗粒度QoS带来的问题,许多工作通过细粒度的基于优先级的流量调度来给予延迟敏感流量更高的优先级,从而避免不必要的排队延迟。然而,大多数工作都假设网络交换机上有无穷多的优先级队列,这一点通常是不成立的。本文的研究表明,数据中心的网络交换机通常只有2~3个硬件优先级队列可以被用于流量调度。因此,如何利用有限的优先级队列个数来实现细粒度的流量调度成为了一个挑战。针对这个挑战,本文设计了显示优先级通知系统,利用两个网络交换机中的硬件优先级队列实现了细粒度的优先级流量调度,降低了延迟敏感流量的流完成时间其次,为提升网络的负载均衡效果,许多工作利用数据中心中的多路径来提供细粒度的负载均衡以避免局部流量热点。然而,之前的大多数工作聚焦于TCP流量而非RDMA流量。RDMA实现在硬件网卡之中,片上存储资源十分有限,通常在MB的数量级。因此,如何利用有限的片上硬件资源来把为RDMA流量设计一个可行的负载均衡策略是一个挑战。本文为RDMA设计了一个多路径的传输层协议来为RDMA流量做负载均衡,在最小化片上存储资源的同时,有效地提高了吞吐量并且降低了延迟。最后,为提升RDMA的丢包恢复效率,本文在考虑到硬件网卡片上资源限制的前提下,为RDMA设计了存储友好的选择性重传机制来提升RDMA在丢包时的重传效率。该机制利用最小的内存代价,大幅提升了 RDMA在丢包时的吞吐量,降低了延迟。我们实现并评测了上述的三个方案,实验结果表明:利用我们的流量调度策略,网络流的平均完成时间降低了 60.5%;进一步的,多路径RDMA传输层协议在把网络流的平均完成时间降低17.7%的同时将网络带宽利用率提高47%;最后,我们的丢包恢复机制能将RDMA流量在一定丢包率情况下的吞吐量提高14.02倍,同时将99%分位的流完成时间降低3.11倍。