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 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.
- Alexandrov, A. D., Ibel, M., Schauser, K. E., and Scheiman, C. J. 1997. SuperWeb: Research issues in Java-based global computing. Concurrency: Pract. Exper. 9, 6 (June), 535--553.]]Google Scholar
- Antoniu, G., Bougé, L., Hatcher, P., MacBeth, M., McGuigan, K., and Namyst, R. 2000. Compiling multithreaded Java bytecode for distributed execution. In Proceedings of the Euro-Par 2000. LNCS 1900 Springer, München, Germany, 1039--1052.]] Google Scholar
- Aridor, Y., Factor, M., and Teperman, A. 1999. cJVM: a single system image of a JVM on a cluster. In Proceedings of the 1999 International Conference on Parallel Processing (Aizu, Japan).]] Google Scholar
- Bal, H., Bhoedjang, R., Hofman, R., Jacobs, C., Langendoen, K., Rühl, T., and Kaashoek, M. 1998. Performance evaluation of the Orca shared object system. ACM Trans. Comput. Syst. 16, 1 (Feb.), 1--40.]] Google Scholar
- Bal, H., Bhoedjang, R., Hofman, R., Jacobs, C., Langendoen, K., and Verstoep, K. 1997. Performance of a high-level parallel language on a high-speed network. J. Parallel Distrib. Comput. 40, 1 (Feb.), 49--64.]] Google Scholar
- Baldeschwieler, J., Blumofe, R., and Brewer, E. 1996. ATLAS: An infrastructure for global computing. In Proceedings of the Seventh ACM SIGOPS European Workshop on System Support for Worldwide Applications. ACM, New York, NY.]] Google Scholar
- Bershad, B., Savage, S., Pardyak, P., Sirer, E. G., Becker, D., Fiuczynski, M., Chambers, C., and Eggers, S. 1995. Extensibility, safety and performance in the SPIN operating system. In Proceedings of the 15th ACM Symposium on Operating System Principles (SOSP-15). ACM, New York, NY, 267--284.]] Google Scholar
- Bhoedjang, R., Verstoep, K., Rühl, T., Bal, H., and Hofman, R. 2000. Evaluating design alternatives for reliable communication on high-speed networks. In Proceedings of the 9th International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS-9, Cambridge, MA).]] Google Scholar
- Blackston, D. and Suel, T. 1997. Highly portable and efficient implementations of parallel adaptive N-body methods. In SC'97. online at http://www.supercomp.org /sc97/program/ TECH/BLACKSTO/.]] Google Scholar
- Boden, N., Cohen, D., Felderman, R., Kulawik, A., Seitz, C., Seizovic, J., and Su, W. 1995. Myrinet: A gigabit-per-second local area network IEEE Micro 15, 1 (Jan.), 29--36.]] Google Scholar
- Breg, F., Diwan, S., Villacis, J., Balasubramanian, J., Akman, E., and Gannon, D. 1998. Java RMI performance and object model interoperability: Experiments with Java/HPC++ distributed components. In Proceedings of the ACM 1998 Workshop on Java for High-Performance Network Computing (Santa Barbara, CA), ACM, New York, NY.]]Google Scholar
- Brown, A. and Seltzer, M. 1997. Operating system benchmarking in the wake of Lmbench: A case study of the performance of NetBSD on the Intel x86 architecture. In Proceedings of the 1997 Conference on Measurement and Modeling of Computer Systems (SIGMETRICS, Seattle, WA), 214--224.]] Google Scholar
- Burke, M., Choi, J.-D., Fink, S., Grove, D., Hind, M., Sarkar, V., Serrano, M., Sreedhar, V. C., Srinivasan, H., and Whaley, J. 1999. The Jalapeno dynamic optimizing compiler for Java. In Proceedings of the ACM 1999 Java Grande Conference (San Francisco, CA), ACM, New York, NY, 129--141.]] Google Scholar
- Carpenter, B., Fox, G., Ko, S. H., and Lim, S. 1999. Object serialization for marshalling data in a Java interface to MPI. In Proceedings of the ACM 1999 Java Grande Conference (San Francisco, CA), ACM, New York, NY, 66--71.]] Google Scholar
- Chang, C.-C. and von Eicken, T. 1998. A software architecture for zero-copy RPC in Java. Tech. Rep. 98-1708, Cornell Univ., Sept.]] Google Scholar
- Chang, C.-C. and von Eicken, T. 1999. Interfacing Java with the Virtual Interface Architecture. In Proceedings of the ACM 1999 Java Grande Conference (San Francisco, CA), ACM, New York, NY, 51--57.]] Google Scholar
- Christiansen, B., Cappello, P., Ionescu, M. F., Neary, M. O., Schauser, K. E., and Wu, D. 1997. Javelin: Internet-based parallel computing using Java. Concurrency: Pract. Exper. 9, 11, 1139--1160.]]Google Scholar
- Culler, D., Dusseau, A., Goldstein, S., Krishnamurthy, A., Lumetta, S., von Eicken, T., and Yelick, K. 1993. Parallel programming in split-C. In Supercomputing.]] Google Scholar
- Foster, I. and Kesselman, C. 1998. The Grid: Blueprint for a New Computing Infrastructure. Morgan Kaufmann.]] Google Scholar
- Getov, V. 1999. MPI and Java-MPI: Contrasts and comparisons of low-level communication performance. In Supercomputing. Portland, OR.]] Google Scholar
- Getov, V., Flynn-Hummel, S., and Mintchev, S. 1998. High-performance parallel programming in Java: Exploiting native libraries. In Proceedings of the ACM 1998 Workshop on Java for High-Performance Network Computing. ACM, New York, NY.]]Google Scholar
- Gray, P. and Sunderam, V. 1997. IceT: Distributed computing and Java. Concurrency: Pract. Exper. 9, 11 (Nov.).]]Google Scholar
- Hagimont, D. and Louvegnies, D. 1998. Javanaise: Distributed shared objects for internet cooperative applications. In Proceedings of the Middleware'98 Conference (The Lake District, England).]]Google Scholar
- Hirano, S., Yasu, Y., and Igarashi, H. 1998. Performance evaluation of popular distributed object technologies for Java. In Proceedings of the ACM 1998 Workshop on Java for High-Performance Network Computing. Online at http://www.cs.ucsb.edu/conferences/java98/.]]Google Scholar
- Hu, Y., Yu, W., Cox, A., Wallach, D., and Zwaenepoel, W. 1999. Runtime support for distributed sharing in strongly typed languages. Tech. Rep., Rice Univ. Online at http://www.cs.rice.edu/willy/TreadMarks/papers.html.]]Google Scholar
- Hutchinson, N., Peterson, L., Abbott, M., and O'Malley, S. 1989. RPC in the x-Kernel: Evaluating new design techniques. In Proceedings of the 12th ACM Symposium on Operating System Principles (Litchfield Park, AZ), 91--101.]] Google Scholar
- Izatt, M., Chan, P., and Brecht, T. 1999. Ajents: Towards an environment for parallel, distributed and mobile Java applications. In Proceedings of the ACM 1999 Java Grande Conference (San Francisco, CA), 15--24.]] Google Scholar
- Johnson, D. and Zwaenepoel, W. 1991. The Peregrine high-performance RPC system. Tech. Rep. TR91-151, Rice Univ., Mar.]]Google Scholar
- Johnson, K., Kaashoek, M., and Wallach, D. 1995. CRL: High-performance all-software distributed shared memory. In 15th ACM Symposium on Operating Systems Principles (Copper Mountain, CO), ACM, New York, NY, 213--228.]] Google Scholar
- Judd, G., Clement, M., Snell, Q., and Getov, V. 1999. Design issues for efficient implementation of MPI in Java. In Proceedings of the ACM 1999 Java Grande Conference (San Francisco, CA), ACM, New York, NY, 58--65.]] Google Scholar
- Kaashoek, M., Engler, D., Ganger, G., Briceno, H., Hunt, R., Mazières, D., Pinckney, T., Grimm, R., Jannotti, J., and Mackenzie, K. 1997. Application performance and flexibility on exokernel systems. In Proceedings of the 16th ACM Symposium on Operating Systems Principles. ACM, New York, NY, 52--65.]] Google Scholar
- Karamcheti, V. and Chien, A. 1993. Concert---efficient runtime support for concurrent object-oriented programming languages on stock hardware. In Supercomputing'93 (Portland, OR), 15--19.]] Google Scholar
- Keleher, P., Cox, A., Dwarkadas, S., and Zwaenepoel, W. 1994. TreadMarks: Distributed shared memory on standard workstations and operating systems. In Proceedings of the Winter 1994 Usenix Conference (San Francisco, CA), 115--131.]] Google Scholar
- Krall, A. and Grafl, R. 1997. CACAO---A 64-bit JavaVM just-in-time compiler. Concurrency: Pract. Exper. 9, 11 (Nov.), 1017--1030. Online at http://www.complang.tuwien.ac.at/andi/.]]Google Scholar
- Krishnaswamy, V., Walther, D., Bhola, S., Bommaiah, E., Riley, G., Topol, B., and Ahamad, M. 1998. Efficient implementations of Java RMI. In Proceedings of the 4th USENIX Conference on Object-Oriented Technologies and Systems (COOTS'98, Santa Fe, NM).]] Google Scholar
- Langendoen, K., Bhoedjang, R. A. F., and Bal, H. E. 1997. Models for asynchronous message handling. IEEE Concurrency 5, 2 (April--June), 28--38.]] Google Scholar
- Launay, P. and Pazat, J.-L. 1998. The Do! project: Distributed programming using Java. In Proceedings of the First UK Workshop on Java for High Performance Network Computing (Southampton, England).]]Google Scholar
- Lipkind, I., Pechtchanski, I., and Karamcheti, V. 1999. Object views: Language support for intelligent object caching in parallel and distributed computations. In Proceedings of the 1999 Conference on Object-Oriented Programming Systems, Languages and Applications. 447--460.]] Google Scholar
- Maassen, J., Kielmann, T., and Bal, H. E. 2000. Efficient replicated method invocation in Java. In Proceedings of the ACM 2000 Java Grande Conference (San Francisco, CA), ACM, New York, NY, 88--96.]] Google Scholar
- Maassen, J., van Nieuwpoort, R., Veldema, R., Bal, H. E., and Plaat, A. 1999. An efficient implementation of Java's remote method invocation. In Proceedings of the Seventh ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPoPP'99, Atlanta, GA), ACM, New York, NY, 173--182.]] Google Scholar
- Macbeth, M. W., McGuigan, K. A., and Hatcher, P. J. 1998. Executing Java threads in parallel in a distributed-memory environment. In Proceedings of the CASCON'98. IBM Canada and the National Research Council of Canada, 40--54.]] Google Scholar
- Mosberger, D. and Peterson, L. 1996. Making paths explicit in the Scout operating system. In Proceedings of the USENIX Symposium on Operating Systems Design and Implementation. 153--168.]] Google Scholar
- Muller, G., Moura, B., Bellard, F., and Consel, C. 1997. Harissa, a mixed offline compiler and interpreter for dynamic class loading. In Proceedings of the Third USENIX Conference on Object-Oriented Technologies (COOTS, Portland, OR).]]Google Scholar
- Nester, C., Philippsen, M., and Haumacher, B. 1999. A more efficient RMI for Java. In Proceedings of the ACM 1999 Java Grande Conference (San Francisco, CA), ACM, New York, NY, 153--159.]] Google Scholar
- Philippsen, M. and Zenger, M. 1997. JavaParty---Transparent remote objects in Java. Concurrency: Pract. Exper. 9, 11 (Nov.), 1225--1242. Online at http://wwwipd.ira.uka.de/JavaParty/.]]Google Scholar
- Philippsen, M., Haumacher, B., and Nester, C. 2000. More efficient serialization and RMI for Java. Concurrency: Pract. Exper. 12, 7, 495--518.]]Google Scholar
- Proebsting, T., Townsend, G., Bridges, P., Hartman, J., Newsham, T., and Watterson, S. 1997. Toba: Java for applications---a way ahead of time (WAT) compiler. In Proceedings of the 3rd Conference on Object-Oriented Technologies and Systems (Portland, OR).]] Google Scholar
- Rinard, M. C., Scales, D. J., and Lam, M. S. 1993. Jade: A high-level, machine-independent language for parallel programming. IEEE Computer 26, 6 (June.), 28--38.]] Google Scholar
- Rodrigues, S., Anderson, T., and Culler, D. 1997. High-performance local communication with fast sockets. In USENIX'97.]] Google Scholar
- Schroeder, M. and Burrows, M. 1990. Performance of Firefly RPC. ACM Trans. Comput. Syst. 8, 1 (Feb.), 1--17.]] Google Scholar
- Sun Microsystems. 1997. Java Remote Method Invocation Specification, JDK 1.1 FCS, Online at http://java.sun.com/products/jdk/rmi.]]Google Scholar
- Thekkath, C. and Levy, H. 1993. Limits to low-latency communication on high-speed networks. ACM Trans. Comput. Syst. 11, 2 (May), 179--203.]] Google Scholar
- van Reeuwijk, K., van Gemund, A., and Sips, H. 1997. Spar: A programming language for semi-automatic compilation of parallel programs. Concurrency: Pract. Exper. 9, 11 (Aug.), 1193--1205.]]Google Scholar
- van Renesse, R., van Staveren, J., and Tanenbaum, A. 1989. Performance of the Amoeba distributed operating system Softw. Pract. Exper. 19, 223--234.]] Google Scholar
- Veldema, R., Hofman, R., Bhoedjang, R., and Bal, H. 2001a. Runtime optimizations for a Java DSM implementation. In Proceedings of the ACM 2001 Java Grande Conference. ACM, New York, NY.]] Google Scholar
- Veldema, R., Hofman, R., Bhoedjang, R., Jacobs, C., and Bal, H. 2001b. Source-level global optimizations for fine-grain distributed shared memory systems. In PPoPP-2001 Symposium on Principles and Practice of Parallel Programming.]] Google Scholar
- von Eicken, T., Culler, D., Goldstein, S., and Schauser, K. 1992. Active messages: A mechanism for integrated communication and computation. In Proceedings of the 19th Annual Int. Symposium on Computer Architecture (Gold Coast, Australia), 256--266.]] Google Scholar
- Waldo, J. 1998. Remote procedure calls and Java Remote Method Invocation. IEEE Concurrency 6, 3 (July--Sept.), 5--7.]] Google Scholar
- Wallach, D., Hsieh, W., Johnson, K., Kaashoek, M., and Weihl, W. 1995. Optimistic Active Messages: A mechanism for scheduling communication with computation. In Proceedings of the 5th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPoPP'95, Santa Barbara, CA), ACM, New York, NY, 217--226.]] Google Scholar
- Welsh, M. and Culler, D. 2000. Jaguar: Enabling efficient communication and I/O from Java. Concurrency: Pract. Exper. 12, 7, 519-538.]]Google Scholar
- Woo, S., Ohara, M., Torrie, E., Singh, J., and Gupta, A. 1995. The SPLASH-2 programs: Characterization and methodological considerations. In Proceedings of the 22nd International Symposium on Computer Architecture, 24--36.]] Google Scholar
- Yelick, K., Semenzato, L., Pike, G., Miyamoto, C., Liblit, B., Krishnamurthy, A., Hilfinger, P., Graham, S., Gay, D., Colella, P., and Aiken, A. 1998. Titanium: A high-performance Java dialect. In Proceedings of the ACM 1998 Workshop on Java for High-Performance Network Computing. Online at http://www.cs.ucsb.edu/conferences/java98/.]]Google Scholar
- Yu, W. and Cox, A. 1997. Java/DSM: A platform for heterogeneous computing. Concurrency: Pract. Exper. 9, 11 (Nov.), 1213--1224.]]Google Scholar
Index Terms
- Efficient Java RMI for parallel programming
Recommendations
Dissection of the internal workings of the RMI, possible enhancements and implementing authentication in standard Java RMI
The Java Remote Method Invocation (RMI) is a well-known solution for remote method call. However, the standard Java RMI lacks features like service availability, load sharing, authentication and authorisation of client, data security and asynchronous ...
Comments