论文部分内容阅读
InfiniBand(IB)是一种高带宽低延迟的工业标准高性能互连网络,具有支持RDMA等高级特性,是目前高性能集群计算系统内部互连的主流技术之一,为提高Java应用集群系统的通信性能提供了可能。但当前Java应用只能通过仿真协议(IPoIB或SDP)间接使用InfiniBand网络,导致Java应用集群系统不能充分利用InfiniBand网络的通信能力。随着Java集群被广泛部署于企业应用环境中,作为商业计算的重要平台,原本为低速以太网设计的通信库已不能满足现有应用的需求。研究基于InfiniBand的Java集群通信,不仅可以改进Java应用集群系统的通信性能,提高Java应用集群系统在通信密集型应用环境中的服务能力和服务质量,而且对推动Java在新型网络架构中的应用,提高互联网信息服务企业的应用效率具有重要意义。
本文设计并实现了基于InfiniBand网络的高性能Java集群通信库jStream,突破了Java不能直接使用InfiniBand网络的限制,为Java应用直接利用InfiniBand网络的RDMA机制提供了支持,使Java应用集群系统可以充分利用InfiniBand网络的通信能力和性能优势,提高了Java应用集群系统的通信性能,解决了I/O性能制约Java应用集群不能在通信密集型应用环境中有效发挥作用的问题。本文首先在对相关研究进行分析的基础上提出了jStream的总体结构和设计思想,然后介绍了在jStream具体设计与实现中采用的具有创新性的关键技术,包括控制/数据独立双链路、缓冲区预注册与回绕算法、非实时确认策略、RDMA异步零拷贝发送机制,以及零拷贝和一对一映射的Java API封装。
本文的实验结果显示,Java使用jStream通信库无论在带宽还是延迟上都达到了和本地编译的C程序相接近的性能,与Java通过传统socket接口使用SDP的性能相比有了大幅提高;而jStream通信库的native流通信协议的性能也远超过SDP,并达到了与底层InfiniBand Verbs相当的水平。实验结果充分说明jStream是一个高性能的Java集群通信库,能够满足通信密集型应用环境中Java应用对延迟和带宽的要求。Java应用通过jStream直接使用InfiniBand网络比通过传统Java Sockets接口和IPoIB、SDP等仿真协议间接使用InfiniBand网络能够获得更好的性能。
本文涉及底层网络驱动、集群通信管理,以及Java通信接口技术,在不同的层面用不同的编程语言解决了相应的问题。jStream可以部署在以InfiniBand互连的Java集群中,直接为Java应用或MPJ等分布式通信范型提供支持。