论文部分内容阅读
现在的数据中心每天必须处理成千上万的独立用户所产生的请求和数据,云计算和大数据类的应用负载使得数据中心的内部流量和外部流量占比发生了巨大的变化,占比已经从原来的5∶95变成了75∶25。同时数据中心面临的负载越来越多样化,不同的负载对数据中心的资源要求不同,有的负载对内存需求大,有的负载对网络需求高,而有的负载对处理器性能要求高。为了满足不同的数据中心负载需求,数据中心应该能合理的动态调度资源,共享资源,这种需求对数据中心内部互连提出了更高的要求。为了提供性能更高,延迟更低的互连,硬件互连设备已经有了飞速的发展。除了传统的已经应用于HPC领域的互连协议例如10-Gigabit Ethernet,Infiniband,Myrinet,Quadrics等有所发展以外,一些新型的互连协议,例如RapidIO,PCIe等也开始被人尝试应用于数据中心互连。 随着硬件互连设备的飞速发展,硬件和传统的通信库之间所表现出来的差距日趋明显。这导致了数据中心无法充分利用上这些硬件设备所提供的高性能,特别是对于一些新型互连协议,这种差距更是明显。正是在这种背景下,本研究选择新型互连协议PCIe搭建的原型系统作为研究平台,研究如何在新型互连设备上开发高性能软件通信库。 首先,本研究测试并分析了使用PCIe协议作为互连设备的优缺点。其中包括:(1)PCIe支持互连的两个节点通过store/load指令直接访问远程内存;(2)PCIe在硬件协议层通过数据重传保证了数据传输的正确性;(3) PCIe支持多种DMA模式以满足不同的需求。基于以上优点,开发基于高性能软件通信库时做了以下优化: 1.使用store指令直接传输小数据包; 2.通过Write Flow Control模式而不是Read Flow Control模式进行流量控制; 3.使用Burst DMA模式替代Block DMA模式来进行大数据的传输; 除了根据硬件层面的特点进行优化,在软件层面也进行了优化。主要有:(1)将传统的TCP/IP软件协议栈从通信协议栈中移除;(2)在用户态下实现高性能软件通信库。通过这些优化效果,最终使得我们的通信库在带宽以及延迟上都逼近硬件设备所提供的原始性能峰值。其中,软件通信库能达到的带宽是2.87GB/s(其中硬件设备的理论峰值带宽是2.96GB/s),能到达的最低延迟是1.2us(其中硬件设备的测试得到的最低延迟是1.1us)。 在开发基于PCIe协议的软件通信库过程中发现以下问题:(1)由于PCIe本身支持的地址转换窗口很少,导致当软件通信库需要支持多个连接时不得不共享复用这几个地址转换窗口,这导致了控制上的复杂性;(2)通信库并没有实现真正意义上的用户态通信,因为硬件本身并没有提供虚实地址转换能力;(3)地址转换窗口在硬件层面并没有上下文的状态,导致一切控制都由软件来控制,这导致了一定安全性的隐患。因此基于以上问题,本研究后期开发了基于PCIe协议的网络通讯控制器Queue Pair,它通过内部实现了TLB来提供虚实转换的能力,同时,支持65535个通道以保证互连设备有足够多的通道进行数据传输,大大降低了软件通信库实现的复杂度,同时每个通道有自己的上下文,通过硬件来增大了通信的安全性。