论文部分内容阅读
数据中心是支持当今世界各种互联网服务的基础设施,面临硬件和应用两方面的挑战。硬件方面,通用处理器的性能提升逐渐放缓;应用方面,大数据与机器学习对算力的需求与日俱增。不同于容易并行的Web服务,大数据与机器学习需要各计算节点间更多的通信,这推动了数据中心网络性能的快速提高,也对共享数据存储的性能提出了更高的要求。然而,数据中心的网络和存储基础设施主要使用通用处理器上的软件处理,其性能落后于快速增长的网络、存储、定制化计算硬件性能,日益成为系统的瓶颈。与此同时,在云化的数据中心中,灵活性也是一项重要需求。为了同时提供高性能和灵活性,近年来,可编程网卡在数据中心被广泛部署,利用现场可编程门阵列(FPGA)等定制化硬件加速虚拟网络。本文旨在探索基于可编程网卡的高性能数据中心系统。可编程网卡在加速虚拟网络之外,还可以加速网络功能、数据结构、操作系统等。为此,本文用FPGA可编程网卡实现云计算数据中心计算、网络、内存存储节点的全栈加速。首先,本文提出用可编程网卡加速云计算中的虚拟网络功能,设计和实现了首个在商用服务器中用FPGA加速的高灵活性、高性能网络功能处理平台ClickNP。为了简化FPGA编程,本文设计了类C的ClickNP语言和模块化的编程模型,并开发了一系列优化技术,以充分利用FPGA的海量并行性;实现了ClickNP开发工具链,可以与多种商用高层次综合工具集成;基于ClickNP设计和实现了200多个网络元件,并用这些元件组建起多种网络功能。相比基于CPU的软件网络功能,ClickNP的吞吐量提高了10倍,延迟降低到1/10。其次,本文提出用可编程网卡加速远程数据结构访问。本文基于ClickNP编程框架,设计实现了一个高性能内存键值存储系统KV-Direct,在服务器端绕过CPU,用可编程网卡通过PCIe直接访问远程主机内存中的数据结构。通过把单边RDMA的内存操作语义扩展到键值操作语义,KV-Direct解决了单边RDMA操作数据结构时通信和同步开销高的问题。利用FPGA可重配置的特性,KV-Direct允许用户实现更复杂的数据结构。面对网卡与主机内存之间PCIe带宽较低、延迟较高的性能挑战,通过哈希表、内存分配器、乱序执行引擎、负载均衡和缓存、向量操作等一系列性能优化,KV-Direct实现了 10倍于CPU的能耗效率和微秒级的延迟,是首个单机性能达到10亿次每秒的通用键值存储系统。最后,本文提出用可编程网卡和用户态运行库相结合的方法为应用程序提供套接字通信原语,从而绕过操作系统内核。本文设计和实现了一个用户态套接字系统SocksDirect,与现有应用程序完全兼容,能实现接近硬件极限的吞吐量和延迟,多核性能具有可扩放性,并在高并发负载下保持高性能。主机内和主机间的通信分别使用共享内存和RDMA实现。为了支持高并发连接数,本文基于KV-Direct实现了一个RDMA可编程网卡。通过消除线程间同步、缓冲区管理、大数据拷贝、进程唤醒等一系列开销,SocksDirect相比Linux提升了7至20倍吞吐量,降低延迟到1/17至1/35,并将Web服务器的HTTP延迟降低到1/5.5。