Efficient Java RMI for Parallel Programming

Maassen J, van Nieuwpoort R, Veldema R, Bal H, Kielmann T, Jakobs C, Hofmann R (2001)


Publication Language: English

Publication Type: Journal article, other

Publication year: 2001

Journal

Publisher: Association for Computing Machinery (ACM)

Book Volume: 23

Pages Range: 747-775

Journal Issue: 6

URI: http://www2.informatik.uni-erlangen.de/publication/download/toplas_manta01.ps.Z

DOI: 10.1145/506315.506317

Abstract

Java offers interesting opportunities for parallel computing. In particular, Java Remote Method Invocation (RMI) provides a flexible kind of remote procedure call (RPC) that supports polymorphism. Sun's RMI implementation achieves this kind of flexibility at the cost of a major runtime overhead. The goal of this article is to show that RMI can be implemented efficiently, while still supporting polymorphism and allowing interoperability with Java Virtual Machines (JVMs). We study a new approach for implementing RMI, using a compiler-based Java system called Manta. Manta uses a native (static) compiler instead of a just-in-time compiler. To implement RMI efficiently, Manta exploits compile-time type information for generating specialized serializers. Also, it uses an efficient RMI protocol and fast low-level communication protocols. A difficult problem with this approach is how to support polymorphism and interoperability. One of the consequences of polymorphism is that an RMI implementation must be able to download remote classes into an application during runtime. Manta solves this problem by using a dynamic bytecode compiler, which is capable of compiling and linking bytecode into a running application. To allow interoperability with JVMs, Manta also implements the Sun RMI protocol (i.e., the standard RMI protocol), in addition to its own protocol. We evaluate the performance of Manta using benchmarks and applications that run on a 32-node Myrinet cluster. The time for a null-RMI (without parameters or a return value) of Manta is 35 times lower than for the Sun JDK 1.2, and only slightly higher than for a C-based RPC protocol. This high performance is accomplished by pushing almost all of the runtime overhead of RMI to compile time. We study the performance differences between the Manta and the Sun RMI protocols in detail. The poor performance of the Sun RMI protocol is in part due to an inefficient implementation of the protocol. To allow a fair comparison, we compiled the applications and the Sun RMI protocol with the native Manta compiler. The results show that Mania's null-RMI latency is still eight times lower than for the compiled Sun RMI protocol and that Manta's efficient RMI protocol results in 1.8 to 3.4 times higher speedups for four out of six applications.

Authors with CRIS profile

Involved external institutions

How to cite

APA:

Maassen, J., van Nieuwpoort, R., Veldema, R., Bal, H., Kielmann, T., Jakobs, C., & Hofmann, R. (2001). Efficient Java RMI for Parallel Programming. Acm Transactions on Programming Languages and Systems, 23(6), 747-775. https://dx.doi.org/10.1145/506315.506317

MLA:

Maassen, Jason, et al. "Efficient Java RMI for Parallel Programming." Acm Transactions on Programming Languages and Systems 23.6 (2001): 747-775.

BibTeX: Download