Design of Scalable Java Communication Middleware for Multi-Core Systems

S. Ramos, G. L. Taboada, R. R. Exposito, J. Tourino, R. Doallo
2012 Computer journal  
This paper presents smdev, a shared memory communication middleware for multi-core systems. smdev provides a simple and powerful messaging API that is able to exploit the underlying multi-core architecture replacing inter-process and network-based communications by threads and shared memory transfers. The performance evaluation of smdev on several multi-core systems has shown noticeable improvements compared to other Java shared memory solutions, reaching and even overcoming the performance of
more » ... atively compiled libraries. Thus, smdev has obtained start-up latencies around 0.76 µs and almost 90 Gbps bandwidth for point-to-point communications, as well as high performance and scalability both for collective operations and representative messaging kernels. This fact has motivated the integration of smdev in F-MPJ, our message-passing implementation in Java. ited as sockets rely on TCP/IP. In order to overcome these limitations, parallel programmers generally develop their codes using message-passing libraries, which provide a higher level API, scalability and relatively good performance. The most extended API in natively compiled languages is MPI [4], whereas in Java it is MPJ (Message-Passing in Java) [5] . Nevertheless, current message-passing implementations generally do not take full advantage of multi-threading for intra-process transfers, and they resort to inter-process communication protocols and, in some cases, to network-based communication protocols for data transfers within the same node. This is even more critical with the current increase in the number of cores per processor, which demands scalable shared memory communication solutions. The communication middleware presented in this paper, smdev, provides a high-level message-passing API while taking full advantage of these multi-core architectures using multi-threading and shared memory transfers. Multi-threading allows to exploit shared memory intra-process transfers, but thread programming increases the development complexity due to the need for thread control and management, task scheduling, synchronization, access and maintenance of shared data structures, and the presence of thread safety concerns.
doi:10.1093/comjnl/bxs122 fatcat:vlyf7rbh6jh27dpkpkqxepem3i