JIT-Compiler-Assisted Distributed Java Virtual Machine

There is now a strong interest in high-performance execution of multithreaded Java programs in a cluster. Previous efforts to provide for such executions have either used static compilation tools that can transform multithreaded Java programs into parallel versions, or interpreter-based cluster-aware JVMs that offer the needed support. They failed however to be fully compliant with the Java language specification or to achieve high performance due to their weaknesses in supporting thread distribution and global object sharing. We present our research experience in the design and implementation a JIT-compiler-assisted distributed Java Virtual Machine. In our system, we make use of a JIT compiler to realize and optimize dynamic thread migration and global object sharing in a distributed environment.

[1]  Samuel P. Midkiff,et al.  High Performance Numerical Computing in Java: Language and Compiler Issues , 1999, LCPC.

[2]  Alan L. Cox,et al.  TreadMarks: shared memory computing on networks of workstations , 1996 .

[3]  Alan L. Cox,et al.  Java/DSM: A Platform for Heterogeneous Computing , 1997, Concurr. Pract. Exp..

[4]  Michael Factor,et al.  cJVM: a single system image of a JVM on a cluster , 1999, Proceedings of the 1999 International Conference on Parallel Processing.

[5]  James Gosling,et al.  The Java Language Specification, 3rd Edition , 2005 .

[6]  Wouter Joosen,et al.  Portable Support for Transparent Thread Migration in Java , 2000, ASA/MA.

[7]  Akinori Yonezawa,et al.  Bytecode Transformation for Portable Thread Migration in Java , 2000, ASA/MA.

[8]  Cho-Li Wang,et al.  Efficient global object space support for distributed JVM on cluster , 2002, Proceedings International Conference on Parallel Processing.

[9]  Guy L. Steele,et al.  Java Language Specification, Second Edition: The Java Series , 2000 .

[10]  Guy L. Steele,et al.  The High Performance Fortran Handbook , 1993 .

[11]  Jong-Deok Choi,et al.  Escape analysis for Java , 1999, OOPSLA '99.

[12]  Andrew A. Chien,et al.  ICC++-AC++ Dialect for High Performance Parallel Computing , 1996, ISOTAS.

[13]  Dejan S. Milojicic,et al.  Process migration , 1999, ACM Comput. Surv..

[14]  Alan L. Cox,et al.  Java/DSM: A platform for heterogeneous computing , 1997 .

[15]  Cho-Li Wang,et al.  JESSICA2: a distributed Java Virtual Machine with transparent thread migration support , 2002, Proceedings. IEEE International Conference on Cluster Computing.

[16]  Craig Chambers,et al.  Debugging optimized code with dynamic deoptimization , 1992, PLDI '92.

[17]  Philip J. Hatcher,et al.  The Hyperion system: Compiling multithreaded Java bytecode for distributed execution , 2001, Parallel Comput..

[18]  Vernon Rego,et al.  Arachne: A Portable Threads System Supporting Migrant Threads on Heterogeneous Network Farms , 1998, IEEE Trans. Parallel Distributed Syst..

[19]  Francis C. M. Lau,et al.  JESSICA: Java-Enabled Single-System-Image Computing Architecture , 2000, J. Parallel Distributed Comput..

[20]  William Pugh Fixing the Java memory model , 1999, JAVA '99.

[21]  Bradley C. Kuszmaul,et al.  Cilk: an efficient multithreaded runtime system , 1995, PPOPP '95.

[22]  Hans Werner Meuer,et al.  Top500 Supercomputer Sites , 1997 .

[23]  Cho-Li Wang,et al.  Lightweight transparent Java thread migration for distributed JVM , 2003, 2003 International Conference on Parallel Processing, 2003. Proceedings..

[24]  Andrew A. Chien,et al.  ICC++—a C++ dialect for high performance parallel computing , 1996, SIAP.

[25]  Henri E. Bal,et al.  Performance evaluation of the Orca shared-object system , 1998, TOCS.

[26]  Henri E. Bal,et al.  Runtime optimizations for a Java DSM implementation , 2001, JGI '01.

[27]  Frank Yellin,et al.  The Java Virtual Machine Specification , 1996 .

[28]  Laxmikant V. Kalé,et al.  CHARM++: a portable concurrent object oriented system based on C++ , 1993, OOPSLA '93.