Java Fast Sockets: Enabling high-speed Java communications on high performance clusters
If you’ve ever tried to write a high-performance Java program that does network communication you know that it’s hard to do this in an efficient manner. Researchers at the University of A Coruña in Spain have created a library called Java Fast Sockets (JFS) that dramatically increases throughput while reducing latency compared to the normal Java socket and NIO APIs.
If you've ever tried to write a high-performance Java program that does network communication you know that it's hard to do this in an efficient manner. Researchers at the University of A Coruña in Spain have created a library called Java Fast Sockets (JFS) that dramatically increases throughput while reducing latency compared to the normal Java socket and NIO APIs. And they did it while retaining compatibility with Java sockets.
This paper presents Java Fast Sockets (JFS), an optimized Java socket implementation on clusters for high performance computing. Current socket libraries do not efficiently support high-speed cluster interconnects and impose substantial communication overhead. JFS overcomes these performance constraints by: (1) enabling high-speed communication on cluster networks such as Scalable Coherent Interface (SCI), Myrinet and Gigabit Ethernet; (2) avoiding the need of primitive data type array serialization; (3) reducing buffering and unnecessary copies; and (4) reimplementing the protocol for boosting shared memory (intra-node) communication. Its interoperability and user and application transparency allow for immediate applicability on a wide range of parallel and distributed target applications. A performance evaluation conducted on a dual-core cluster has shown experimental evidence of throughput increase on SCI, Myrinet, Gigabit Ethernet and shared memory communication. It has also been analyzed the impact of this improvement on the overall application performance of representative parallel codes.
(click image for full size)
The open source library works by eliminating copies and unnecessary serialization steps. If you have the right hardware (RDMA Infiniband) or are communicating between two processes on a multi-core machine then the number of extra data copies made can drop to zero. Noticable improvements can be measured on traditional Gigabit Ethernet as well. A small native library provides operating system interfaces that are not available in the standard Java SDK.