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
  Ways to Achieve Scalability

There are three basic approaches to building a scalable Java Virtual Machine for Java Server Applications. These approaches are:
Each of these approaches has its benefits and is good for a particular situation. We focus on the last option, building a JVM that runs on a cluster of independent processors.

  SMPs

The first approach is to build a Java Virtual Machine that runs well on a Symmetric Multi-Processor (SMP).

This approach is the appropriate approach if the problem size fits on a symmetric multiprocessor and one has SMP hardware available. Within the limits of the capacity of the SMP, this approach can allow scaling of an arbitrary Java Server Application regardless of whether or not there is sharing between the requests.

  Pool of JVMs

The second approach is to provide the infrastructure to harness a pool of Java Virtual Machines running on a collection of nodes to solve independent problems. In this approach, some form of work load manager listens to requests for work from the Java Virtual Machines. The work load manager is responsible for distributing the load among the collection of independent machines. This approach makes sense and should work well if the requests for work coming into the Java Virtual Machines are independent (i.e., there is no sharing). This approach will not work if multiple requests for work need to access the same object. The following figure shows one possible structure of a system using a pool of JVMs. In this figure, we assume that all of the Java Server Applications are receiving RMI/IIOP requests and a daemon distributes these requests. The requests need not be RMI/IIOP


We want to stress that the strength and scalability of this approach is also its weakness. There can be no sharing between the requests (other than sharing that occurs implicitly within a single JVM), neither between concurrent requests nor between sequential requests, unless this sharing is via a third tier data store. This is because the Java Virtual Machines are independent and do not have common object spaces. Thus, this approach cannot be used to scale up arbitrary Java Server Applications; it is, however, appropriate for a range of applications such as Enterprise Java Beans.

  JVM on a Cluster

The third approach is to implement a single system image Java Virtual Machine that is distributed over the nodes of a cluster. This is the approach our research addresses as described in Cluster VM for Java - Approach.



































 

  About IBM  |  Privacy  |  Legal  |  Contact