IBM Israel
Skip to main content
 
Search IBM Research
   Home  |  Products & services  |  Support & downloads  |  My account
Select a Country Select a country
IBM Research Home IBM Research Home
IBM Haifa Labs Homepage IBM Haifa Labs Home

Cluster Virtual Machine for Java

Distributed Computing Systems
Project Homepage
 ·Overview
 ·Motivation
 ·Application Model
 ·Approach
 ·Benchmark Results
 ·Optimizations
 ·Status
 ·Related Works
 ·Papers
 ·Contact Information
Feedback


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).

Overview

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.
Benchmark Results


As we proceed, we will continue to update this site to contain additional information on the architecture.

This project was formerly known as cJVM.

 

  About IBM  |  Privacy  |  Legal  |  Contact