The performance of the Amoeba distributed operating system
Software—Practice & Experience
RPC in the x-Kernel: evaluating new design techniques
SOSP '89 Proceedings of the twelfth ACM symposium on Operating systems principles
Performance of the Firefly RPC
ACM Transactions on Computer Systems (TOCS)
Active messages: a mechanism for integrated communication and computation
ISCA '92 Proceedings of the 19th annual international symposium on Computer architecture
Limits to low-latency communication on high-speed networks
ACM Transactions on Computer Systems (TOCS)
Parallel programming in Split-C
Proceedings of the 1993 ACM/IEEE conference on Supercomputing
Proceedings of the 1993 ACM/IEEE conference on Supercomputing
Optimistic active messages: a mechanism for scheduling communication with computation
PPOPP '95 Proceedings of the fifth ACM SIGPLAN symposium on Principles and practice of parallel programming
The SPLASH-2 programs: characterization and methodological considerations
ISCA '95 Proceedings of the 22nd annual international symposium on Computer architecture
CRL: high-performance all-software distributed shared memory
SOSP '95 Proceedings of the fifteenth ACM symposium on Operating systems principles
Extensibility safety and performance in the SPIN operating system
SOSP '95 Proceedings of the fifteenth ACM symposium on Operating systems principles
Making paths explicit in the Scout operating system
OSDI '96 Proceedings of the second USENIX symposium on Operating systems design and implementation
Performance of a high-level parallel language on a high-speed network
Journal of Parallel and Distributed Computing - Special issue on workstation clusters and network-based computing
SIGMETRICS '97 Proceedings of the 1997 ACM SIGMETRICS international conference on Measurement and modeling of computer systems
Application performance and flexibility on exokernel systems
Proceedings of the sixteenth ACM symposium on Operating systems principles
Performance evaluation of the Orca shared-object system
ACM Transactions on Computer Systems (TOCS)
The grid: blueprint for a new computing infrastructure
The grid: blueprint for a new computing infrastructure
An efficient implementation of Java's remote method invocation
Proceedings of the seventh ACM SIGPLAN symposium on Principles and practice of parallel programming
Ajents: towards an environment for parallel, distributed and mobile Java applications
JAVA '99 Proceedings of the ACM 1999 conference on Java Grande
Interfacing Java to the virtual interface architecture
JAVA '99 Proceedings of the ACM 1999 conference on Java Grande
Design issues for efficient implementation of MPI in Java
JAVA '99 Proceedings of the ACM 1999 conference on Java Grande
Object serialization for marshalling data in a Java interface to MPI
JAVA '99 Proceedings of the ACM 1999 conference on Java Grande
The Jalapeño dynamic optimizing compiler for Java
JAVA '99 Proceedings of the ACM 1999 conference on Java Grande
JAVA '99 Proceedings of the ACM 1999 conference on Java Grande
Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
MPI and Java-MPI: contrasts and comparisons of low-level communication performance
SC '99 Proceedings of the 1999 ACM/IEEE conference on Supercomputing
Efficient replicated method invocation in Java
Proceedings of the ACM 2000 conference on Java Grande
Runtime optimizations for a Java DSM implementation
Proceedings of the 2001 joint ACM-ISCOPE conference on Java Grande
Evaluating design alternatives for reliable communication on high-speed networks
ASPLOS IX Proceedings of the ninth international conference on Architectural support for programming languages and operating systems
Source-level global optimizations for fine-grain distributed shared memory systems
PPoPP '01 Proceedings of the eighth ACM SIGPLAN symposium on Principles and practices of parallel programming
ATLAS: an infrastructure for global computing
EW 7 Proceedings of the 7th workshop on ACM SIGOPS European workshop: Systems support for worldwide applications
Highly portable and efficient implementations of parallel adaptive N-body methods
SC '97 Proceedings of the 1997 ACM/IEEE conference on Supercomputing
Models for Asynchronous Message Handling
IEEE Parallel & Distributed Technology: Systems & Technology
Remote Procedure Calls and Java Remote Method Invocation
IEEE Concurrency
Executing Java threads in parallel in a distributed-memory environment
CASCON '98 Proceedings of the 1998 conference of the Centre for Advanced Studies on Collaborative research
cJVM: A Single System Image of a JVM on a Cluster
ICPP '99 Proceedings of the 1999 International Conference on Parallel Processing
A Software Architecture for Zero-Copy RPC in Java
A Software Architecture for Zero-Copy RPC in Java
Efficient implementations of java remote method invocation (RMI)
COOTS'98 Proceedings of the 4th conference on USENIX Conference on Object-Oriented Technologies and Systems - Volume 4
Toba: java for applications a way ahead of time (WAT) compiler
COOTS'97 Proceedings of the 3rd conference on USENIX Conference on Object-Oriented Technologies (COOTS) - Volume 3
High-performance local area communication with fast sockets
ATEC '97 Proceedings of the annual conference on USENIX Annual Technical Conference
Javanaise: distributed shared objects for internet cooperative applications
Middleware '98 Proceedings of the IFIP International Conference on Distributed Systems Platforms and Open Distributed Processing
Ibis: an efficient Java-based grid programming environment
JGI '02 Proceedings of the 2002 joint ACM-ISCOPE conference on Java Grande
Java Class Deployment Using Class Collections
NODe '02 Revised Papers from the International Conference NetObjectDays on Objects, Components, Architectures, Services, and Applications for a Networked World
Programming environments for high-performance grid computing: the Albatross project
Future Generation Computer Systems - Grid computing: Towards a new computing infrastructure
A component-based approach to build a portable and flexible middleware for metacomputing
Parallel Computing - Special issue: Advanced environments for parallel and distributed computing
Using generative design patterns to generate parallel code for a distributed memory environment
Proceedings of the ninth ACM SIGPLAN symposium on Principles and practice of parallel programming
Efficiently Distributing Component-Based Applications Across Wide-Area Environments
ICDCS '03 Proceedings of the 23rd International Conference on Distributed Computing Systems
GrADSolve: a grid-based RPC system for parallel computing with application-level scheduling
Journal of Parallel and Distributed Computing - Special issue on middleware
Portable and efficient distributed threads for Java
Proceedings of the 5th ACM/IFIP/USENIX international conference on Middleware
Designing Efficient Java Communications on Clusters
IPDPS '05 Proceedings of the 19th IEEE International Parallel and Distributed Processing Symposium (IPDPS'05) - Workshop 5 - Volume 06
Adapting Java RMI for grid computing
Future Generation Computer Systems - Special issue: Parallel computing technologies
Research note: Modeling distributed data representation and its effect on parallel data accesses
Journal of Parallel and Distributed Computing - Special issue: Design and performance of networks for super-, cluster-, and grid-computing: Part I
Static Analysis of Object References in RMI-Based Java Software
IEEE Transactions on Software Engineering
Mechanisms for object caching in distributed applications using Java RMI
Software—Practice & Experience
Identifying Data Transfer Objects in EJB Applications
WODA '07 Proceedings of the 5th International Workshop on Dynamic Analysis
XMem: type-safe, transparent, shared memory for cross-runtime communication and coordination
Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation
Java Fast Sockets: Enabling high-speed Java communications on high performance clusters
Computer Communications
Computer Languages, Systems and Structures
FTRepMI: Fault-Tolerant, Sequentially-Consistent Object Replication for Grid Applications
ICDCN '09 Proceedings of the 10th International Conference on Distributed Computing and Networking
Java for high performance computing: assessment of current research and practice
PPPJ '09 Proceedings of the 7th International Conference on Principles and Practice of Programming in Java
Adapting Java RMI for grid computing
Future Generation Computer Systems - Special issue: Parallel computing technologies
Satin: A high-level and efficient grid programming model
ACM Transactions on Programming Languages and Systems (TOPLAS)
Jade: a parallel message-driven java
ICCS'03 Proceedings of the 2003 international conference on Computational science: PartIII
Performance, overhead, and packetization characteristics of Java application level protocols
ACM SIGITE Research in IT
ACS'06 Proceedings of the 6th WSEAS international conference on Applied computer science
Transparent fault tolerance for grid applications
EGC'05 Proceedings of the 2005 European conference on Advances in Grid Computing
Optimizing marshalling by run-time program generation
GPCE'05 Proceedings of the 4th international conference on Generative Programming and Component Engineering
An empirical comparison of Java remote communication primitives for intra-node data transmission
ACM SIGMETRICS Performance Evaluation Review
Device level communication libraries for high-performance computing in Java
Concurrency and Computation: Practice & Experience
Science of Computer Programming
Java in the High Performance Computing arena: Research, practice and experience
Science of Computer Programming
Hi-index | 0.00 |
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.