skip to main content

Efficient Java RMI for parallel programming

Maassen, Jason ; Van Nieuwpoort, Rob ; Veldema, Ronald ; Bal, Henri ; Kielmann, Thilo ; Jacobs, Ceriel ; Hofman, Rutger

ACM Transactions on Programming Languages & Systems, Nov, 2001, Vol.23(6), p.747(29) [Periódico revisado por pares]

Texto completo disponível

Citações Citado por
  • Título:
    Efficient Java RMI for parallel programming
  • Autor: Maassen, Jason ; Van Nieuwpoort, Rob ; Veldema, Ronald ; Bal, Henri ; Kielmann, Thilo ; Jacobs, Ceriel ; Hofman, Rutger
  • Assuntos: Java (Programming language) -- Evaluation ; Computer Programming -- Methods ; Programming Languages -- Evaluation
  • É parte de: ACM Transactions on Programming Languages & Systems, Nov, 2001, Vol.23(6), p.747(29)
  • Descrição: 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 Manta'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. Categories and Subject Descriptors: D. 1.3 [Programming Techniques]: Concurrent Programming--distributed programming, parallel programming; D.3.2. [Programming Languages]: Language Classifications--concurrent, distributed, and parallel languages; object-oriented languages; D.3.4 [Programming Languages]: Processors--compilers; run-time environments General Terms: Languages, Performance Additional Key Words and Phrases: Communication, performance, remote method invocation

Buscando em bases de dados remotas. Favor aguardar.