论文部分内容阅读
随着计算机技术的发展,数据中心服务器在运行大数据应用时显现出了两个亟待解决的问题:内存容量小和内存资源利用率低。内存容量的增长速度无法赶上处理器处理速度的增长,使得内存容量成为性能提升的瓶颈;另一方面,不同负载在不同时刻对内存资源的需求不同,按照服务的峰值需求配置内存容量会导致资源利用率低的问题。高效的跨节点内存共享可以解决上述两个问题,实现内存资源的动态调度,从而提高数据中心资源利用率。 为实现数据中心资源动态调度,本文作者所在团队开发了Venice定制互连协议。该协议为上层软件系统提供了两种访问远程内存的方式:ICT(Instruction Cut Through)通道—读写指令直接访问远程内存,RDMA通道—远程内存RDMA访问。本文在Venice定制互连协议的基础上为这两种方式设计了相应的系统软件,实现高效跨节点内存共享系统;并使用跨节点内存共享系统模拟器TSMSim评估远程内存预取的性能。 本文主要工作如下: 1.为ARM Linux内核添加动态NUMA支持。本研究采用动态NUMA技术,为ARMFPGA原型系统提供一种远程内存和本地内存区别管理的方法。该方法主要思想是:操作系统使用一个动态NUMA节点管理本地的CPU和本地内存,使用额外的动态NUMA节点管理远程内存。Linux系统管理员和应用程序开发者可以通过numactl和libnuma库为应用分配合适的内存。 2.分别为ARM FPGA原型系统和X86服务器原型系统设计实现了Venice通过RDMA访问远程内存所需的驱动。在ARM FPGA原型系统中实现了阻塞式RDMA驱动,并在其基础上采用软硬件相结合的优化方法,进一步提出了链式RDMA驱动的设计方法,二者的不同之处在于:阻塞式RDMA在同一时刻链路上只允许存在一个RDMA请求,而链式RDMA驱动允许同一时刻链路上至多存在31个RDMA请求。Venice互连协议在X86服务器上作为一个PCIe外设通过PCIe接口连接到主机上,因此在X86平台上实现的RDMA驱动包括PCIe设备的相关驱动功能。 3.基于本文作者所在团队开发的跨节点内存共享模拟器TSMSim,本文为远程内存缓存实现了stream buffer预取器,并评估其性能。本文使用了以Hadoop和Spark为框架的10个有代表性的数据中心应用作为benchmark进行实验。实验结果表明,当远程内存cache容量有限时,添加预取器能够大幅度提高远程内存访问的效率,性能最高可提高将近8倍。