论文部分内容阅读
InfiniBand是一种高带宽、低延迟的支持RDMA传输方式的高速互连技术,由于其传输方式的特殊性,现在主要在高性能服务器的设计中使用。随着Java集群被广泛部署于企业集群环境中,作为商业计算的重要平台,原本为低速以太网设计的通信库已不能满足现有应用的需求。研究Java技术如何利用InfiniBand实现高性能的集群通信,不但有益于探索用户态zero-copy协议的有效使用方法,而且可以推动Java在新型网络架构中的应用,提高企业应用的效率,对现在众多企业更好地进行信息化具有重要意义。
首先,本文对当前主要的集群通信技术做了评估,分析得出了影响Java网络通信的两个关键因素:数据拷贝、I/O完成事件通知机制。传统网络的网络设计及中断的通知方式,使得服务器在数据传输过程中占用大量CPU资源,直接影响了服务器的服务能力和可扩展性。
之后,文章基于用户层通信协议(ULP)设计了JStream通用通信库,负责管理使用RDMA的传输控制,包括缓冲区管理和流量控制等;在对JStream进行性能评估过程中发现RDMA单边通信的完成处理策略和JStream的API设计成为性能瓶颈,本文重新设计了JStream的结构(使用精简的API设计),并优化了RDMA单边通信的完成处理策略,不但可以维持API的RDMA语义,而且可以提高通信效率和降低CPU利用率。实验表明,重新设计的JStream通信库,比较好的解决了数据拷贝和I/O完成事件,使得延迟性能有了显著提高。
为了验证JStream在实际应用中的效果,本文还设计了基于JStream的RMI,用于实现面向对象语义的集群通信,实验评测表明,RMI的性能也有了较大的提升,同时,如果在JStream基础之上设计相对应的java.io包,减少Java堆间拷贝,可以获得更好的性能。
本文所做工作涉及底层网络通信、Java虚拟机以及Java中间件,在不同的层面解决了不同的问题,设计并实现的JStream和改进的RMI可以部署在以InfiniBand互联的Java集群中,提升系统整体性能,本文的工作还对实现相关系统的整体优化有很好的参考意义。