A distributed Java Virtual Machine (DJVM) spanning multiple cluster nodes can provide a true parallel execution environment for multi-threaded Java applications. Most existing DJVMs suffer from the slow Java execution in interpretive mode and thus may not be efficient enough for solving computation-intensive problems. We present JESSICA2, a new DJVM running in JIT compilation mode that can execute multi-threaded Java applications transparently on clusters. JESSICA2 provides a single system image (SSI) illusion to Java applications via an embedded global object space (GOS) layer. It implements a cluster-aware Java execution engine that supports transparent Java thread migration for achieving dynamic load balancing. We discuss the issues of supporting transparent Java thread migration in a JIT compilation environment and propose several lightweight solutions. An adaptive migrating-home protocol used in the implementation of the GOS is introduced. The system has been implemented on x86-based Linux clusters, and significant performance improvements over the previous JESSICA system have been observed. 1.
|
847
|
Memory coherence in shared virtual memory systems
– Li, Hudak
- 1989
|
|
645
|
Distributed Operating Systems
– Tanenbaum
- 1995
|
|
483
|
MPI: The Complete Reference
– Snir, Otto, et al.
- 1996
|
|
372
|
TreadMarks: Shared Memory Computing on Networks of Workstations
– Amza, Cox, et al.
- 1996
|
|
370
|
Understanding code mobility
– Fuggetta, Picco, et al.
- 1998
|
|
323
|
Tempest and Typhoon: User-Level Shared Memory
– Reinhardt, Larus, et al.
- 1994
|
|
246
|
The Sprite Network Operating System
– Ousterhout, Cherenson, et al.
- 1988
|
|
245
|
A case for NOW (Networks of Workstations
– Anderson, Culler, et al.
- 1995
|
|
228
|
C.E.: Scheduling Multithreaded Computations by Work Stealing
– Blumofe, Leiserson
- 1994
|
|
215
|
Escape analysis for Java
– Choi, Gupta, et al.
- 1999
|
|
197
|
Experiences with the Amoeba distributed operating system
– Tanenbaum, Renesse, et al.
- 1990
|
|
196
|
Client/Server Programming with Java and CORBA
– Orfali, Harkey
- 1998
|
|
166
|
Midway: Shared Memory Parallel Programming with Entry Consistency for Dstributed Memory Multiprocessors
– Bershad, Zekauskas
- 1991
|
|
151
|
PVM 3 users guide and reference manual
– Geist, Beguelin, et al.
- 1994
|
|
144
|
The jalapeno dynamic optimizing compiler for java
– Burke, Choi, et al.
- 1999
|
|
136
|
The Java Language Specification Second Edition
– Gosling, Joy, et al.
- 2000
|
|
131
|
On the complexity of finite sequences
– Lempel, Ziv
- 1976
|
|
127
|
Java/DSM: A platform for heterogeneous computing. This issue
– Yu, Cox
- 1997
|
|
117
|
JavaParty — transparent remote objects
– Philippsen, Zenger
- 1997
|
|
113
|
Register allocation via graph coloring
– Briggs
- 1992
|
|
97
|
The design and evaluation of a shared object system for distributed memory machines
– Scales, Lam
- 1994
|
|
94
|
The MOSIX Multicomputer Operating System for High Performance Cluster Computing
– Barak, La’adan
- 1998
|
|
74
|
The Java TM Virtual Machine Specification
– Lindholm, Yellin
- 1996
|
|
70
|
Network-aware mobile programs
– Ranganathan, Acharya, et al.
- 1997
|
|
63
|
Optimizing array bounds checks using flow analysis
– Gupta
- 1993
|
|
63
|
Hwu Hwu. Java bytecode to native code translation: The Caffeine prototype and preliminary results
– Hsieh, Gyllenhaal, et al.
- 1996
|
|
59
|
CACAO—A 64-bit JavaVM just-in-time compiler. Concurrency: Pract
– KRALL, R
- 1997
|
|
55
|
effective code generation in a just-intime Java compiler
– Fast
- 1998
|
|
54
|
cJVM: a Single System Image of a JVM on a Cluster
– Aridor, Factor, et al.
- 1999
|
|
54
|
Processes in KaffeOS: Isolation, resource management, and sharing in Java
– Back, Hsieh, et al.
- 2000
|
|
54
|
Java RMI Performance and Object Model Interoperability: Experiments with Java/HPC++, Concurrency and Experience
– Breg, Diwan, et al.
- 1998
|
|
45
|
Linux Kernel Internals
– Beck
- 1996
|
|
45
|
Home-Based Shared Virtual Memory
– Iftode
- 1998
|
|
44
|
The Java HotSpot server compiler
– Paleczny, Vick, et al.
- 2001
|
|
43
|
Thread migration and its applications in distributed shared memory systems
– Itzkovitz, Schuster, et al.
- 1996
|
|
43
|
LaTTe: A Java VM Just-In-Time compiler with fast and efficient register allocation
– Yang, Moon, et al.
- 1999
|
|
42
|
Byte Code Engineering
– DAHM
- 1999
|
|
41
|
The JBoss extensible server
– Reverbel, Fleury
- 2003
|
|
40
|
Bytecode Transformation for Portable Thread Migration in Java
– Sakamoto, Sekiguchi, et al.
- 2000
|
|
38
|
Fast and Effective Optimization of Statically Typed Object-Oriented Languages
– Bacon
- 1997
|
|
37
|
Portable Support for Transparent Thread Migration in Java
– Truyen, Robben, et al.
- 2000
|
|
35
|
mpiJava: “An ObjectOriented Java interface to MPI
– Baker, Carpentar, et al.
- 1999
|
|
34
|
Process Migration
– Milojicic
- 2000
|
|
31
|
Debugging optimized code with dynamic deoptimization. SIGPLANNotices
– olzle, Chambers, et al.
- 1992
|
|
27
|
Arachne: A Portable Threads System Supporting Migrant Threads on Heterogeneous Network Farms
– Dimitrov, Rego
- 1998
|
|
27
|
Runtime optimizations for a Java DSM implementation
– VELDEMA, HOFMAN, et al.
|
|
25
|
Performance evaluation of the Orca shared-object system
– Bal, Bhoedjang, et al.
- 1998
|
|
24
|
Avi Teperman, “CJVM: a Single System Image of a JVM on a Cluster
– Aridor, Factor
|
|
24
|
and Piet Hut. A hierarchical O(N log N) force-calculation algorithm
– Barnes
- 1986
|
|
21
|
Kaffe - A Free Virtual Machine to run Java Code. http://www.kaffe.org
– Wilkinson
- 1998
|