
|
 |
|
Cluster Virtual Machine for Java
|  |
|
Cluster VM for Java is a Java Virtual Machine (JVM) that provides a Single System Image (SSI) of a traditional JVM, while executing in a distributed fashion on the nodes of a cluster. |
NOTE: This project is no longer active since 2000!
Cluster VM for Java virtualizes the cluster, supporting any pure Java application without requiring that applications be tailored specifically for it. The aim of Cluster VM for Java is to obtain improved scalability for a class of Java Server Applications (JSA) by distributing the application's work among the cluster's computing resources. The single system image characteristic of Cluster VM for Java stems from its novel object model that separates the application's view of an object (every object is a unique data structure) from its implementation (objects may have consistent replications on different nodes). This enables us to exploit knowledge on the use of individual objects to improve performance (e.g., using object replication to increase locality of access to objects).
For more detailed information about the architecture of Cluster VM for Java, its unique object model, thread and memory models, see "cJVM: a Single System Image of a JVM on a Cluster".
Currently, we have a running prototype, which is a single JVM from the application's point of view, but which distributes objects and executes methods over a cluster using various optimization techniques to enhance scalability. The optimization techniques of Cluster VM for Java are based on the following three priciples:
- Employing a large number of mostly simple optimizations that reduce communication, use caching, increase locality of execution and support object migration
- Taking advantage of the Java semantics and of common usage patterns in implementing the optimizations
- Using speculative optimization, taking advantage of the fact that the Cluster VM for Java run time environment can correct incorrect speculations
Running a parallel application containing basically independent threads, Cluster VM for Java shows linear performance gain as the number of nodes increases. Using the optimization techniques mentioned above on a large (10Kloc), real Java application Cluster VM for Java achieves ~80% efficiency on 4 node cluster.
As we proceed, we will continue to update this site to contain additional information on the architecture.
This project was formerly known as cJVM.
|
 |
|
 |
|